Назад | Перейти на главную страницу

OpenVPN и односторонние пинги

Конфигурация сети

Я настроил сеть:

Соответствующие порты компьютеров в 192.168.87.0/24 пересылаются на TP-LINK router быть увиденным «во всем мире».

Переадресация IP включена OpenVPN server.

Я могу подключиться из OfficeB из client1 к OpenVPN server в OfficeA. client1 и server видят друг друга - отвечают на пинги (оба в 192.168.87.0/24 и 10.8.0.0/24 сеть), отправлять данные, создавать соединения (например, ssh).

Таблица маршрутизации на TP-LINK router (a.b.c.d это WAN IP):

DST             MASK                GATEWAY         IFACE
a.b.c.d         255.255.255.255     0.0.0.0         WAN
192.168.87.0    255.255.255.0       0.0.0.0         LAN & WLAN
10.8.0.0        255.255.255.0       192.168.87.2    LAN & WLAN (route added by hand)
239.0.0.0       255.0.0.0           0.0.0.0         LAN & WLAN
0.0.0.0         0.0.0.0             a.b.c.d         WAN

Эта проблема

А теперь ... С ЛЮБОГО компьютера в 192.168.87.0/24, Я могу пинговать 10.8.0.6. К сожалению 10.8.0.6 может ТОЛЬКО пинговать 87.1, 87.2.

Но... 10.8.0.6 начнет пинговать компьютер в 87.0/24 (например 87.104) только в том случае, если я сначала пингую с этого компьютера на 10.8.0.6:

  1. 10.8.0.6: ping 192.168.87.104 - не удалось, время истекло.
  2. 192.168.87.104: ping 10.8.0.6 -- хорошо.
  3. 10.8.0.6: ping 192.168.87.104 -- хорошо.

Что я проверил

Я проверил с tcpdump, который 192.168.87.104 Всегда получает запросы на отправку ответов на пинги от 10.8.0.6. Но ответы, кажется, не проходят через шлюз TP-LINK router вернуться к 10.8.0.6 - Я не могу их видеть с tcpdump на OpenVPN server на обоих интерфейсах.

Я также проверил, что если я добавлю маршрут на 192.168.87.104:

(1) route add 10.8.0.0 netmask 255.255.255.0 gw 192.168.87.2

затем 10.8.0.6 всегда будет получать ответ на пинг, даже если я не отправил его с 192.168.87.104 перед.

Еще кое-что, что я выяснил: пинг от 192.168.87.104 к 10.8.0.6 добавляет в кеш маршрутизации (route -C) Вход (1). И в «первом пинге» (перед добавлением записи) я получаю:

PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data.
64 bytes from 10.8.0.6: icmp_req=1 ttl=127 time=37.0 ms
From 192.168.87.1: icmp_seq=2 Redirect Host(New nexthop: 192.168.87.2)
64 bytes from 10.8.0.6: icmp_req=2 ttl=127 time=93.0 ms

Я читал, что это нормальное поведение, потому что шлюз к 10.8.0.0 находился в том же сегменте сети. И после icmp redirect host в кэше маршрутизации была создана новая запись.

В TP-LINK routerв веб-панели настройки есть флажок SPI Firewall - Stateful Packet Inspection. Отключение не решает проблему.

Мой вопрос

Я не могу понять, почему ответ на пинг 192.168.87.104 > 10.8.0.6 не проходит TP-LINK router несмотря TP-LINK router знает путь к 10.8.0.0 и запрос ping от 192.168.87.104 к 10.8.0.6 действительно проходит.

Итак, мой вопрос: в чем причина? Могу ли я что-нибудь сделать, чтобы разрешить ситуацию (кроме добавления маршрута (1) на каждом компьютере в OfficeA ...)? Лично я считаю, что проблема в TP-LINK router.


OpenVPN server Файл конфигурации:

port 1194
proto udp
dev tun

ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem

server 10.8.0.0 255.255.255.0
push "route 192.168.87.0 255.255.255.0"

client-to-client

keepalive 10 120
comp-lzo

persist-key
persist-tun

Я предполагаю, что TP-LINK изначально сбрасывает ответы ping от .87.104 к .0.6 из-за правила брандмауэра с отслеживанием состояния. Обратите внимание, когда .0.6 пинги .87.104, маршрутизатор TP-LINK никогда не видит пакеты ping-запроса. С точки зрения брандмауэра с отслеживанием состояния вполне разумно отбрасывать ответы ping, если он никогда не видел, чтобы исходные запросы ping шли в противоположном направлении. Позже после .87.104 отправил несколько запросов ping на .0.6, брандмауэр может разрешить пинг-ответы от .84.104 к .0.6, так как он видел .87.104 начать общение с .0.6 в последнее время.

Возможно, можно будет изменить правила брандмауэра TP-LINK. Но поскольку это маршрутизатор «бюджетного» бренда, я подозреваю, что ваши возможности будут ограничены чем-то вроде флажка «Stateful Firewall on / off». Или вы можете даже этого не понять.

Одно из возможных решений - добавить вторую сетевую карту к серверу Debian OpenVPN и сделать ее маршрутизатором интернет-шлюза Office A. Таким образом, маршрут шлюза по умолчанию на клиентах Office A также будет работать для 10.8 трафик, и вам не придется добавлять дополнительную запись во все таблицы маршрутизации клиентов. И в качестве дополнительного бонуса у вас будет возможность использовать iptables адаптировать правила брандмауэра к вашему желанию.