У меня есть два удаленных места, каждое с общедоступным 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 с включенной опцией «Входящий брандмауэр».
У меня похожая установка, в которой 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
, и все клиенты, подключенные к серверу, также должны быть проинформированы о маршруте - маршрут будет передан клиентам.
Для своей установки я использовал ссылку выше, но во время написания этого ответа я нашел две интересные ссылки по теме:
удачи :)