ping
nói với tôi rằng nó không thể giải quyết một số tên máy chủ ("ping: domain host domain.company.local") trong một URL nhưng khi tôi sử dụng host
hoặc nslookup
trên cùng một máy tính trên dòng lệnh, độ phân giải hoạt động tốt (nghĩa là nhanh và đáng tin cậy ).
Điều gì có thể gây ra điều này?
Thử nghiệm nhiều hơn: Firefox wget
và ping
có cùng một vấn đề. Ping địa chỉ IP hoạt động.
HĐH: Linux (Ubuntu 13.04)
EDIT My /etc/resolv.conf
đọc:
nameserver 127.0.1.1
search domain.company.local
netstat
báo cáo:
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 -
vì vậy một cái gì đó đang chạy trên cổng này ( nslookup
cũng báo cáo nó sử dụng 127.0.1.1
như máy chủ DNS).
Không có /etc/*inetd.conf
, vì vậy tôi không chắc ứng dụng nào phục vụ cổng này.
Có vẻ như dnsmasq
được sử dụng:
/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
Tất cả các tập tin cấu hình và thư mục đều trống. Kể từ khi nslookup
nói nó sử dụng 127.0.1.1#53
tôi đoán là nó dnsmasq
hoạt động ngay cả khi không có cấu hình. Nhưng làm thế nào để biết DNS cha nào sẽ truy vấn?
EDIT2 Vô hiệu hóa dnsmasq
theo đề xuất của harrymc đã không giúp đỡ. Vì vậy, tôi đã chạy strace ping
cho tôi đầu ra kỳ lạ này (chỉ là những phần thú vị):
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
Vì vậy, ping
nhìn trong /etc/hosts
đó có ý nghĩa. Sau đó, nó tải và mmap()
s /lib/libnss_mdns4_minimal.so.2
có ý nghĩa là tốt.
Nhưng sau đó nó nói chuyện với avahi!?
Điều này dẫn tôi đến bài đăng trên diễn đàn này: ping không đưa ra yêu cầu dns .
Của tôi /etc/nsswitch.conf
cũng chứa dòng này:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Nếu tôi ping
là một địa chỉ làm việc, tôi thấy rằng quá trình cũng tải /lib/libnss_mdns4_minimal.so.2
nhưng sau đó, nó thực hiện một truy vấn DNS thông qua cổng 53.
Vì vậy, dự đoán của tôi bây giờ /lib/libnss_mdns4_minimal.so.2
là bằng cách nào đó nhận thấy rằng địa chỉ IP kết thúc .local
và không có .com
và sau đó [NOTFOUND=return]
được kích hoạt.
Làm thế nào để tôi sửa lỗi này?
wget
.
nslookup
hoặc host
có thể giải quyết tên và bất cứ điều gì khác trên hệ thống không thể.
/etc/NetworkManager/NetworkManager.conf
và nhận xét dns=dnsmasq
dòng (đặt một # ở phía trước của nó) sau đó làm a sudo restart network-manager
. Điều đó sẽ tắt trình giải quyết cục bộ. ( nguồn )
/etc/resolv.conf
?