Маршрутизация OpenVPN от сервера к клиенту

У меня есть два удаленных места, каждое с общедоступным IP-адресом, и я хочу сделать локальную сеть этих мест, как если бы они были одним целым. То есть машины в месте A могут связываться с машинами в месте B, а те, что в месте B, с машинами в месте A.

На месте A (10.0.2.1) У меня есть ASUS AC 1200g + и Raspberry pi (10.0). .2.60) с OpenVPN Server. Новые клиенты остаются в интерфейсе tun0 (10.8.0.1). В этот момент клиент (место B) может связываться с локальной сетью места A, только трафик с пунктом назначения 10.0.1.0/24 перенаправляется на сторону сервера.

Теперь я хочу, чтобы машины в месте A (сервер) могли связываться с локальной сетью места B. Я помещаю маршрут в свой маршрутизатор, чтобы все запросы назначения с 10.0.1.0/24 перенаправлялись на сервер Raspberry Pi VPN, но сервер не знает, что делать с этим трафиком.

Вместо B (10.0.1.1) у меня есть ASUS AC86U с прошивкой ASUS Merlin, и я активирую клиент OpenVPN с включенной опцией «Входящий брандмауэр».

Сетевая схема

0
задан 5 January 2021 в 03:13
1 ответ

У меня похожая установка, в которой raspberry pi является клиентом, но это не должно иметь большого значения. Отказ от ответственности: это не самая простая в настройке вещь.

Я использую этот /etc/iptables/iptables.rules файл для NAT трафика от OpenVPN соединений (обычно tun0, но tun+ покрывает все) в локальные сети:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i eth+ -o tun+ -j ACCEPT
-A FORWARD -i tun+ -o eth+ -j ACCEPT
COMMIT

Конфигурация OpenVPN требует так называемой конфигурации клиент-клиент. Эти две строки в OpenVPN-config сервера включают эту функцию:

# use ccd-folder (per host configs)
client-to-client
# routing to office lan:
client-config-dir ccd

client-config-dir должен быть создан вручную под /etc/openvpn/... -путь, где находится ваш конфиг. В этой папке вы можете создать текстовые файлы для каждого хоста. Именование файлов очень важно: Дважды проверьте, как OpenVPN вызывает вашего клиента в системном журнале (например, с помощью journalctl -xef --unit openvpn-server@somehost или в файле openvpn-status.txt). Содержание файла простое:

ifconfig-push 10.10.99.18 255.255.255.255
iroute 192.168.0.0 255.255.0.0

настраивает его на получение одного и того же IP при каждом подключении (10.10.99.18) и настраивает VPN сервер на внутреннюю маршрутизацию трафика для 192.168.0.0/16 на клиента с именем этого файла и IP адресом. Это делает понятным, почему у нас пока нет действительного сетевого соединения: То есть, потому что хост-система VPN-сервера не знает, что VPN-туннель может использоваться для маршрутизации трафика для этой сети (netstat -rn4). Поэтому мы должны снова настроить VPN сервер и добавить:

route       192.168.0.0 255.255.0.0
push "route 192.168.0.0 255.255.0.0"

чтобы сообщить серверу, что он должен маршрутизировать трафик на 192.168.0.0/16, и все клиенты, подключенные к серверу, также должны быть проинформированы о маршруте - маршрут будет передан клиентам.


Для своей установки я использовал ссылку выше, но во время написания этого ответа я нашел две интересные ссылки по теме:

удачи :)

0
ответ дан 24 April 2021 в 02:16

Теги

Похожие вопросы