2

В настоящее время у меня есть следующие настройки:

Win Server 2008

-------> Mint 16 Cinnamon VM туннелируется через внешний VPN (с использованием OpenVPN)

---------------> Веб-сервер внутри для доступа к локальной сети

Есть ли какой-нибудь возможный способ доступа к этому веб-серверу с использованием моего внешнего IP-адреса ISP, когда веб-сервер туннелируется за VPN ... без необходимости перенаправлять порт на стороне VPN?

Например, можно ли разместить веб-сервер на другой виртуальной машине или хост-ОС, которая перенаправляет или действует как указатель (например, mod_rewrite или redirect?) к этому локальному серверу, чтобы к нему можно было получить доступ извне, без необходимости иметь доступ к настройке правил брандмауэра на сервере VPN?

НАПРИМЕР:

ОС хоста

-----> VM 1, VPN + веб-сервер, IP локального адаптера - 192.168.1.2 (домашняя сеть), IP-адрес туннеля VPN - 10.xxx, весь внешний трафик маршрутизируется через VPN.

--------------> ВМ 2, IP-адрес локального адаптера - 192.168.1.3, веб-сервер работает на порту 80, указывает на страницу, размещенную на 192.168.1.2:80, и позволяет осуществлять внешний просмотр через переадресацию портов. локальный роутер.

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

Если эта идея не удастся, в любом случае можно заставить определенные программы отправлять трафик только через определенные интерфейсы (например, через локальный интерфейс Ethernet), или заставлять определенные порты маршрутизировать через шлюз ISP вместо VPN (на уровне ОС).

Ценю ваши отзывы.

1 ответ1

3

Да, это можно сделать благодаря тому, что вы используете свой веб-сервер на виртуальной машине Linux . Первый факт (то, что вы используете Linux) является абсолютной предпосылкой, второй (то, что это виртуальная машина, а не физическая машина) делает это проще и дешевле.

Когда вы настраиваете VPN, она меняет таблицу маршрутизации, устанавливая (в вашем случае), что весь трафик должен проходить через другой сервер. Если соединение происходит через ваш локальный маршрутизатор, виртуальная машина Mint попытается ответить, следуя инструкциям по маршрутизации единственной таблицы, которую она знает, то есть через VPN. Однако компьютер, пытающийся связаться с вашим веб-сервером, увидит, что его запрос на ваш не-VPN-адрес был получен ответом от стороннего VPN-сервера. По очевидным причинам безопасности эти ответы немедленно отбрасываются.

Чтобы решить эту проблему, Linux имеет возможность обрабатывать две (или более) разных таблиц маршрутизации с правилами, определяющими, когда каждая из них должна использоваться. Итак, вы хотите создать второй интерфейс на своей виртуальной машине Mint (назовем его eth1) и убедиться, что у него есть IP-адрес в вашей локальной сети (если вы используете VirtualBox, это означает создание мостового интерфейса.

Теперь все, что вам нужно сделать, - это настроить две таблицы маршрутизации таким образом, чтобы при обмене данными через OpenVPN на него отвечала таблица маршрутизации, установленная OpenVPN, но при входе через LAN ( Сетевая карта, которую мы назвали eth1), на нее отвечает другая таблица маршрутизации, которая маршрутизирует трафик, откуда он пришел, т.е. ваш локальный маршрутизатор, а не сервер OpenVPN.

Вы делаете это следующим образом:

перед запуском VPN создайте две таблицы: мы назовем их основными (одна предназначена для использования OpenVPN) и NONVPN:

 echo 200 main >> /etc/iproute2/rt_tables
 echo 201 NONVPN >> /etc/iproute2/rt_tables

Добавьте шлюз к каждой таблице маршрутизации (при необходимости):

 ip route add 192.168.1.0/24 dev eth0 src <SRC1> table main
 ip route add 192.168.1.0/24 dev eth1 src <SRC2> table NONVPN

Тогда маршрут по умолчанию:

 ip route add default via 192.168.1.1 table main
 ip route add default via 192.168.1.1 table NONVPN

где я предположил, что ваш локальный маршрутизатор - 192.168.1.1, а локальная сеть - 192.168.1.0/24.

Теперь вы можете запустить VPN: он изменит вашу основную таблицу маршрутизации.

И наконец, вы выбираете таблицу маршрутов на основе исходного адреса:

 ip rule add from 10.0.0.0/24 table main
 ip rule add from 192.168.1.0/24 table NONVPN  

где я предположил, что ваш туннель OpenVPN имеет адреса в диапазоне 10.0.0.0/24, измените соответственно.

Вы сделали.

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