ping
บอกฉันว่ามันไม่สามารถแก้ไขชื่อโฮสต์บางส่วน ("ping: unknown host domain.company.local") ใน URL แต่เมื่อฉันใช้host
หรือnslookup
บนคอมพิวเตอร์เครื่องเดียวกันในบรรทัดคำสั่งการแก้ปัญหาทำงานได้ดี (เช่นรวดเร็วและเชื่อถือได้ )
สิ่งใดที่ทำให้เกิดสิ่งนี้
การทดสอบเพิ่มเติม: Firefox wget
และping
มีปัญหาเดียวกัน ส่ง Ping การทำงานของที่อยู่ IP
ระบบปฏิบัติการ: Linux (Ubuntu 13.04)
แก้ไข/etc/resolv.conf
อ่านของฉัน:
nameserver 127.0.1.1
search domain.company.local
netstat
รายงาน:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
ดังนั้นสิ่งที่ทำงานบนพอร์ตนี้ ( nslookup
รายงานว่ามันใช้127.0.1.1
เป็นเซิร์ฟเวอร์ DNS)
ไม่มี/etc/*inetd.conf
ดังนั้นฉันไม่แน่ใจว่าแอปพลิเคชันใดให้บริการพอร์ตนี้
ดูเหมือนว่าdnsmasq
จะใช้:
/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces
--pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1
--conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=0 --proxy-dnssec
--enable-dbus=org.freedesktop.NetworkManager.dnsmasq
--conf-dir=/etc/NetworkManager/dnsmasq.d
ไฟล์และโฟลเดอร์การกำหนดค่าทั้งหมดว่างเปล่า ตั้งแต่nslookup
บอกว่ามันใช้การ127.0.1.1#53
เดาของฉันมันใช้dnsmasq
งานได้แม้ไม่มีโครงแบบ แต่จะทราบได้อย่างไรว่า DNS หลักใดที่จะสืบค้น
EDIT2ปิดใช้งานdnsmasq
ตามที่แนะนำโดย harrymc ไม่ได้ช่วย ดังนั้นฉันจึงวิ่งstrace ping
ซึ่งให้ผลลัพธ์ที่แปลกนี้ (เฉพาะส่วนที่น่าสนใจ):
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4
read(4, "127.0.0.1\tlocalhost\n#127.0.1.1\ta"..., 4096) = 613
...
open("/lib/libnss_mdns4_minimal.so.2", O_RDONLY|O_CLOEXEC) = 4
read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\f\0\0\0\0\0\0"..., 832) = 832
...
mmap(NULL, 2105560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f7829b00000
...
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl(4, F_GETFD) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/avahi-daemon/socket"}, 110) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fstat(4, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f782a4f8000
lseek(4, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "RESOLVE-HOSTNAME-IPV4 domain.com"..., 44) = 44
read(4, "-15 Timeout reached\n", 4096) = 20
ดังนั้นping
รูปลักษณ์/etc/hosts
ที่เหมาะสม จากนั้นก็โหลดและmmap()
s /lib/libnss_mdns4_minimal.so.2
ซึ่งทำให้รู้สึกเช่นกัน
แต่แล้วมันก็คุยกับ avahi!?
ซึ่งนำฉันไปโพสต์ฟอรั่มนี้: ปิงไม่ได้ทำตามคำขอของ DNS
ฉัน/etc/nsswitch.conf
ยังมีบรรทัดนี้:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
หากฉันping
เป็นที่อยู่ที่ใช้งานได้ฉันเห็นว่ากระบวนการโหลดเช่นกัน/lib/libnss_mdns4_minimal.so.2
แต่จะทำการค้นหา DNS ผ่านพอร์ต 53
ดังนั้นฉันเดาว่าตอนนี้/lib/libnss_mdns4_minimal.so.2
ก็สังเกตเห็นว่าที่อยู่ IP ลงท้ายด้วย.local
และไม่ได้ด้วย.com
และจากนั้น[NOTFOUND=return]
จะถูกเรียก
ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
wget
และ
nslookup
หรือhost
สามารถแก้ไขชื่อและสิ่งอื่น ๆ ในระบบไม่สามารถ
/etc/resolv.conf
คืออะไร