Ping localhost ile ping 127.0.0.1 arasındaki fark nedir?


31

Ping yanıtlarını devre dışı bırakmak için aşağıdakileri yürüttükten sonra:

# sysctl net.ipv4.icmp_echo_ignore_all=1
# sysctl -p

Pinging localhost ile 127.0.0.1 arasındaki farklı sonuçları elde ediyorum

# ping -c 3 localhost
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.101 ms

--- localhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2042ms
rtt min/avg/max/mdev = 0.047/0.072/0.101/0.022 ms

127.0.0.1 Ping işlemi başarısız oluyor:

ping -c 3 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.

--- 127.0.0.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2032ms

Bu sonuçlar neden farklı?

Yanıtlar:


60

pingKomut gösterileri adresin ismi çözüldü. Bu durumda IPv6 localhost adresine çözüldü ::1. Diğer taraftan, 127.0.0.1bir IPv4 adresidir, bu nedenle açıkça pingIPv4'ü kullanır.

Kullandığınız sysctlIPv4 ping'lerini etkiler, bu nedenle yanıt alırsınız ::1, ancak yanıtlamazsınız 127.0.0.1.

Çözme adresiniz localhostDNS çözücünüzün nasıl kurulduğuna bağlıdır. localhostmuhtemelen kurulur /etc/hosts, ancak teoride gerçek bir isim sunucusundan alabilirsiniz.


IPv6 ping'lerinin nasıl düşürüleceği ile ilgili olarak, IPv6 için ip6tablesbenzer bir durum olmadığı için araştırmanız gerekebilir sysctl. Veya ağınızda kullanmıyorsanız IPv6'yı tamamen devre dışı bırakın. (Tabii ki bu ileriye dönük bir fikir değil, ancak şu anda kullanmıyorsanız yapın.)


2
IPv6 ICMP gerektirir değil işlevine uygun şekilde sırayla engellenecektir. ;)
zaTricky 16.018

3
@zaTricky, soru sadece ping engelleme bahsetti. İğrenç ve çok kullanışlı olmasa da, genel olarak hiçbir şeyi kırmaması gerektiğini düşünmüyorum. Tüm ICMP paketlerinin engellenmesi açıkça çok daha kötü olurdu, ama kimse bunu
önermedi

Verilmiş, daha spesifik olabilir. Genelde ping adı verilen "ICMP yankı isteği" IPv6 üzerinden düzgün iletişim için gereklidir. Sen edebilirsiniz müşterilerine spontan istenmeyen ping giriş yapan engellemek - ama muhtemelen IPv6 işlevselliğini kırıyorsun giden engellerseniz. Cevaplar gönderildiğinden beri sorunun değişmiş gibi görünmesine yardımcı olmuyor.
zaTricky

33

127.0.0.1:
127.0.0.1, çoğu sistemin varsayılan geridönümüdür. Geridöngü adresi, sistem tarafından işletim sisteminin ağ yığınını doğrulamak için kullanılan bir adrestir.
IPv4 için 127.0.0.0/8
geridöngü adresi, alt ağda ::1/128
pingherhangi bir değeri alabilir. IPv6 için geridöngü adresi , ağ yığınınız işletim sisteminizde çalışıyorsa, bu aralıktaki herhangi bir değerin çalışması için alt ağdaki herhangi bir değeri alabilir .

localhost:
localhost bir ana bilgisayar adı, bu bir tür etki alanı adı, ancak kendi makinenizde yerel.
Genellikle IPv4 ve IPv6 geri döngü varsayılan puan Bu ana bilgisayar adı 127.0.0.1veya ::1.

localhostAdres dosyayı düzenleyerek kolayca değiştirilebilir /etc/hosts.
Sisteminiz servisi kullanıyorsa systemd-resolved, bu servis localhost'un çözülme şeklini idare eder.
Göre belgelenmesisystemd-resolved :

"Localhost" ve "localhost.localdomain" ana bilgisayar adları (ve ".localhost" veya ".localhost.localdomain" ile biten herhangi bir ana bilgisayar adı) IP adreslerine çözümlenir 127.0.0.1ve::1

ping
Bir ana bilgisayar adına veya etki alanı adına ping yapmaya çalıştığınızda, işletim sisteminden bu ana bilgisayar adını veya etki alanı adını çözmesini ister. Senin durumunda, devre dışı bıraktın, icmpv4ancak localhost, IPv6 geridöngü ve IPv4 geridönüşümün değil, sadece IPv6 geridöngü yanıtın olarak çözüldü.
Aradaki fark, bir durumda bir IP'ye ping yapmaya çalışırken diğerinde birkaç değer alabilen bir ana bilgisayar adına ping işlemi yapmanızdır.

İcmpv6'yı
devre dışı bırakın IPv6'ya ihtiyacınız yoksa devre dışı bırakmanızı tavsiye ederim. Güvenlik duvarı ve hizmetleri yapılandırmak için yapmanız gereken tüm işleri ikiye katlar:

sysctl -w net.ipv6.conf.all.disable_ipv6=0

IPv6 desteğini hala istiyor ve kaçınmak istiyorsanız icmpv6, şunları kullanabilirsiniz ip6tables:

ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j DROP

2
Hosts dosyanızda bir sorun var. Aynı zamanda ::1 localhostiçinde olması gerekirdi .
Michael Hampton,

2
Yan not: IPv4'teki tüm 127.0.0.0/8 ağının geridöngü adresleri olduğunu unutmayın (bu nedenle ping 127.100.101.102de işe yarayacaktır).
jjmontes

1
İçin girişlere localhostmutlaka gerek yoktur /etc/hosts. Örneğin, systemd-resolved localhostve için DNS kaynak kayıtlarını sentezler localhost.localdomain.
Johan Myréen

@MichaelHampton Bu tam hostsdosya değil ama ben ::1 localhostubuntu
1710

2
"Subnet" :: 1/128, yalnızca bir IP'ye karşılık gelir, 127.0.0.1/32 gibi sadece bir IP'ye çözümlenir.
zaTricky

9

Localhost'un iki adresi vardır: IPv6 adresi :: 1 ve IPv4 adresi 127.0.0.1.

IPv6 varsayılan protokoldür, bu yüzden :: 1 daima 127.0.0.1 yerine tercih edilir. Bu yüzden localhost'a ping ederken :: 1'i pinglediniz.

Neden ping :: 1'e gelip 127.0.0.1'e ping yapamıyorsanız, sysctl'niz sadece IPv4 için ping'i devre dışı bıraktı, ancak IPv6 için ping'i devre dışı bıraktı. Söyleyebileceğim kadarıyla, IPv6 için pingleri devre dışı bırakmak için karşılık gelen bir sysctl yok, ancak gerçekten gerekmesi durumunda güvenlik duvarında devre dışı bırakabilirsiniz (elbette devre dışı bırakmanız önerilmez).


5
IPv6 için ping'lerin devre dışı bırakılması, bağlantıyı koparması durumunda tavsiye edilmez, teredo adresinden bağlanan kişiler artık makineye erişemez (en yakın her
kanal

1
IPv6 ve IPv4 için ad çözümleme tercihi /etc/gai.confdosya ile kontrol edilebilir . Varsayılan olarak, sadece yorumları vardır. İçindeki precedencesatırları kaldırırsanız ve açıklamalarda da önerilen değişikliği yaparsanız, ana bilgisayar adı çözünürlüğünü varsayılan IPv6 yerine IPv4'ü tercih edecek şekilde alabilirsiniz.
telcoM

@telcoM Evet, bunu yapabilirsiniz. Yine de yaparsanız, önceliği değiştirmek beklenmedik bir davranışa neden olduğundan, bu makineyi kullanabilecek herhangi biri için belirgin uyarılar vermek iyi bir fikirdir.
Michael Hampton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.