Рейтинг:1

Сервер не отвечает на пинги, направляемые через vpn

флаг in

У меня есть сервер и виртуальная машина на нем. Я размещаю OpenVPN на этом сервере. Виртуальная машина имеет два интерфейса: ens18 — для публичного IP, ens19 — для внутренней сети. Я пытаюсь пропинговать 10.2.0.3 (ip виртуальной машины на ens19) через VPN, но он не отвечает. Когда я бегу tcpdump -i ens19 icmp на виртуальной машине он возвращает это:

tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивание по ens19, тип канала EN10MB (Ethernet), размер захвата 262144 байт
16:50:25.931910 IP 10.8.0.2 > 10.2.0.3: эхо-запрос ICMP, идентификатор 1, последовательность 80, длина 40
16:50:29.381784 IP 10.8.0.2 > 10.2.0.3: эхо-запрос ICMP, идентификатор 1, последовательность 81, длина 40

Вывод пинга:

Пинг 10.2.0.3 с 32 байтами данных:
Истекло время запроса.
Истекло время запроса.
Истекло время запроса.
Истекло время запроса.

Вывод tcpdump машины:

tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивание на tun0, тип ссылки RAW (Raw IP), размер захвата 262144 байт
15:58:15.007090 IP 10.8.0.2 > 10.2.0.3: эхо-запрос ICMP, идентификатор 1, последовательность 45, длина 40

Мои правила iptables:

Цепочка INPUT (политика ACCEPT 2806K пакетов, 1097M байт)
 pkts bytes target prot opt ​​in out source target         
    0 0 ПРИНЯТЬ все -- eth0 любое где угодно в любом месте состояние СВЯЗАННО, УСТАНОВЛЕНО
 198K 27M ПРИНЯТЬ udp -- vmbr0 в любом месте в любом месте udp dpt: [мой порт openvn]
   40 2429 ПРИНЯТЬ все -- tun0 любое где угодно где угодно            
    0 0 ПРИНЯТЬ все -- tun+ в любом месте в любом месте            
    0 0 ПРИНЯТЬ все -- tun+ в любом месте в любом месте            

Цепочка FORWARD (политика ACCEPT 0 пакетов, 0 байт)
 pkts bytes target prot opt ​​in out source target         
 197K 16M ПРИНЯТЬ все -- tun0 vmbr0 где угодно где угодно            
 177K 336M ПРИНИМАТЬ все -- vmbr0 tun0 где угодно где угодно            
   45 2540 ПРИНЯТЬ все -- tun0 любой 10.8.0.0/24 10.2.0.3            
    2 104 ПРИНЯТЬ все -- tun0 любой 10.8.0.0/24 10.2.0.0/24         
    0 0 ПРИНЯТЬ все -- tun+ в любом месте в любом месте            

Цепочка OUTPUT (политика ACCEPT 3102K пакетов, 1303M байт)
 pkts bytes target prot opt ​​in out source target         
    0 0 ПРИНЯТЬ все -- любой tun0 в любом месте в любом месте       

Моя таблица маршрутов:

по умолчанию через [мой общедоступный IP-адрес] dev vmbr0 proto kernel onlink 
10.2.0.0/24 dev vmbr1 прото-область ядра ссылка src 10.2.0.1 
10.8.0.0/24 dev tun0 ссылка на область действия ядра proto src 10.8.0.1 
[мой общедоступный IP-адрес] dev vmbr0 proto kernel scope link src [мой шлюз] 

Список IP-правил:

0: из всех локальных поисковых систем 
32766: из всех основных поисковых запросов 
32767: из всех поисковых запросов по умолчанию 

Если вам нужна дополнительная информация, добавьте комментарий. Извините за мой плохой английский

Karthik avatar
флаг cn
Вы также можете отредактировать команду tcpdump с полной командой, которую вы использовали для захвата пакетов?
флаг in
@Karthik на машине vpn: `tcpdump -i tun0 icmp` на виртуальной машине: `tcpdump -i ens19 icmp`
Karthik avatar
флаг cn
спасибо, просто быстрое предположение, `rp_filter` может вызывать аналогичные проблемы, когда мы направляем трафик через туннель. может попробовать отключить `rp_filter` и проверить проблему?
флаг in
@Karthik, мне нужно отключить его на машине vpn или на виртуальной машине? и для какого интерфейса?
Karthik avatar
флаг cn
Попробуйте отключить rp_filter для интерфейса ens19 в виртуальной машине с адресом 10.2.0.3.
флаг in
@Karthik уже был отключен для всех интерфейсов, но я включил его для ens19, но виртуальная машина все равно не отвечает
Karthik avatar
флаг cn
Если нет, попробуйте **отключить** `rp_filter` для `ens19` и проверьте проблему. Если это не решило проблему, попробуйте отключить/включить интерфейс `ens19`.
флаг in
@Картик да, отключил, но ничего не происходит, отключение и включение не помогает
Tom Yan avatar
флаг in
Есть ли у виртуальной машины маршрут для 10.8.0.0/24 (через 10.2.0.1)? Также вместо этого вставьте `iptables-save`. Также убедитесь, что у вас есть маршрут, ведущий трафик для 10.2.0.0/24 к туннелю на VPN-клиенте (если вы не используете маршрут `redirect-gateway` / `0.0.0.0/0`).
Karthik avatar
флаг cn
Спасибо @uQlel. Не могли бы вы проверить, отключен ли ответ ping в ядре с помощью `cat /proc/sys/net/ipv4/icmp_echo_ignore_all`?
флаг in
@Karthik Возвращает 0. Ping также работает с ens18, а ping работает с машины vpn на ens19 виртуальной машины.
флаг in
@TomYan Как создать этот маршрут? я новичок в нетворкинге
Tom Yan avatar
флаг in
Запустите ip r add 10.8.0.0/24 через 10.2.0.1 на виртуальной машине. Для части VPN либо добавьте «route 10.2.0.0 255.255.255.0» в конфигурацию клиента, либо добавьте «push «route 10.2.0.0 255.255.255.0»» в конфигурацию сервера, предполагая, что вы используете «client» / « pull` на клиентской конф. Обратите внимание, что этот маршрут не является *необходимым*, если и виртуальные машины, и клиенты VPN используют сервер в качестве шлюза по умолчанию.
Tom Yan avatar
флаг in
@uQlel Кстати, что возвращает `sysctl net.ipv4.ip_forward` на сервере?
Karthik avatar
флаг cn
Кроме того, не могли бы вы запустить `tcpdump -ni any icmp host 10.8.0.2` и поделиться выводом? И, пожалуйста, пропингуйте `10.2.0.3` с локальной машины.
флаг in
@TomYan THX, это работает!
Рейтинг:0
флаг in

Автор @TomYan

Запустите ip r add 10.8.0.0/24 через 10.2.0.1 на виртуальной машине. Для части VPN, либо добавить маршрут 10.2.0.0 255.255.255.0 в конфиг клиента, либо добавить нажмите «route 10.2.0.0 255.255.255.0» на сервер conf, если вы используете client/pull на клиентской конф. Обратите внимание, что эти маршруты нет необходимости, если и виртуальные машины, и клиенты VPN используют сервер как их шлюз по умолчанию

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

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