Итак, у нас есть ситуация - мы устроились в крупную компанию работать бухгалтером. Доступа ко внутренним ресурсам компании "из вне" нет, но бородатый сисадмин нам выдал ключи и сертификаты для подключения к ВПН-серверу компании, чтобы можно было работать удалённо. Так вот, вы привыкли работать с музыкой, мессенджерами, и другими сервисами, доступными через интернет, а при открытии туннеля ресурсы компании конечно становятся доступны, но вот доступ во внешку пропадает. Именно этот вопрос мы с вами и будем решать.
Нам нужно, чтобы в ВПН-туннель "заворачивался" только необходимый траффик (для доступа к нашей любимой базе 1С-Бухгалтерии), а остальной пускался как есть, напрямую.
Показывать буду на примере OpenVPN и роутере на прошивке Padavan (подойдёт любой, поддерживающий OpenVPN)
Поскольку я, к сожалению, безработный и бородатый сисадмин не выдал мне ключей, то мне придётся самостоятельно создать сервер, имитирующий сервер нашей компании. Для этого я арендую VPS сервер (вам этого делать не нужно, потому что вам уже выдали ключи), перехожу в панель управления сервером, конфигурю, выбираю нужную ОС. Я буду использовать последнюю на сегодняшний день Ubuntu 24.04.
Далее я отключаю авторизацию по ssh через пользователя root и отключаю авторизацию по паролю.
Авторизуюсь на сервере по ssh ключу и первым делом обновляю пакеты:
sudo apt update && sudo apt upgrade -y
Устанавливаю git и mc (я пользуюсь mcedit):
sudo apt install git mc -y
Для установки сервева и автоматического добавления клиентов я буду использовать скрипт https://github.com/Nyr/openvpn-install.
Меня не устраивает сеть (10.8.0.0/24), которую конфигурит скрипт (она у меня уже занята), поэтому я отредактирую его слегка:
и далее по шагам выбираю нужные параметры:
Сервер я поднял, но нужно немного подредакрировать конфиг:
sudo mcedit /etc/openvpn/server/server.conf
За то чтобы пускать весь траффик через ВПН-соединение отвечает набор параметров:
push "redirect-gateway def1 bypass-dhcp"
Её я закомментирую, символом "октоторп" перед строкой, быдло называет это "решёткой")
Ну и собственно всё. Далее ресурсом компании для наглядности я представлю адрес сайта www.myip.com (он будет имитировать адрес сервера во внутренней сети компании), для этого в конфиге сервера добавим директиву push с командой "route <ip-addr> <netmask>", а поскольку у сайта 3 адреса, то добавлю все 3 по очереди, про маски и их представление рассказывать не буду - инфы в интернете достаточно:
Сохраняю и перезапускаю сервер командой:
sudo systemctl restart openvpn-server@server.service
Но вам, скорее всего это не нужно, т.к. этим всем занимается тот самый бородатый сисадмин компании, а файл с конфигом клиента, который он вам выдал у меня лежит по адресу /root/my_router.ovpn.
Для удобства настройки клиента я его просто распечатаю в консоли командой:
sudo cat /root/my_router.ovpn
А вы просто откройте в блокноте.
Ну, теперь та часть, ради которой я это и пишу - настройка роутера. Тут всё просто, заходим в веб морду по адресу нашего роутера, в Windows, например нужный адрес можно узнать, написав в командной строке ipconfig. У меня роутер имеет адрес 192.168.1.1.
Вписываем настройки из нашего файла
Копируем ключи и сертификаты из нашего файла и жмём применить.
Ну и всё, пошли проверять.
Идём на адрес www.myip.com, который имитирует внутренние ресурсы нашей компании:
и видим адрес нашего ВПН-сервера, что значит, что на этот сайт мы попали через наш туннель.
Ну и откроем сайт www.2ip.ru:
И видим адрес, который соответствует внешнему ip-адресу, выданным нашим домашним оператором связи, что значит что на этот сайт мы попали "напрямую".