Вопрос или проблема
Я настроил сетевое соединение Stretch для eth0 (он выбрал ens3), после установки:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
grub-mkconfig -o /boot/grub/grub.cfg
перезагрузка
так что теперь у меня есть:
>: cat /etc/network/interfaces
source /etc/network/interfaces.d/*
# Циклический сетевой интерфейс
auto lo
iface lo inet loopback
# Основной сетевой интерфейс
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
# Опции dns-* реализуются пакетом resolvconf, если он установлен
dns-nameservers 8.8.8.8
что работает, так что:
>: ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:0a:f7:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe0a:f7bc/64 scope link
valid_lft forever preferred_lft forever
И я могу пинговать dns-серверы Google, как:
>: ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=10.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=10.9 ms
Но не сам Google и не любой другой домен. Мой файл hosts выглядит так:
>: cat /etc/hosts
127.0.0.1 localhost
192.168.1.10 someserver.name.com someserver
# Следующие строки желательны для хостов, поддерживающих IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Мой resolv.conf выглядит так:
>: cat /etc/resolv.conf
nameserver 8.8.8.8
но я могу пинговать свой шлюз, так что маршрут по умолчанию, похоже, в порядке:
>: ip r
default via 192.168.1.1 dev eth0 onlink
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
мой /etc/nsswitch.conf говорит:
hosts: files dns
networks: files
Что не хватает? Должен ли я делать что-то еще в Stretch?
Похоже, вы путаете два вопроса: маршрутизацию и DNS.
Если вы можете пинговать числовые адреса, такие как <8.8.8.8> или <128.171.224.100> (www.hawaii.edu), то проблема связана с DNS, а не с маршрутизацией.
Файл /etc/nsswitch.conf указывает, где искать информацию DNS и в каком порядке делать запросы. Посмотрите на строку, начинающуюся с ‘hosts’.
# Основной сетевой интерфейс
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
# Опции dns-* реализуются пакетом resolvconf, если он установлен
dns-nameservers 8.8.8.8
Уберите /24.
Причины этого:
С точки зрения синтаксиса вы неправы.
Предполагая, что ваш адрес 192.168.1.10 содержит DNS-сервер, удаление /24 должно исправить вашу ошибку.
Ответ или решение
Проблема с разрешением имени хоста в Debian Stretch, при этом возможность пинга IP-адресов показывает, что, вероятно, дело связано с настройками DNS, а не с маршрутизацией, так как вы можете успешно пинговать IP-адреса, такие как 8.8.8.8. Давайте детально рассмотрим вашу конфигурацию и возможные пути решения проблемы.
Анализ Конфигурации
-
Сетевой интерфейс: У вас правильно настроен интерфейс
eth0
с статическим IP-адресом 192.168.1.10 и шлюзом 192.168.1.1.auto eth0 iface eth0 inet static address 192.168.1.10 gateway 192.168.1.1 dns-nameservers 8.8.8.8
-
Файл hosts: Ваш
/etc/hosts
файл выглядит корректно:127.0.0.1 localhost 192.168.1.10 someserver.name.com someserver
Здесь вы добавили запись для локального хоста, что позволяет вашему серверу разрешать своё имя.
-
DNS конфигурация: Файл
/etc/resolv.conf
также корректный:nameserver 8.8.8.8
Это говорит системе использовать DNS-сервер Google для разрешения имен.
-
Файл nsswitch.conf: Конфигурация вашего
/etc/nsswitch.conf
также не вызывает замечаний:hosts: files dns
Она указывает, что система сначала проверяет файл
/etc/hosts
, а затем использует DNS, чтобы разрешить имя.
Возможные Причины Проблемы
Основная проблема заключается в том, что DNS не разрешается, но IP-адреса работают. Это может быть связано с несколькими факторами:
-
Проблемы с DNS-сервером: Убедитесь, что DNS-сервер, указанный в
/etc/resolv.conf
, действительно доступен. Попробуйте выполнить команду:nslookup www.google.com
или
dig www.google.com
Эти команды помогут проверить, работает ли DNS.
-
Проблемы с сетевой конфигурацией: Возможно, другие настройки сети мешают успешному разрешению имен. Проверьте наличие правил iptables, которые могут блокировать DNS-запросы.
Рекомендации по Исправлению Проблемы
-
Перепроверьте настройки
/etc/resolv.conf
: Убедитесь, что ваш файл всегда обновлен и не перезаписывается другими процессами, такими какresolvconf
илиsystemd-resolved
. Если у вас есть другие DNS-серверы, попробуйте добавить их в этот файл. -
Тестирование DNS с другими серверами: Убедитесь, что у вас есть доступ к другим общим DNS-серверам, например:
nameserver 1.1.1.1 # Cloudflare nameserver 8.8.4.4 # Дополнительный Google DNS
-
Проверка системного времени: Неправильное время также может привести к проблемам с аутентификацией DNS. Убедитесь, что время на вашем сервере установлено правильно.
-
Проверка конфликта с другими программами: Убедитесь, что никакие программы не вмешиваются в разрешение DNS. Возможно, стоит временно отключить
NetworkManager
, если он используется, и проверить настройки вручную. -
Обновление пакетов: Убедитесь, что ваш пакетный менеджер обновлен. В Debian Stretch иногда могут быть незакрытые уязвимости или проблемы.
Заключение
Если все вышеперечисленные рекомендации не помогли, рассмотрите возможность обращения к сообществу Debian или форумам, где можно получить помощь от более опытных пользователей. Помните, что проблемы с разрешением DNS очень распространены, и их решение зачастую требует тщательной проверки всех заинтересованных сторон в конфигурации.