Несколько OpenVPN-серверов с разными настройками на одном компьютере

Март, 05th 2021Рубрика: *NIX 5381
Подписаться на комментарии по RSS

несколько OpenVPN-серверов на одном компьютере

У меня было несколько статей, посвященных настройке OpenVPN-серверов, но всегда подразумевался лишь один экземпляр сервера. И тут возникла задача запустить сразу два OpenVPN-сервера с разными настройками на одном физическом компьютере. Сегодня расскажу как это делается, если вдруг у кого-то возникнет такая же необходимость.

В моём случае, один из серверов должен был работать в режиме моста с TAP-интерфейсом, а второй поднимать туннель и виртуальную сеть через TUN-интерфейс. Причём клиенты, подключенные по VPN, должны иметь возможность взаимодействовать друг с другом, то есть должна быть настроена маршрутизация между OpenVPN каналами.

Зачем вообще это нужно? Дело в том, что в новой версии macOS, OpenVPN клиент Tunnelblick больше не может загружать модуль TAP-интерфейса (эта возможность осталась только для машин с процессором Intel и то при условии отключения защиты системы), потому нужен был сервер с другой настройкой, а существующую систему нарушать было нельзя. Но это мой частный случай и причины настройки нескольких VPN серверов могут быть разными.

Совместная работа нескольких OpenVPN-серверов возможна при условии, когда каждый из них слушает свой порт. Основной сервер у меня работает со стандартным UDP портом 1194, а дополнительный слушает UDP порт 1195 (это задаётся в конфигурационном файле сервера).

Раз у нас будет два сервера, то и файлов конфигурации тоже должно быть два — server.conf и server_tun.conf. Имя файлу можно задавать произвольно, я назвал server_tun.conf по имени создаваемого интерфейса. Подробнее о настройке OpenVPN-сервера с маршрутизированными туннелями я расскажу в следующий раз.

Итак, будем считать, что файлы конфигурации у нас настроены. Как же запустить оба сервера одновременно?

Автоматический запуск нескольких серверов OpenVPN

Для Linux систем достаточно в файле /etc/default/openvpn раскомментировать строку:

AUTOSTART="all"

После чего перечитать конфигурацию systemd:

systemctl daemon-reload

На FreeBSD это делается несколько иначе. Для начала создадим символическую ссылку на скрипт запуска (путь к файлу /usr/local/etc/rc.d/)

ln -s openvpn openvpn_tun

Далее в /etc/rc.conf добавляем следующие строки для автоматического запуска второго сервера при загрузке:

openvpn_tun_enable="YES"
openvpn_tun_configfile="/usr/local/etc/openvpn/server_tun.conf"

Обратите внимание, что в название демона "openvpn_tun" указана наша символическая ссылка, созданная ранее. Таким образом можно запустить столько OpenVPN-серверов, сколько вы посчитаете нужным.

Маршрутизация между двумя OpenVPN каналами с TUN и TAP интерфейсом

Напоследок хочу рассказать о настройке маршрутизации трафика между клиентами двух OpenVPN каналов, без чего они не могли достучаться друг для друга, хотя параметр `client-to-client` был прописан в настройках обоих серверов. В файл конфигурации мостового OpenVPN сервера (с интерфейсом TAP) нужно было добавить такую строку:

push "route 10.10.0.0 255.255.255.0"

Таким образом мы добавим дополнительный маршрут в подсеть 10.10.0.0 (она настроена на втором сервере) клиентам, у которых настроены мостовые туннели первого сервера.

Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

ваш комментарий будет опубликован после проверки
на указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.