Маршрутизация подсети VPN: порт назначения недоступен

742
Jochen

Я подключен через VPN к серверу Ubuntu, выступающему в роли гипервизора, на котором запущена 1 ВМ. Я могу пропинговать виртуальную машину из командной строки на сервере, но не могу пропинговать виртуальную машину через VPN-соединение на моем компьютере. Возвращение всех пингов "Порт назначения недоступен"

У меня есть virbr1вот так: virbr1 Link encap:Ethernet HWaddr 52:54:00:cb:4d:9b inet addr:10.0.100.1 Bcast:10.0.100.31 Mask:255.255.255.224 (создано Libvirt)

У меня есть 1 ВМ, работающая на гипервизоре с IP-адресом, 10.0.100.16который я могу пропинговать с гипервизора, но не через VPN.

Мой openvpn server.conf имеет: server 10.0.1.0 255.255.255.240 push "route 10.0.100.0 255.255.255.224"

на моем клиенте я могу пинговать, 10.0.100.1но не могу пинговать 10.0.100.16: PING 10.0.100.16 (10.0.100.16) 56(84) bytes of data. From 10.0.1.1 icmp_seq=1 Destination Port Unreachable

Похоже, что вместо 10.0.100.16ответа пинг содержит 10.0.1.1.

Когда я tcpdump tun1на гипервизоре, я вижу: IP 10.0.1.6 > 10.0.100.16: ICMP echo request, id 26073, seq 1, length 64 IP 10.0.1.1 > 10.0.1.6: ICMP 10.0.100.16 protocol 1 port 43991 unreachable, length 92

по какой-то причине 10.0.1.1используется вместо 10.0.100.16ответа ICMP.

Есть идеи, что может быть не так? Неправильная маршрутизация, пропущенные iptables?

0
Используйте только хост-сеть вместо nat. Ipor Sircer 6 лет назад 0

1 ответ на вопрос

0
DanielB

Вы не упоминаете, какая у вас конфигурация для виртуальной сети libvirt, связанной с устройством virbr0. Конфигурация по умолчанию, которую делает libvirt, заключается в настройке NAT-соединения. В такой настройке libvirt имеет правила брандмауэра, которые применяют NAT к исходящим соединениям. Входящие соединения принимаются только от самой операционной системы хоста - нет маршрутизации от сетей вне хоста, которые, я думаю, будут включать ваше VPN-соединение.