У меня есть установка, которая выглядит так:
+
| +------------+
+---------+ +---+-----+ | +---------+ Remote Host|
|Client 1 +--+--------------->Server 1 | | | | 10.19.2.2 |
|10.19.1.2| +---------------|10.19.1.1| | | +------------+
+---------+ | +------------v-------+-+ | |
+---------+ | | | +-----------+ |
|Client 2 | | | ^ | +--------------------+
|10.19.1.3+--+ | | | | | Switch |
+---------+ | | v | | |
+---------+ | | | +-+---------+
|Client 3 +-----+ +--++-----+ | |
|10.19.1.4| |Server 2 | | |
+---------+ |10.19.2.1| <----+ |
+---------+ |
|
|
|
++
Я использую OpenVPN. Первый сервер настроен на адрес 10.19.1.1 в 24-битной подсети, предоставляющей IP-адреса Клиентам 1-3. Сервер 1 также подключен к серверу 2 и имеет второй IP-адрес в 24-битной подсети Сервера 2. На сервере 2 настроен тот же клиент / сервер, что и на сервере 1. Он имеет IP-адрес 10.19.2.1 в 24-битной подсети, предоставляющей IP-адрес удаленному хосту.
У каждого сервера есть два интерфейса как таковых:
+---+--------+
|Server 1 +-+tun0 10.19.1.0/24
| |
| +-+tun1 10.19.2.0/24
+------------+
+------------+
|Server 2 +-+tun0 10.19.2.0/24
| |
| +-+tun1 10.19.1.0/24
+------------+
Где tun0 - его серверный интерфейс, а tun1 - его клиентский интерфейс. Как я могу заставить эти две сети взаимодействовать с помощью таблиц маршрутизации с сервером 1 и сервером 2? Мне удалось заставить это работать на сервере 1, чтобы клиент 1 мог пинговать удаленный хост, но не наоборот.
Я сделал это, протолкнув маршрут к клиентам с сервера 1, так что 10.19.0.0/16 маршрутизировался через сервер 1, затем я настроил маскарадинг на tun1 для сервера 1. Я попытался сделать то же самое с сервером 2, и он не позволяет удаленному хосту пинговать отдельных клиентов.
Если я вас правильно понял, вы хотите обеспечить маршрутизируемое (L3) соединение между двумя подсетями VPN. Без добавления каких-либо дополнительных маршрутов серверы 1 и 2 уже должны знать, как маршрутизировать пакеты между двумя сетями, поскольку у них есть интерфейсы, подключенные к обеим сетям. Все, что не хватает, - это информировать своих соответствующих VPN-клиентов о том, как подключиться к другой сети.
В частности, клиенты Сервера 1 (10.19.1.0/24) должны быть проинформированы, что сеть 10.19.2.0/24 доступна через 10.19.1.1, а клиенты Сервера 2 (10.19.2.0/24) должны быть проинформированы, что сеть 10.19.1.0/24 доступна через 10.19.2.1. Нет необходимости настраивать маскарад NAT на любом сервере.
Сервер OpenVPN позволяет отправлять команды маршрутизации клиентам. Я считаю, что команда для добавления в файл конфигурации сервера OpenVPN на сервере 1 будет следующей:
push "route 10.19.2.0 255.255.255.0"
И соответствующая конфигурация на Сервере 2 будет:
push "route 10.19.1.0 255.255.255.0"
Оказывается, пересылка IPV4 была отключена на Server2. Мне все еще приходилось использовать NAT, я считаю, это потому, что OpenVPN требует аутентификации, и все клиенты подключены к серверу OpenVPN. Как только пересылка IPV4 была включена на Server2, все работало в обоих направлениях.