Пинг до IP-адреса работает, но пинг до доменного имени не работает.

Вопрос или проблема

ИЗМЕНЕНИЕ: У меня есть 2 машины, Машина A имеет только подключение к интернету, интерфейс ens192 Машины B подключен напрямую к интерфейсу ens192 Машины A.

Я настроил iptables на Машине A, чтобы убедиться, что Машина B также имеет подключение. Пинг до IP-адреса работает, но разрешение доменного имени не работает. Ниже приведены детали сетевой конфигурации каждой машины.

Машина A:

Сетевая конфигурация:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:11:8a:1a brd ff:ff:ff:ff:ff:ff
    inet 20.1.1.27/24 brd 20.1.1.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::88f2:48b:daef:7b0d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:1a:4b:09 brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.67/24 brd 192.168.43.127 scope global noprefixroute ens224
       valid_lft forever preferred_lft forever
    inet6 fe80::65cb:5a44:210b:1ef3/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Я настроил NAT в iptables, чтобы позволить пакету, приходящему с частного сетевого интерфейса (ens192), достигать другого интерфейса (ens224) для подключения к интернету. Ниже приведена использованная конфигурация.

iptables --table nat --flush
iptables --table nat --delete-chain
iptables --table nat --append POSTROUTING --out-interface ens224 -j MASQUERADE
iptables --append FORWARD --in-interface ens192 -j ACCEPT

Машина B:

После настройки правил NAT на Машине A, теперь я могу пинговать 8.8.8.8 или любой IP-адрес с Машины B, но не могу разрешить ни одно имя хоста.

[root@localhost ~]# 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=56 time=1.78 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=56 time=1.90 ms

[root@localhost ~]# ping google.com
ping: google.com: Name or service not known

Сетевая конфигурация:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:11:23:3a brd ff:ff:ff:ff:ff:ff
    inet 20.1.1.201/24 brd 20.1.1.255 scope global noprefixroute dynamic ens192
       valid_lft 15108sec preferred_lft 15108sec
    inet6 fe80::250:56ff:fe11:233a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

ip route:

[root@localhost ~]# ip route
default via 20.1.1.27 dev ens192 proto dhcp metric 100 
20.1.1.0/24 dev ens192 proto kernel scope link src 20.1.1.201 metric 100

resolv.conf

[root@localhost ~]# more /etc/resolv.conf 
# Генерируется NetworkManager
nameserver 9.9.9.9
nameserver 20.1.1.27

Как решить эту проблему?

Сетевое соединение от Машины B похоже работает.

Я бы проверил, действительны ли DNS-серверы в файле resolv.conf.

fping 9.9.9.9
fping 20.1.1.27

Проверьте, возвращает ли DNS какие-либо данные.

nslookup google.com 9.9.9.9
nslookup google.com 20.1.1.27
nslookup google.com 8.8.8.8
host google.com 8.8.8.8

Также проверьте iptables:

/sbin/iptables -t nat -A POSTROUTING -o ens224 -j MASQUERADE
/sbin/iptables -A FORWARD -i ens224 -o ens192 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i ens192 -o ens224 -j ACCEPT

Ответ или решение

Когда вы сталкиваетесь с проблемой, когда пинг до IP-адреса работает, но пинг до доменного имени не удался, это может быть связано с несколькими аспектами работы сетевого протокола, в частности с разрешением имен. Рассмотрим ситуацию более подробно, основываясь на предоставленной вами информации.

Анализ проблемы

Ваша конфигурация сетевых машин описывает следующий сценарий:

  • Машина A: Имеет доступ в интернет через интерфейс ens224 и настроена для обеспечения NAT (сетевой адресный трансляции) для Машины B через интерфейс ens192.
  • Машина B: Содержит настройки для доступа к сети, но у нее возникают проблемы с разрешением доменных имен. Она может пинговать IP-адреса, включая 8.8.8.8, что указывает на корректную сетевую конфигурацию, но при попытке пинга к доменному имени, например, google.com, возникает ошибка "Name or service not known".

Возможные причины и решения

  1. Настройка DNS-серверов:
    Ваша конфигурация /etc/resolv.conf на Машине B указывает на два DNS-сервера:

    • 9.9.9.9 (вероятно, это сервер Quad9)
    • 20.1.1.27 (IP адрес Машины A)

    Чтобы проверить, правильно ли работают эти DNS-серверы, выполните команды:

    nslookup google.com 9.9.9.9
    nslookup google.com 20.1.1.27

    Если вы получаете неудачные запросы к этим серверам, это указывает на необходимость проверки их доступности и настройки.

  2. Проверка доступности DNS-серверов:
    Проверьте доступность DNS-серверов с Машины B:

    ping 9.9.9.9
    ping 20.1.1.27

    Убедитесь, что обе команды выполняются успешно. Если нет, это указывает на потенциальные проблемы с маршрутизацией или iptables.

  3. Настройки iptables на Машине A:
    Убедитесь, что ваши iptables не блокируют DNS-запросы. Поскольку DNS использует порт 53, вам нужно убедиться, что правила iptables разрешают трафик на этот порт. Добавьте следующие правила (при необходимости):

    iptables -A INPUT -p udp --dport 53 -j ACCEPT
    iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

    Убедитесь также, что NAT правильно настроен.

  4. Проверка NAT и маршрутизации:
    Ваша конфигурация NAT на Машине A должна правильно обрабатывать трафик от Машины B в интернет. Убедитесь, что ваши правила NAT настроены корректно:

    iptables --table nat -A POSTROUTING -o ens224 -j MASQUERADE
    iptables -A FORWARD -i ens192 -o ens224 -j ACCEPT
  5. Проверка системного времени:
    Убедитесь, что время на обеих машинах синхронизировано (например, с помощью NTP). Иногда неправильные временные метки могут вызывать проблемы с аутентификацией и разрешением имен.

Заключение

Проблема с разрешением доменных имен, в то время как соединение по IP-адресу работает, чаще всего связана с неправильными настройками DNS, блокировками на уровне фаервола или проблемами с маршрутизацией. Следуя перечисленным шагам, вы сможете диагностировать и устранить проблему. Не забудьте перезагрузить службы или саму машину при внесении изменений в конфигурации для их применения.

Оцените материал
Добавить комментарий

Капча загружается...