ping, ssh, ... использует другой IP-адрес, чем тот, который разрешен nslookup, host,
После новой установки Ubuntu15.10 мои команды (ping, ssh, ...) используют другой IP-адрес, чем тот, который был разрешен с помощью nslookup, host, dig, ... Как это могло произойти?
user@ubuntu-15-10:~$ nslookup foobar.com
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
foobar.com canonical name = foobar.homeip.net.
Name: foobar.homeip.net
Address: 12.34.56.78
user@ubuntu-15-10:~$ host foobar.com
foobar.com is an alias for foobar.homeip.net.
foobar.homeip.net has address 12.34.56.78
user@ubuntu-15-10:~$ ping foobar.com
PING foobar.com (192.168.1.3) 56(84) bytes of data.
64 bytes from foobar.localdomain.home (192.168.1.3): icmp_seq=1 ttl=64 time=0.245 ms
64 bytes from foobar.localdomain.home (192.168.1.3): icmp_seq=2 ttl=64 time=0.285 ms
64 bytes from foobar.localdomain.home (192.168.1.3): icmp_seq=3 ttl=64 time=0.269 ms
^C
--- foobar.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.245/0.266/0.285/0.021 ms
user@ubuntu-15-10:~$
Мой /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search localdomain.home
Мой /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat
group: compat
shadow: compat
hosts: files mdns4_minimal [NOTFOUND=return] wins dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Нет записи для foobar.com в / etc / hosts
Кто-нибудь есть идеи?
2 ответа
Я нашел исправление myslef после некоторого расследования... Проблема была в /etc/nsswitch.conf: в строке "hosts": запись "dns" должна быть перед записью "wins"... Однако я не понимаю, что за этим стоит теперь работает как положено
Извините, настроенный сервер - это какой-то странный поддельный сервер, возможно, на вашей собственной машине. Адрес сервера [127.0.1.1]
обычно зарезервирован для интерфейсов localhost (это странно, поскольку адрес localhost на самом деле 127.0.0.1
, и не 127.0.1.1
)
Наиболее вероятной причиной получения разных ответов является то, что nslookup(1)
это BIND
утилита для проверки доступа DNS (он использует только поиск DNS) и ping(1)
использует gethostbyname(3)
подпрограмма библиотеки (которая учитывает все возможности, настроенные в /etc/nsswitch.conf
файл для получения информации о том, как действовать, в этом случае, будучи частью последней инстанции DNS)
С другой стороны, фактический адрес хоста foobar.com
это не тот (см. ниже).
Наконец, адрес foobar.com
решено ping(1)
как показано в ваших выходных данных, это один частный адрес (не фактический, см. RFC-1918), вы не можете найти этот хост через Интернет.
Наиболее вероятным является то, что вы не запрашивали разрешение DNS ни на одном официальном интернет-сервере имен, поэтому все зависит от локальной конфигурации DNS.
Возможные причины разницы:
mdns4_minimal
это какая-то фальшивая программа, которая не спрашивает реальный сервер имен.dns
последний вариант в/etc/nsswitch.conf
, так что официальный протокол DNS идет последним (когда все другие протоколы потерпели неудачу)- ваш днс не слушает в адресе
127.0.1.1
и у вас есть перенаправление порта ssh или туннель к другому серверу имен, дающему неправильные ответы. Адрес127.0.1.1
обычно используетсяtap*
сетевое устройство при использовании, например, для настройкиopenvpn(1)
клиентские подключения. - Вы не показали конфигурационные файлы сервера имен, работающие на вашем компьютере. Возможно, источник адреса, который вы получите, там. Ищу
named(8)
конфигурационные файлы и поиск доменаfoobar.com
в этих файлах конфигурации.
Ни один из указанных вами адресов не является настоящим интернет-адресом (127.0.0.0/8
, 10.0.0.0/8
, 172.16-31.0.0/16
, 192.168.0-255.0/24
а также 169.254.0.0/16
все зарезервированные интернет-адреса по той или иной причине, и вы не увидите, чтобы эти адреса появлялись в пакетах, приходящих из Интернета) Причины разнообразны, но факт заключается в том, что весь ваш трафик локальный в вашей частной сети и ничего, разве что сервер имен, работающий на вашем компьютере, имеет доступ к Интернету.
Извините, но с предоставленной вами информацией, это единственное, что я могу поспорить, чтобы попытаться исправить вашу ошибку.
Что вы можете сделать, это следующее (чтобы получить чистое разрешение DNS):
- конфигурировать
dns
послеfiles
в/etc/nsswitch.conf
, Это даст приоритет DNS перед этимmdns4_minimal
а такжеwins
разрешающая способность) - конфигурировать
nameserver <ip>
с фактическими адресами ваших серверов имен (они должны быть сообщены вам вашим интернет-провайдером. Если вы не знаете, что там разместить, просто попробуйтеnameserver 8.8.8.8
что означает использовать сервер имен Google для определения адресов. К счастью, она открыта для всех)
Эти шаги приведут к разрешению DNS для полного обхода вашего локального сервера имен, и вы получите что-то вроде
$ nslookup foobar.com
Server: 46.183.73.1
Address: 46.183.73.1#53
Non-authoritative answer:
Name: foobar.com
Address: 69.89.31.56
$ ping foobar.com
PING foobar.com (69.89.31.56): 56 data bytes
64 bytes from 69.89.31.56: icmp_seq=0 ttl=50 time=173.196 ms
64 bytes from 69.89.31.56: icmp_seq=1 ttl=50 time=175.091 ms
64 bytes from 69.89.31.56: icmp_seq=2 ttl=50 time=208.612 ms
64 bytes from 69.89.31.56: icmp_seq=3 ttl=50 time=177.145 ms
^C
--- foobar.com ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 173.196/183.511/208.612/14.559 ms
$ _
Если вы установили Ubuntu и не настроили подключение к Интернету при установке, наиболее вероятной причиной является то, что он настроил локально dns с поддельной базой данных, которая позволяет вам проводить эксперименты, прежде чем настраивать ее для реального доступа в Интернет.