Назад | Перейти на главную страницу

Соединение двух VPN с помощью таблиц маршрутизации и OpenVPN

У меня есть установка, которая выглядит так:

                                                    +                                      
                                                    |                        +------------+
+---------+                  +---+-----+            |              +---------+ 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, все работало в обоих направлениях.