Ne yazık ki, bu, kullandığınız işletim sistemine bağlı olarak değişir.
Microsoft Windows'ta, bir soketi ::
yalnızca IPv6 bağlantı noktalarına bağlamak için bağlama . Böylece IPv4 ve IPv6 hem de tüm adresleri dinlemeyle yapmanız bağlama gereken 0.0.0.0
sıra sıra ::
. Aşağıdaki alıntı Vista kutusundan alınmıştır:
C:\>netstat -an | find "445"
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP [::]:445 [::]:0 LISTENING
Verdiğim örnek NetBIOS kullanılmadığında SMB trafiği için kullanılan 445 numaralı bağlantı noktasıdır. Gördüğünüz gibi, her iki bağlanma edilir 0.0.0.0
ve ::
marka sırasıyla hem IPv4 ve IPv6 istemcilerinin işe.
Linux'ta, ::
doğru şekilde tahmin ettiğiniz gibi IPv4 uyumlu adresleri içerir, bu nedenle de bağlanmak 0.0.0.0
gereksizdir. Sadece bir AF_INET6
sokete bağlanan basit bir Python programı yazdım ::
. Bir AF_INET
(IPv4) soketine de bağlanmamış olmama rağmen , yine de IPv4 istemcilerinden gelen bağlantıları kabul ediyor. Diyelim ki, 10.1.1.3
ona bağlanırsa , bağlandığı gibi görünecektir ::ffff:10.1.1.3
.
Bunun dışında kıllı olur. Yukarıda /proc/sys/net/ipv6/bindv6only
ayarlanmışsa yukarıdakiler Linux'ta geçerli değildir 1
, bu durumda davranış Windows ile tam olarak aynıdır - ::
yalnızca IPv6 isteklerini dinleyecektir. IPv4 isteklerini de dinlemek istiyorsanız, bir AF_INET
soket oluşturmanız ve dinlemeniz gerekir 0.0.0.0
. Neyse ki, varsayılan için bindv6only
ise 0
, bu yüzden şimdiye kadar bu uğraşmak gerekecek çok ince bir şans var (hariç Eğer Debian, aslında varsayılan için kullandıkları takdirde bindv6only = 1
).
Tüm bunlar, bir hizmetin IPv6 etkin olup olmadığını ve IPv4 etkin olup olmadığını kontrol etmek için kullanışlıdır. İşte SSH sunucum:
$ netstat -64ln | grep 22
tcp6 0 0 :::22 :::* LISTEN
Gördüğünüz gibi, SSH yalnızca ::
22 numaralı bağlantı noktasını dinliyor . Ancak, sadece IPv6 istemcilerini dinlemekle kalmıyor, IPv4 uyumlu bağlama nedeniyle IPv4 istemcilerinden de iyi çalışıyor. Bunu kanıtlamak için, şuna bakarsanız:
$ cat /proc/sys/net/ipv6/bindv6only
0
bindv6only
devre dışı (varsayılan). Eğer bu şekilde ayarlanmış 1
olsaydı, SSH'yi de dinlemeye teşvik etmeliydim 0.0.0.0
(ya da onun yerine).
Şeylerin Mac OS X tarafı hakkında bilgi sahibi olmadığın için özür dileriz. Geçmişte kullandım, ama GNOME'un estetiğini tercih ediyorum, bu yüzden çok uzun zamandır kullanmadım. Ancak, davranışın Linux'la aynı olduğunu tahmin ediyorum.
Bu yardımcı olur umarım.