В настоящее время я использую компьютер с Ubuntu Server, на котором работает клиент OpenVPN, использующий туннельное соединение. Несмотря на то, что я хочу, чтобы сетевые данные проходили через VPN-туннель, я также хочу получить доступ к машине из общедоступной сети с помощью переадресации портов (чтобы разрешить запуск веб-сервера на машине, доступной вне дома).

Используя некоторые посты на других форумах, я смог настроить несколько пользовательских сетевых таблиц и маршрутов, чтобы позволить определенной сети через определенные порты проходить через мой обычный сетевой интерфейс. Это прекрасно работает, и вся моя сетевая активность теперь проходит через VPN-клиент по умолчанию, а сетевая активность на указанных мной портах теперь проходит через мой физический сетевой интерфейс, что позволяет мне открывать веб-браузер и просматривать эту машину, используя порт 80.

Однако проблема, с которой я сейчас сталкиваюсь, заключается в том, что с этими пользовательскими таблицами и маршрутами я не могу просмотреть компьютер (например, 192.168.0.110) локально в той же сети (например, из 192.168.0.27). Когда я пытаюсь открыть веб-браузер и перейти к порту 80 на компьютере, через некоторое время я получаю тайм-аут. Интересно то, что когда я использую свой публичный IP-адрес с помощью переадресации портов, я могу получить доступ к машине через порт 80 очень хорошо. Когда я удаляю либо пользовательские настройки таблицы, либо пользовательский маршрут для доступа «без VPN», я снова могу получить доступ к машине локально, но это нарушает доступ из публичной сети.

Я пытался найти людей в Интернете с похожими проблемами, но я, похоже, не смог найти ничего, связанного с проблемой, с которой я столкнулся.

У меня возникает ощущение, что, поскольку я добавил эти пользовательские таблицы и маршруты, ответ от компьютера с Ubuntu перенаправляется на шлюз по умолчанию, а не напрямую на компьютер, который отправил запрос на компьютер с Ubuntu.

Это моя таблица конфигурации mangle:Скриншот

Я использую эти команды для настройки правила и маршрута для таблицы:Снимок экрана

Есть ли в любом случае представление о том, что я делаю здесь неправильно и как я могу получить доступ к машине через порт 80 как внутри, так и снаружи моей локальной сети?

TLDR; Я использовал пользовательские таблицы и маршруты, чтобы разрешить маршрутизацию некоторых портов с использованием моего шлюза по умолчанию, чтобы разрешить доступ к машине, даже если на ней запущен VPN-клиент. По какой-то причине это делает невозможным доступ к машине через порт 80 локально, хотя возможно использовать этот порт, используя мой внешний ip-адрес и переадресацию портов.

1 ответ1

0

Хорошо, так что я наконец смог решить эту проблему ...

Так как я смог создать ситуацию, когда веб-сервер был доступен только из локальной сети, и ситуацию, когда он был доступен только из внешней сети, я начал думать, есть ли способ объединить эти сценарии по-другому.

Я использую Nginx в качестве веб-сервера и обнаружил, что можно запускать веб-сервер на нескольких портах! Поэтому я отредактировал конфигурацию Nginx для работы на портах 80 и 8090 и применил таблицы, правила и маршруты, описанные в OP, только для порта 8090. Затем я обновил правила переадресации портов моего маршрутизатора, чтобы переадресовать внешний порт 80 на порт 8090 в моей локальной сети. Я был ОЧЕНЬ рад узнать, что это решает проблему полностью, так как теперь я могу получить доступ к серверу через порт 80 из моей локальной сети и через порт 80, используя мой внешний IP-адрес, поскольку он перенаправляет его на порт 8090, который содержит 'нет Правила VPN.

Я полагаю, что есть лучший способ решить эту проблему, но пока я удовлетворен текущим решением.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .