Несколько 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 (она настроена на втором сервере) клиентам, у которых настроены мостовые туннели первого сервера.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.