Вопрос или проблема
ИЗМЕНЕНИЕ: У меня есть 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".
Возможные причины и решения
-
Настройка 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
Если вы получаете неудачные запросы к этим серверам, это указывает на необходимость проверки их доступности и настройки.
-
Проверка доступности DNS-серверов:
Проверьте доступность DNS-серверов с Машины B:ping 9.9.9.9 ping 20.1.1.27
Убедитесь, что обе команды выполняются успешно. Если нет, это указывает на потенциальные проблемы с маршрутизацией или iptables.
-
Настройки 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 правильно настроен.
-
Проверка NAT и маршрутизации:
Ваша конфигурация NAT на Машине A должна правильно обрабатывать трафик от Машины B в интернет. Убедитесь, что ваши правила NAT настроены корректно:iptables --table nat -A POSTROUTING -o ens224 -j MASQUERADE iptables -A FORWARD -i ens192 -o ens224 -j ACCEPT
-
Проверка системного времени:
Убедитесь, что время на обеих машинах синхронизировано (например, с помощью NTP). Иногда неправильные временные метки могут вызывать проблемы с аутентификацией и разрешением имен.
Заключение
Проблема с разрешением доменных имен, в то время как соединение по IP-адресу работает, чаще всего связана с неправильными настройками DNS, блокировками на уровне фаервола или проблемами с маршрутизацией. Следуя перечисленным шагам, вы сможете диагностировать и устранить проблему. Не забудьте перезагрузить службы или саму машину при внесении изменений в конфигурации для их применения.