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 с поддельной базой данных, которая позволяет вам проводить эксперименты, прежде чем настраивать ее для реального доступа в Интернет.

Другие вопросы по тегам