Сначала я подумал, что это неправильно настроенные IPTABLES, но это не так. Обратите внимание, что это проблема не с веб-запросами LAN, а только с WAN.
Я временно деактивировал все цепочки iptables, кроме регистрации всех входящих и исходящих. iptables регистрирует входящие входящие запросы, но не исходящие. Я пробовал желаемый порт 80, но также и несколько портов более высокого уровня.
Как только я выключил клиент openvpn, веб-сервер, прослушивающий порт 80 (nginx), сможет обслуживать веб-страницы для всех IP-адресов, внешних из моей локальной сети.
Я не могу найти журналов на машине, которые дают четкий ответ. Журналы nginx указывают на отсутствие связи или на отсутствие таковых.
У меня осталось впечатление, что openvpn предотвращает попадание всех IP-адресов WAN на любой данный порт. Есть ли способ предотвратить такое поведение? хоть на 80 порт?
Таблица маршрутизации до запуска openvpn:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Таблица маршрутизации при работе openvpn:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.10.10.57 0.0.0.0 UG 0 0 0 tun0
10.10.10.1 10.10.10.57 255.255.255.255 UGH 0 0 0 tun0
10.10.10.57 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
63.142.161.7 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Обновление 2: после добавления route-nopull в файл конфигурации клиента openvpn я смог обслуживать веб-страницы, однако vpn стал бесполезным. Почти готово, но я недостаточно знаю маршруты, чтобы исправить эту проблему.
Ваша конфигурация OpenVPN позволяет получить шлюз по умолчанию из удаленной системы.
Я делаю вид, что в точке сети, где выполняется NAT (на модеме ADSL или где-то на сервере ISP), у вас есть отображение публичного адреса на ваш внутренний сервер.
И есть проблема. Представьте себе это:
Кто-то из Интернета с публичным IP-адресом A.A.A.A хочет видеть страницы с вашего сервера, которые, как правило, находятся на публичном адресе B.B.B.B. Точка NAT перезаписывает адрес B.B.B.B на реальный, но не общедоступный адрес вашего сервера, например 192.168.0.2, но исходный адрес остается прежним - A.A.A.A. Ваш сервер обслуживает этот запрос и отправит ответ - но ответ будет отправлен на адрес A.A.A.A с адреса 192.168.0.2 - через ваш шлюз по умолчанию!
Если этот сценарий продолжается без OpenVPN, пакет проходит через шлюз по умолчанию 192.168.0.1 и где-то будет переписан, чтобы иметь адрес источника B.B.B.B вместо 192.168.0.2. Все идет хорошо.
Но если ваш сценарий продолжается с OpenVPN, ваш сервер должен отправлять пакет в A.A.A.A через шлюз по умолчанию, но это не 192.168.0.1, а 10.10.10.57. И в этом случае я не могу сказать, что будет с этим пакетом делать. Будет ли он переписан на другой адрес источника, скажем, на C.C.C.C? Или его выбросят?
Зачем вам нужен шлюз по умолчанию на противоположном сайте? Вам понадобится только маршрут, который будет соответствовать адресам противоположного сайта, скажем 10.10.10.0/24 (может быть, другой, это только пример) ...
В конфигурации сервера OpenVPN вам необходимо удалить строку вроде:
push "redirect-gateway def1 bypass-dhcp"