Рейтинг:2

Гостевая виртуальная машина QEMU/KVM не может разрешать DNS-имена хостов или SSH/ping с хоста

флаг mx

У меня есть виртуальная машина на основе QEMU/KVM с CentosOS 6.4, которая не может полностью подключиться к Интернету. Я могу пинговать IP-адреса (например, пинг 8.8.8.8 успешно работает), но доменные имена не разрешаются (напр. пропинговать google.com возвращается ping: неизвестный хост google.com).

Гостю назначен статический IP-адрес, и я использую сеть по умолчанию (на основе NAT):

<network>
  <name>default</name>
  <uuid>8c257186-7af4-4e19-a086-27f50f692af6</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:d6:62:2d'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

/run/resolvconf/resolv.conf отсутствует на ВМ; и ни один из resolvconf, нслукап, systemctl, хозяин, hostnamectl, или же нмкли программы установлены, поэтому возможность запуска диагностики сетевых настроек ограничена.

Я пробовал следующее:

  • Редактирование /etc/sysconfig/сетевые скрипты/ifcfg-eth0 добавляя DNS1=8.8.8.8, DNS2=8.8.4.4 и PEERDNS=да. После перезагрузки это создало /etc/resolv.conf, которого изначально не было.
  • Замена «hosts: files dns» на «hosts: files dns nisplus nis» в /etc/nsswitch.conf, затем перезагрузка.
  • Следующий это руководство для создания сети только для хоста.
  • Следующий это руководство для создания виртуального моста через qemu-bridge-helper.
  • (Кроме того, я попытался создать файлообменник между гостем и хостом через это руководство, но для этого требуется 9p, файловая система, с которой CentOS 6, по-видимому, несовместима.)

Но с каждой попыткой хост по-прежнему не может подключиться/пинговать гостя по SSH, а гость не может разрешать доменные имена. Любая помощь в выполнении любого из этих двух шагов (хост может подключиться к гостю по SSH; гость полностью подключен к интернету) буду очень признателен.

Вот некоторые содержимое файла/вывод командной строки, которые могут быть полезны. Рад предоставить дополнительную информацию.

Содержание /etc/resolv.conf (Гость):

параметры edns0 траст-объявление
; сгенерировано /sbin/dhclient-script
сервер имен 8.8.8.8
сервер имен 8.8.4.4

Вывод IP а (Гость):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
    инет 127.0.0.1/8 область хоста lo
    inet6 :: 1/128 узел области видимости 
       valid_lft навсегда


2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast состояние UP qlen 1000
    ссылка/эфир 52:54:00:7b:6c:27 брд ff:ff:ff:ff:ff:ff
    инет 192.168.122.92/22 brd 192.168.123.255 глобальный охват eth0
    inet6 fe80::5054ï¬fe7b:6c27/64 ссылка на объем
       valid_lft навсегда

Вывод СШ 192.168.122.92 (Хозяин):

ssh: подключиться к хосту 192.168.122.92, порт 22: подключение отклонено

Вывод пинг 192.168.122.92 (Хозяин):

PING 192.168.122.92 (192.168.122.92) 56 (84) байт данных.
From 192.168.122.1 icmp_seq=1 Порт назначения недоступен
ping: sendmsg: операция не разрешена
From 192.168.122.1 icmp_seq=2 Порт назначения недоступен
ping: sendmsg: операция не разрешена
From 192.168.122.1 icmp_seq=3 Порт назначения недоступен
ping: sendmsg: операция не разрешена
From 192.168.122.1 icmp_seq=4 Порт назначения недоступен
ping: sendmsg: операция не разрешена
^ С
--- Статистика пинга 192.168.122.92 ---
4 пакета передано, 0 получено, +4 ошибки, 100% потери пакетов, время 3065 мс

РЕДАКТИРОВАТЬ 1

Содержание /etc/sysconfig/сетевые скрипты/ifcfg-eth0 (Гость):

УСТРОЙСТВО=eth0
HWADDR=52:54:00:7B:6C:27
ТИП=Ethernet
ONBOOT=да
NM_CONTROLLED=нет
БУТПРОНТО=нет
IP-АДРЕС=192.168.122.92
СЕТЕВАЯ МАСКА=255.255.252.0
ШЛЮЗ=192.168.122.1
DNS1=8.8.8.8
DNS2=8.8.4.4
PEERDNS=да

РЕДАКТИРОВАТЬ 2

Вывод iptables-сохранить (Хозяин):

# Сгенерировано iptables-save v1.8.4, понедельник, 3 января, 22:03:26 2022 г.
* калечить
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [86972:77359835]
:ВВОД ПРИНЯТЬ [86966:77359331]
:ВПЕРЕД ПРИНЯТЬ [6:504]
: ВЫВОД ПРИНЯТ [87805:9060728]
: ОТПРАВКА ПРИНЯТИЯ [69226:7583136]
:LIBVIRT_PRT - [0:0]
-A ОТПРАВКА -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j КОНТРОЛЬНАЯ СУММА --checksum-fill
СОВЕРШИТЬ
# Завершено в понедельник, 3 января, 22:03:26 2022 г.
# Сгенерировано iptables-save v1.8.4, понедельник, 3 января, 22:03:26 2022 г.
*натуральный
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [4:1038]
:ВВОД ПРИНЯТЬ [3:954]
: ВЫВОД ПРИНЯТ [19614:1550200]
:ОТПРАВКА ПРИНЯТИЯ [1032:73142]
:LIBVIRT_PRT - [0:0]
-A ОТПРАВКА -j LIBVIRT_PRT
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j ВОЗВРАТ
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j ВОЗВРАТ
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j МАСКАРАД
СОВЕРШИТЬ
# Завершено в понедельник, 3 января, 22:03:26 2022 г.
# Сгенерировано iptables-save v1.8.4, понедельник, 3 января, 22:03:26 2022 г.
*фильтр
:ВВОД ПРИНЯТЬ [86966:77359331]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТ [69220:7582632]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWX - [0:0]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
-A ВХОД -j LIBVIRT_INP
-A ВПЕРЕД -j LIBVIRT_FWX
-A ВПЕРЕД -j LIBVIRT_FWI
-A ВПЕРЕД -j LIBVIRT_FWO
-A ВЫВОД -j LIBVIRT_OUT
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with-icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ПРИНЯТЬ
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with-icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ПРИНЯТЬ
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ПРИНЯТЬ
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ПРИНЯТЬ
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ПРИНЯТЬ
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ПРИНЯТЬ
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ПРИНЯТЬ
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ПРИНЯТЬ
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ПРИНЯТЬ
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ПРИНЯТЬ
СОВЕРШИТЬ
# Завершено в понедельник, 3 января, 22:03:26 2022 г.

РЕДАКТИРОВАТЬ 3

Вывод sudo iptables-сохранить (Гость):

# Сгенерировано iptables-save v1.4.7, четверг, 6 января, 05:53:35 2022
*фильтр
:ВВОД ПРИНЯТЬ [0:0]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТЬ [0:0]
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate НОВЫЙ, УСТАНОВЛЕННЫЙ -j ПРИНЯТЬ
-A ВЫВОД -p tcp -m tcp --sport 22 -m conntrack --ctstate УСТАНОВЛЕНО -j ПРИНЯТЬ
СОВЕРШИТЬ
# Завершено в четверг, 6 января, 05:53:35 2022 г.
another victim of the mouse avatar
флаг cf
> inet 192.168.122.92/**22** brd 192.168.123.255 scope global eth0 Мне кажется подозрительным. Можем ли мы увидеть `cat /etc/sysconfig/network-scripts/ifcfg-eth0`? Похоже, у вас неправильная сетевая маска для вашего гостя.> СЕТЕВАЯ МАСКА=255.255.252.0
another victim of the mouse avatar
флаг cf
> inet 192.168.122.92/**22** brd 192.168.123.255 глобальная область действия eth0 Мне кажется подозрительным. Можем ли мы увидеть `cat /etc/sysconfig/network-scripts/ifcfg-eth0`?
флаг mx
Спасибо @Jacobyoby. Я добавил больше информации выше.
another victim of the mouse avatar
флаг cf
ваши сетевые маски не совпадают. Это намеренно?
флаг mx
Это не намеренно. Я установил `NETMASK=255.255.255.0` в `/etc/sysconfig/network-scripts/ifcfg-eth0`, чтобы соответствовать виртуальной сети. Теперь я получаю «inet 192.168.122.92/24 brd 192.168.122.255 scope global eth0» под «eth0» в «ip a» в гостевой системе. Но DNS по-прежнему не разрешает доменные имена, и гостевой IP-адрес не может быть достигнут через SSH/ping на хосте.
another victim of the mouse avatar
флаг cf
вы отключили firewalld для тестирования?
флаг mx
@Jacobyoby @AlexD Не firewalld, но, вероятно, это связано с этими двумя правилами в iptables: `-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable` и `-A LIBVIRT_FWO -i virbr0 - j REJECT --reject-with icmp-port-unreachable` (подробнее выше). Однако я (временно) удалил их, перезагрузил гостевую виртуальную машину и все равно получаю те же ошибки.
another victim of the mouse avatar
флаг cf
пожалуйста, добавьте правило, разрешающее входящий SSH через порт 22 для iptables.
флаг mx
Я добавил два новых правила в iptables в гостевой системе: `sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW, ESTABLISHED -j ACCEPT` и `sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT`. Я также добавил `sudo iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT` и `sudo iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ПРИНЯТЬ` к хосту. Тем не менее, я получаю те же ошибки. Я что-то упустил?
another victim of the mouse avatar
флаг cf
Вы можете отключить iptables для тестирования?
Рейтинг:1
флаг jp

Следующие сообщения об ошибках от пинг указывают, что связь заблокирована брандмауэром.

Порт назначения недоступен
ping: sendmsg: операция не разрешена
флаг mx
Оказывается, проблема была в VPN. Либо отключение VPN, либо разрешение общего доступа к локальной сети в VPN устранили проблему. Теперь я могу успешно выполнить ping/SSH для гостевой виртуальной машины. Спасибо всем!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.