Bir ana bilgisayar araması yapabilirim, ancak bir kıvrılma yapmam nasıl mümkün olabilir?


20

Bunu daha önce gören var mı? Bunun yalnızca google.com ile değil, denediğim her alan adıyla da gerçekleştiğini unutmayın. Kablosuz bir bağlantı (WEP), ancak bunun nasıl alakalı olacağından emin değilim:

$ curl -v google.com
# This takes about 60s to return
* getaddrinfo(3) failed for google.com:80
* Couldn't resolve host 'google.com'
* Closing connection #0
curl: (6) Couldn't resolve host 'google.com'

$ wget google.com
--2011-11-28 14:44:08--  http://google.com/
Resolving google.com... failed: Name or service not known.
wget: unable to resolve host address `google.com'

$ ping google.com
PING google.com (209.85.148.147) 56(84) bytes of data.
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=2 ttl=54 time=136 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=3 ttl=54 time=34.0 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=4 ttl=54 time=34.3 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=5 ttl=54 time=42.5 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=6 ttl=54 time=44.7 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=7 ttl=54 time=34.5 ms
^C
--- google.com ping statistics ---
8 packets transmitted, 6 received, 25% packet loss, time 7007ms
rtt min/avg/max/mdev = 34.063/54.376/136.026/36.758 ms


$ host google.com
google.com has address 209.85.148.106
google.com has address 209.85.148.147
google.com has address 209.85.148.99
google.com has address 209.85.148.103
google.com has address 209.85.148.104
google.com has address 209.85.148.105
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.

$ host google.com 192.168.1.201
Using domain server:
Name: 192.168.1.201
Address: 192.168.1.201#53
Aliases: 

google.com has address 209.85.148.103
google.com has address 209.85.148.104
google.com has address 209.85.148.105
google.com has address 209.85.148.106
google.com has address 209.85.148.147
google.com has address 209.85.148.99
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.

$ cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.1.201

$ cat /etc/hosts
127.0.0.1       localhost
::1             localhost

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 wlan0
127.0.0.0       127.0.0.1       255.0.0.0       UG        0 0          0 lo
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

Temel olarak, Firefox da dahil olmak üzere herhangi bir uygulama ad aramaları yapmak için çalışamaz. Dahası, wifi'yi çevrimdışı alıp bir ethernet kablosu takarsam, her şey yolunda.


1
Belki biraz daha bilgi ekleyin - sadece kıvrılmış mı? Wget, tarayıcılar, ping vb.
Sandman4

Cevabı işaretlediğinizi görüyorum ama sorun ve çözüm tam olarak neydi? Bu bir SELinux sorunu muydu?
Belmin Fernandez

"Çözüm" sadece ağın sağda gibiydi. Ben dizüstü bilgisayarda herhangi bir SELinux çalıştırmıyorum ve "ağ" sadece bir crappy mağaza satın wifi yönlendirici tarafından yönetilmektedir. Bu cevap, her yere paketleri bıraktığımı anlamaya yardımcı olacaktı, bu yüzden çözemediğim bir şey olduğunu anladım ve o adama kredi verdim. Neden daha iyi bir fikrin var?
Daniel Quinn

pinggetaddrinfo'yu biraz farklı parametrelerle arar ai_protocol = IPPROTO_UDP mı? Görünüşe host: Komut birini kullanan ne zaman değil unix.stackexchange.com/a/553438/8337
rogerdpack

Yanıtlar:


8

Belki de bazı garip ve kısıtlayıcı SELinux (veya grsecurity ...) kurallarınız var mı?

Değilse, çıktı dosyasından neler strace -o /tmp/wtf -fF curl -v google.comolduğunu tespit etmeye çalışın /tmp/wtf.


1
Wifi bağlantısı kendisi gibi görünüyor. Çıktı dosyası şöyle şeyler DOLU:9344 poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
Daniel Quinn

@Daniel Quinn, çıktısını gönderebilir misiniz /tmp/wtf?
Sachin Divekar


Hmm, 192.168.1.201 sorgusunu yapıyor gibi görünüyor. Akıl sağlığı için "ev sahibi google.com 192.168.1.201" yapabilir misiniz? Temel olarak, DNS arama özel olarak DNS sunucunuza karşı.
cjc

Tamamlandı (soruya eklendi). Ve bu gayet iyi çalışıyor - sunucu argümanı olmadan ana bilgisayar yayınlamak da doğru çalışıyor. ICMP (çoğunlukla ilk ping'i düşürür) çalıştığı için sadece gerçek HTTP çağrıları gibi görünüyor.
Daniel Quinn


5

Kontrol edin /etc/nsswitch.conf. Eğer hostsçizgi şöyle bir şey söylüyorsa

hosts:      files dns

Senin kadar kafam karıştı. Ama eğer böyle bir şey söylüyorsa

hosts:      files

DNS'nin çalışıyor olması ( hostkomutun çıktısına bakın ), DNS'yi kullanmama söylendiği standart işletim sistemi kitaplıkları aracılığıyla ad çözümlemesi yapan kıvrılmaya yardımcı olmaz.


Hmm. Bunu düşünmemiştim, ama sadece kontrol ettim ve diyor ki files dnsöyle değil :-(
Daniel Quinn

1
Benimkinde, ana hat üzerinde çok daha fazla şey vardı. "dns", "[NOTFOUND = return]" ifadesinden sonra listelendi. "Dns" unfound şey önce hareket benim sistem sabit (yeniden başlatmak zorunda kaldı).
trebormf

3

Ben aynı sorun vardı - ev sahibi, nslookup ok çözer, kıvırmak - aynı ana bilgisayar adlarında olamaz.

Tcpdumping iletişiminden sonra curl'nin yönlendiricimde kapatılan DNS bağlantı noktasına TCP (UDP'ye ek olarak) bağlantısı kurmaya çalıştığını buldum. TCP portu 53 etkinleştirildikten sonra kıvrılma kusursuz çalışmaya başladı.

Başka bir garip şey, dns sunucusu düzenli bağlama yüklemesi ise bu sorunun ortaya çıkmamasıdır. Yönlendirici DNS sunucusuna katıştırılmış kullanırsam, curl, daha önce UDP 2ms aracılığıyla (!) Yanıtı almış olsa bile aniden TCP bağlantı noktalarını kullanmaya çalışır. Sanırım bu bir hata.


1

Aynı problemi bugün VE'umda (dizüstü bilgisayarımda çalışıyor) yaşadım ve oldukça şaşırtıcı buldum. Dig ve NSlookup çalışıyor, ancak kıvrılma başarısız.

Örneğin:

# curl -v google.com
* getaddrinfo(3) failed for google.com:80
* Couldn't resolve host 'google.com'
* Closing connection #0
curl: (6) Couldn't resolve host 'google.com'

Ama burada David T'nin gönderisini gördüğümde, kıvrılma ile denemeye karar verdim. Bu başarısız olsa da:

# curl  google.com -6
curl: (6) Couldn't resolve host 'google.com'

Bu başarılı:

# curl  google.com -4
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

-6, kıvrımın IPv4'ü kullanmak için IPv6 ve -4'ü kullandığını belirtir. Wget kullanırken aynı hataları alıyorum, bu yüzden kesinlikle Host IPv6 yığını ile bazı sorunlar.

Sorun bu yardımcı programlarda olmadığı için nsswitch.conf dosyasında ve diğer BIND conf dosyalarında yapılan diğer tüm değişiklikler yardımcı olmadı.


1

Bu, bir AWS EC2 örneği için DNS kurmaya çalışan herkes için oluşursa, bu örnek tarafından kullanılan güvenlik grubunda HTTP ve HTTPS için IPv6 kurallarını (:: / 0) etkinleştirdiğinizden emin olun.


0

Kıvrılma kurulumunuz sorunsuz muydu? Mümkünse kıvrımı tekrar takmayı deneyin.

curl -v google.comHata ayıklama için daha ayrıntılı çıktılar almaya çalışın .

Örneğin:

curl -v dnserror.test
* getaddrinfo(3) failed for dnserror.test:80
* Couldn't resolve host 'dnserror.test'
* Closing connection #0
curl: (6) Couldn't resolve host 'dnserror.test'

Benzer çıktı alıyor musunuz?


Tam olarak aynı :-( Soruyu çıktı ile güncelledim
Daniel Quinn

0

/Etc/resolv.conf dosyanızda nslookup tarafından tolere edilen ancak kıvrılmayan bir hata olabilir.

Sorulan soru, "Bir ana bilgisayar araması yapabilmem, ancak bir kıvrılma yapmam nasıl mümkün olabilir?"

Bu mümkündür, çünkü curl FQDN'yi çözmek için getaddrinfo () kullanır, oysa nslookup kullanmaz. Bunun yerine, nslookup'ın /etc/resolv.conf dosyasını başka bir işlev veya kitaplık kullanarak veya kendi özel kodu aracılığıyla ayrıştırdığına inanıyorum. Bunu doğrulamak için kaynak koduna bakmadım, ancak /etc/resolv.conf içinde ad sunucusu belirtecinin önüne boşluk ekleyerek bunu kanıtlayabilirsiniz. nslookup bunu ayrıştırabilir ancak getaddrinfo () yapamaz.


Example /etc/resolv.conf
 nameserver 8.8.8.8

Resolv.conf dosyasında bu hata varsa veya nslookup tarafından tolere edilen ancak getaddrinfo () tarafından kullanılmayan diğer hatalar varsa, nslookup ile bir FQDN'yi çözebilirsiniz, ancak bu FQDN'de kıvrılma kullanamazsınız.

Düzeltme: root olarak, /etc/resolv.conf dosyasını düzenleyin ve ad sunucusu satırındaki önde gelen boşlukları kaldırın.


straceÇıktıda DNS sorguları cevap almadan gönderiliyor. Bu, bir ayrıştırma hatasının hipotezini desteklemez /etc/resolv.conf. Ancak, imlecin hatalı olması ve farklı bir imlecin kullanılması yardımcı olabilir.
kasperd
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.