Проблема этой модели в том, что некоторые (только некоторые) клиенты недоступны. См. Ссылку ниже для получения дополнительной информации о модели, которая описывается в следующем разделе.
Оба клиента (1.1 и 1.2.3) могут подключаться к серверу VPN (1). Сервер (1) не использует объявление клиент-клиент в файле conf OpenVPN.
Сервер (1) может пинговать обоих клиентов (1.1 и 1.2.3), оба клиента (1.1 и 1.2.3) могут пинговать друг друга и могут пинговать сервер (1). Локальные клиенты (1.1.1 и 1.1.2) за маршрутизатором (1.1) за NAT могут пинговать друг друга и могут пинговать маршрутизатор (1.1). То же самое касается другого netowrk (за 1.2), где все клиенты (1.2.1, 1.2.2 и 1.2.3) могут пинговать друг друга, а также могут пинговать маршрутизатор (1.2). Пока проблем нет.
Оба маршрутизатора (1.1 и 1.2) правильно настроили свои статические маршруты. Маршрутизатор в первой сети (1.1) не имеет установленных статических маршрутов, они отправляются с сервера VPN. Маршрутизатор во второй сети (1.2) не является шлюзом VPN, поэтому его маршруты следующие:
сеть 192.168.1.0/24 шлюз 192.168.2.103
сеть 192.168.10.0/24 шлюз 192.168.2.103
Затем VPN-клиент во второй сети (1.2.3) снова получает маршруты от сервера.
Вернемся к достижению клиентских станций - теперь эти клиенты за NAT не могут быть доступны из одной сети в другую; некоторые могут, другие нет. Приведу несколько примеров:
находясь на сервере (1), я могу пинговать 1.1.1, но не могу пинговать 1.1.2.
находясь в системе клиента (1.1.1), я могу пинговать 1.2.1, но не могу пинговать 1.2.2.
Для некоторых клиентов я могу увидеть временное исправление при добавлении их маршрутов статистики, что можно сделать с машинами Linux. Их таблица маршрутизации (например, машина 1.1.2) может содержать информацию только для сети 1.1. Добавление статического маршрута для другой сети (1.2) заставляет его работать, но это не может быть сделано со всеми клиентами.
Еще одно очень временное исправление - это попытка выполнить команду traceroute с 1.2.2 по 1.1.2, которая может нормально добраться до машины, а затем я могу пропинговать ее в течение нескольких минут. Однако через короткое время маршрут исчез.
Однако ни одно из этих решений не является постоянным.
Я должен отметить, что недавно заменил маршрутизатор 1.2, но все маршруты возвращены, как и на предыдущей машине.
Возникает еще несколько вопросов:
Это проблема с DNS? Если да, то почему команда ping не работает с IP-адресом, а не с доменным именем?
Как мог traceroute работать, а ping - нет? Нет брандмауэра, который блокировал бы его, и даже если бы это было так, как trceroute мог заставить команду ping работать на короткое время?
Почему некоторым клиентам не нужно устанавливать статические маршруты, а другим это нужно, чтобы они могли пинговать в сети?
Может ли это быть связано с порядком загрузки устройств в сети? Я также пытался перезагрузить / выключить их все, но это ничего не дало. Идея заключалась в том, что маршруты в памяти будут очищаться при перезагрузке, а новые будут «взяты» из маршрутизатора.
Цель состоит в том, чтобы исправить это, чтобы все клиенты во всех сетях были доступны без статических маршрутов, размещаемых где-либо, кроме маршрутизатора.
Я сам нашел решение, это вызвано правилами iptables, установленными в роутере. Мой новый маршрутизатор - это ASUS RT-N12, и он содержит правило FORWARD, которое отбрасывает недопустимые пакеты. Это правило проблематично для статической маршрутизации.
Решение состоит в том, чтобы создать сценарий, который автоматически удалял бы правило FORWARD при запуске:
iptables -D FORWARD -m state --state INVALID -j DROP
Чтобы узнать больше об этой проблеме, прочтите ветка форума.