Deoarece nu cereți o soluție de soluție, ci un fundal complet:
- Verificați la ce adrese se rezolvă bind_host (de exemplu, „localhost”):
$ python3 -c "socket de import
print(set([a[4][0] pentru un în socket.getaddrinfo('localhost', 4822)]))"
{'127.0.0.1', '::1'}
- Este posibil să deschideți o nouă problemă pentru guacd pentru a implementa în mod corespunzător suportul pentru IPv4/IPv6 dual-stack și pentru a permite specificarea unui bind_host care are mai multe adrese diferite.
Am lucrat la remedierea suportului numai pentru IPv6 în guacd https://issues.apache.org/jira/browse/GUACAMOLE-1190 ceea ce a fost suficient pentru scopurile mele.
Susținerea stivă duală IPv6 adecvată în orice server TCP, permițând, de asemenea, utilizatorului să restricționeze legarea la anumite adrese înseamnă:
- Creați mai multe prize
lega()
la toate adresele returnate de getaddrinfo()
(127.0.0.1 și ::1 pentru „localhost”)
asculta()
pe toate prizele legate cu succes
- Utilizare
Selectați()
sau sondaj()
pentru a reacționa la clienții care sosesc pe toate soclulurile legate simultan
- Apel
Accept()
pentru a accepta o conexiune client după Selectați()
returnează fără eroare pentru un anumit soclu din set
Pentru referință, consultați aceste răspunsuri/site-uri:
Semantica :: și 0.0.0.0 în sistemele de operare dual-stack
Cum să suportați atât conexiunile IPv4, cât și IPv6
select - multiplexare I/O sincronă