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

Подключите две подсети VPN через VPS

Мне нужно связать две подсети через VPS по этой схеме:

192.168.1.0/24 -> VPN-клиент -> VPS <- VPN-клиент <- 192.168.2.0/24

Поэтому я хочу достичь, например, 192.168.2.2 из 192.168.1.0/24 и наоборот. Я создал два туннеля OpenVPN, так что 192.168.1.0/24 подключен к первому туннелю, а 192.168.2.0/24 подключен ко второму туннелю. Конечно, я настроил статические маршруты, добавив 192.168.2.0/24 в локальные сети первого туннеля и 192.168.1.0/24 в локальные сети второго туннеля.

Проблема в том, что я ничего не могу получить от клиентов.

Я действительно использовал нечто подобное, чтобы подключиться к моей домашней сети из Интернета.

Моя домашняя сеть находится за сетью операторского класса, поэтому мне приходится перепрыгивать через все наборы обручей, чтобы использовать VPN.

Обратная сторона: очень низкая производительность, когда мы измеряем пропускную способность через VPN по сравнению с обычным интернет-соединением.

Подсказка: у меня соединение 300/300 Мбит / с, но я измерил максимум 17 Мбит / с через VPN.

я использую OpenVPN в качестве моего VPN-сервера. В основном потому, что мне нужен VPN-сервер, поддерживающий пакеты TCP, поскольку я не могу поддерживать соединение VPN через UDP.

Это настолько плохо, что мне нужно установить таймер поддержки активности на 10 секунд или меньше, иначе NAT операторского класса упадет мое VPN-подключение из моей домашней сети к VPN-серверу. :-(

Итак, мой совет: если вам нужна максимальная производительность вашего VPN-соединения. Переключитесь на пакеты UDP, если это возможно.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ:

Моя сеть VPN в настоящее время неактивна, поэтому в приведенной ниже информации могут быть опечатки здесь и там, но общая идея должен работай.

Тем не мение. Вперед к моей настройке:

Большая часть волшебства происходит на VPN-сервере.

Каждый из моих клиентов подключается к моему серверу с помощью уникального клиентского сертификата. Я использую предоставленное CommonName из клиентского сертификата для поиска в каталоге конфигурации клиента для дальнейших настроек.

Мой VPN-сервер размещен на VPS-сервере (TransIP.eu), который находится в совершенно другой стране, чем я. Я выбрал их, потому что они были дешевыми, а у VPN-сервера есть действительно быстрое соединение в Интернет (10 Гбит / с).

Вам не нужно использовать моего VPS-провайдера. Любой может сделать это, если у вас есть доступ к настройке OpenVPN самостоятельно. :-)

Мое решение в основном построено на этом:

Несколько клиентов OpenVPN на маршрутизируемом TUN

Важные строки в моем server.conf:

# The actual VPN net. 
# Each VPN client connected to the VPN server can ping each other 
# on the 192.168.100.0/24 subnet.

server 192.168.100.0 255.255.255.0

# I can't really remember if I need to push the 192.168.100.0/24 subnet 
# from the general settings to the client.
#
# All VPN clients gets an IP address from this range.
#
# Comment it out if not needed. 
push "route 192.168.100.0 255.255.255.0

ifconfig-pool-persist ipp.txt

# Location of the client specific configuration files.
# It is in the 'ccd/' subfolder.

client-config-dir ccd

# Neccessary so that each VPN client can see each other (aka 'ping'). 
client-to-client

В моем ccd в подпапке у меня есть следующие файлы:

RasberryPi4
MyFriend

Содержание файла RasberryPi4:

ifconfig-push 192.168.100.2 255.255.255.0
push "route 192.168.0.0 255.255.255.0 192.168.100.3 1"
iroute 192.168.1.0 255.255.255.0

Содержание файла MyFriend:

ifconfig-push 192.168.100.3 255.255.255.0
push "route 192.168.1.0 255.255.255.0 192.168.100.2 1"
iroute 192.168.0.0 255.255.255.0

Теперь предположим, что клиент подключается к VPN-серверу с клиентским сертификатом с общим именем «RasberryPi4», в то время как другой клиентский сертификат имеет общее имя «MyFriend».

Для моего сотового телефона нет специального файла, поэтому, когда он подключается к VPN-серверу, ему назначается доступный IP-адрес в подсети 192.168.100.0/24, но он не может достичь ни 192.168.0.0/24, ни 192.168.1.0/ 24 подсеть.

Если я хочу подключиться к обеим подсетям и у моего телефонного сертификата есть CommonName MyPhone, то мне нужен другой файл в ccd подкаталог с именем MyPhone хотя бы с этими минимальными настройками:

push "route 192.168.0.0 255.255.255.0 192.168.100.3 1"
push "route 192.168.0.0 255.255.255.0 192.168.100.2 1"

Я также расширил приведенную выше конфигурацию, так что я мог отделить подсеть / 48 IPv6 от Hurricane Electric, чтобы у меня и у моего друга была собственная подсеть / 56 IPv6 дома, к которой мог получить доступ любой, у кого есть IPv6-адрес.

... но это совсем другая история. :-)

Надеюсь это поможет. :-)