Мой вариант использования: я хочу перенаправить весь интернет-трафик из machine B
через machine A
. Однако я не могу просто установить сервер OpenVPN на machine A
так как machine A
находится за уровнями NAT / межсетевых экранов, которые я не контролирую. Мое текущее решение - установить OpenVPN сервер на machine C
, и имеют обе machines A
и B
присоединиться C
как клиенты. Я пытаюсь настроить правильные маршруты, чтобы весь трафик из B
может быть проложен через A
. Настройка на каждой машине и шаги, которые я предпринял, подробно описаны ниже, а моя оставшаяся проблема находится в предпоследнем абзаце.
Сейчас, machine C
запускает сервер Linux и OpenVPN в контейнере Docker (https://github.com/kylemanna/docker-openvpn). С участием redirect-gateway def1
, обе клиентские машины могут подключаться и направлять трафик через сервер (https://ipleak.net подтверждает IP сервера). Однако для следующих тестов redirect-gateway def1
удаляется, а topology subnet
и client-to-client
добавлены. Сервер имеет IP подсети 192.168.255.1
и публичный IP AAA.BBB.CCC.DDD
.
machine A
работает под Windows и имеет IPEnabledRouter=1
установить в HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
, Обслуживание Routing and Remote Access
установлен в Automatic
и работает, а сетевой адаптер с доступом в Интернет настроен на разрешение совместного использования с адаптером OpenVPN TAP. Присвоено 192.168.255.2
.
machine B
работает под управлением Windows и находится за маршрутизатором с IP 192.168.1.100
. Ему присвоен IP-адрес подсети OpenVPN. 192.168.255.3
. Следующие маршруты добавляются в дополнение к тому, что OpenVPN настраивает автоматически:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 128.0.0.0 192.168.255.2 192.168.255.3 259
128.0.0.0 128.0.0.0 192.168.255.2 192.168.255.3 259
AAA.BBB.CCC.DDD 255.255.255.255 192.168.1.1 192.168.1.100 291
Из machine B
, Я могу пинговать machine A
в 192.168.255.2
, но Интернет-трафик по-прежнему направляется через сервер OpenVPN. (ipleak показывает AAA.BBB.CCC.DDD
). Я пробовал добавить маршрут: route add default gw 192.168.255.2 tun0
, но это лишает клиентов возможности доступа в Интернет. Таблица маршрутов сервера обычно выглядит так:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.19.0.1 0.0.0.0 UG 0 0 0 eth0
172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.254.0 192.168.255.2 255.255.255.0 UG 0 0 0 tun0
192.168.255.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
Как я могу заставить это работать?
[РЕДАКТИРОВАТЬ] Еще немного контекста по варианту использования: мне нужно настроить VPN для подразделения, чтобы домашние компьютеры их пользователей machine B
может получить доступ к сторонним ресурсам, которые ограничивают доступ на основе IP-адреса. Доступ к machine A
не заблокирован, но в организации есть как минимум два уровня NAT / брандмауэров, администраторы которых не хотят изменять свои настройки, чтобы помочь с входящими подключениями. Поэтому мы хотим разработать рабочее решение, используя machine C
это может быть VPS в качестве сервера VPN. Существует официальная служба VPN, но, поскольку она открыта для определенных внешних участников, сторонний поставщик не желает предоставлять свой IP-доступ.
В принципе, настройка должна быть похожа на RoutedLans, за исключением того, что мы не можем просто установить machine A
обрабатывать 0.0.0.0
. Этот SF ответ объясняет, почему пакеты не могут быть отправлены через другого клиента в качестве шлюза с использованием интерфейса TUN. Однако есть обходной путь, согласно первому комментарию к этому ответ.
На machine C
:
topology subnet
client-to-client
route 1.0.0.0 255.0.0.0
route 2.0.0.0 254.0.0.0
route 4.0.0.0 252.0.0.0
route 8.0.0.0 248.0.0.0
route 16.0.0.0 240.0.0.0
route 32.0.0.0 224.0.0.0
route 64.0.0.0 192.0.0.0
route 128.0.0.0 128.0.0.0
push "route 1.0.0.0 255.0.0.0"
push "route 2.0.0.0 254.0.0.0"
push "route 4.0.0.0 252.0.0.0"
push "route 8.0.0.0 248.0.0.0"
push "route 16.0.0.0 240.0.0.0"
push "route 32.0.0.0 224.0.0.0"
push "route 64.0.0.0 192.0.0.0"
push "route 128.0.0.0 128.0.0.0"
machine A
в client-config-dir
.ifconfig-push 192.168.255.2 255.255.255.0
push "route 192.168.255.0 255.255.255.0 192.168.255.1"
iroute 1.0.0.0 255.0.0.0
iroute 2.0.0.0 254.0.0.0
iroute 4.0.0.0 252.0.0.0
iroute 8.0.0.0 248.0.0.0
iroute 16.0.0.0 240.0.0.0
iroute 32.0.0.0 224.0.0.0
iroute 64.0.0.0 192.0.0.0
iroute 128.0.0.0 128.0.0.0
На machine A
:
В HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
, устанавливать IPEnableRouter=1
.
Установить сервис Routing and Remote Access
к Automatic
и убедитесь, что он запущен.
Настройте сетевой адаптер с доступом в Интернет, чтобы разрешить совместное использование от адаптера OpenVPN TAP. Похоже, что совместное использование необходимо отключать и снова включать при каждой перезагрузке машины.
На machine B
: удостовериться redirect-gateway def1
находится в конфигурации клиента.