Traceroute adları nasıl çözer?


11

Bir komut dosyası yazarken, verdiğim bilgisayar adına göre bir makineye başvurmak istedim (örn. "Selenium-rc"). Ben "selenium-rc" kullanarak ping olamazdı, bu yüzden adın tanınmış olup olmadığını görmek için aşağıdaki komutları denedim.

> traceroute 192.168.235.41
traceroute to 192.168.235.41 (192.168.235.41), 64 hops max, 52 byte packets
 1  selenium-rc (192.168.235.41)  0.545 ms  0.241 ms  0.124 ms

Tamam, traceroute adı "buldu". Nasıl? Sonraki ...

> traceroute selenium-rc
traceroute: unknown host selenium-rc

Hmm ... buradaki arama mekanizması farklı olmalı çünkü ev sahibi bilinmemektedir. İlk örnek traceroute için özel bir işlem kullanırken bu bir sistem adı çözümleme işlemi kullandığını varsayıyorum. Doğru?

Sonra biraz sonra geri döndüğümde ...

> traceroute 192.168.235.41
traceroute to 192.168.235.41 (192.168.235.41), 64 hops max, 52 byte packets
 1  minint-q4e8i52.mycorp.net (192.168.235.41)  0.509 ms  0.206 ms  0.136 ms

Tamam, farklı sonuç. "Selenyum-rc" adı makinenin kendisinde değişmedi, ancak traceroute ad çözümleme işlemi bir tür öncelik içermelidir ve şimdi ağdaki başka bir sistem / hizmet tarafından atanan muhtemelen daha yetkili bir sonuç vermektedir. (Ne yazık ki, kontrol etmediğim dinamik bir ad olduğunu varsayıyorum ve bu nedenle bir komut dosyasında yararlı olmaz.)

Birisi sonuçları açıklayabilir mi?

Yanıtlar:


9

Genellikle Linux ve Unix'te traceroute ve ping, bir sistemin adını aramak için gethostbyname () işlevine çağrı kullanır. gethostbyname (), adlandırma veritabanlarını sorgulama sırasını belirlemek için sistem yapılandırma dosyalarını kullanır, örneğin: / etc / hosts ve DNS.

Linux'ta, ilk önce DNS'yi ve ardından / etc / hosts'i sorgulamak için varsayılan eylem (veya belki de kullanılır). Bu, /etc/host.conf içinde istenen sırayı ayarlayarak değiştirilebilir veya güncellenebilir.

/ Etc / hosts komutunu DNS'den önce aramak için, /etc/host.conf içinde aşağıdaki sırayı ayarlayın:

order hosts,bind

Solaris'te bu sıra, anasistemler veritabanı girişindeki /etc/nsswitch.conf dosyası aracılığıyla denetlenir.

hosts: dosyalar dns

DNS'de arama yapmadan önce arama sırasını / etc / hosts içine bakacak şekilde ayarlar.

Traceroute ve ping, yapılandırılmış tüm adlandırma veritabanlarında arama yapmak için bu yöntemleri kullanır. hostve nslookupmutlaka görünüşte tutarsız sonuçlar Sen gören çoğaltmak olmayacak şekilde, yalnızca DNS hem kullanımını emreder.

Solaris, getentana bilgisayarları veya adresleri traceroute ve ping ile aynı şekilde tanımlamak için kullanılabilecek bir arama aracına sahiptir .

getent hosts <hostname>

/etc/nsswitch.conf dosyasında ana bilgisayarlar için listelenen veritabanlarını arar.

Yani. Sizin durumunuzda, tutarlı sonuçlar elde etmek için / etc / hosts dizinine aşağıdakileri ekleyin

192.168.235.41 selenium-rc

Ve /etc/host.conf dosyasında şunların bulunduğundan emin olun:

order hosts,bind

Veya, /etc/nsswitch.conf dosyasının şunlara sahip olduğundan emin olun:

hosts: files dns

Bu yapıldıktan sonra, hem ping hem de traceroute ile ve ssh, telnet, curl, wget vb.Gibi diğer komutlarla daha tutarlı sonuçlar görmelisiniz.


Resolv.conf dosyasında listelenen DNS sunucusunu dig yardımcı programıyla sorguladığımda, her iki girişi de buldum. Sanırım traceroute tam kalifiye olanı tercih etti.
Keith Bentrup

2

Görünüşe göre ters arama doğru ayarlanmış, ancak ileri değil.

Sisteminiz 192.168.235.41 IP adresini arayabilir ve bunu fark edebilir selenium-rc, ancak aramaya çalıştığında selenium-rcbaşarısız olur.

Kontrol etmenizi tavsiye ederim /etc/hostsve /etc/resolv.conf; getaddrinfosistem çağrısının davranışı ikincisi tarafından belirlenir ve öncekine gönderme yapar.


1

Tahminim: invoke traceroute 192.168.235.41, 192.168.235.41 IP adresiyle giden adı bulmak için bir DNS isteğinin dışarı çıkmasına neden oldu. traceroute -n 192.168.235.41traceroute'u bulduğu her IP adresinde DNS aramaları yapmadan başlatmanın yoludur. DNS sunucusunun yanıt vermesi, DNS sisteminin beklemek istediğinden daha uzun sürdü, bu nedenle ilk olarak traceroute 192.168.235.41 için bir ana bilgisayar adı vermedi. Traceroute 192.168.235.41'den paketleri gönderip aldığında, DNS sunucunuz yanıt verdi, böylece traceroute bunun için bir ana bilgisayar adı verebilir.

Yani, "DNS sunucusu sorunları" diyebilirim ki, sizi diğer şeylerden şüphelenen çok uygun bir zamanlama ile. Burada "Murphy Kanunları" nı düşünün. Biraz sonra geri döndüğünüzde, aynı IP adresi için farklı bir ad alıyorsunuz, bu da beni izlemelerinizi yaptığınız sırada DNS sunucusu yapılandırmasıyla uğraştığımı düşündürüyor.

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.