Учим NAS Synology маршрутизировать трафик в OpenVPN туннель с аутентификацией по сертификату

в 12:15, , рубрики: Без рубрики

image
Понадобилось мне чтобы некоторые сайты думали что я нахожусь не в Европе, а в России. Да и свой интерес к торрентам хотелось скрыть от местных властей (не уверен что они следят, но тем не менее.) И были у меня файл конфигурации клиента OpenVPN и сертификаты к нему. Кроме того, очень не хотелось ставить OpenVPN на каждое устройство в сети. Домашний маршрутизатор относится к крайне нижней ценовой группе и точно не умеет работать с OpenVPN. И вспомнил я про свое сетевое хранилища данных, которое у меня только и делает что данные хранит. Раньше еще и торренты качало, но после переезда от торрентов было решено временно отказаться. Вот его-то (Synology DS211j) и было решено превратить в шлюз в Российский интернет, а то что процессорные мощности простаивают.

Заранее предупреждаю что все манипуляции были произведены на DSM версии 5.0-4458 и на других версиях все может быть иначе.

Настройка OpenVPN подключнения на synology

В первую очередь заходим в web-интерфейс нашего хранилища в раздел «Панель управления>Сеть>Сетевой интерфейс» и создаем там профиль OpenVPN. К сожалению web-интерфейс рассчитан только на создание подключения с парольной аутентификацией. Нас же интересует аутентификация по сертификату. Поэтому заполняем предложенные поля любыми данными:

image

Щелкаем далее, и устанавливаем следующие настройки:

image

Обратите внимание на второй пункт настроек. Что имеется в виду не очень понятно. В DSM версии 4.3 таких недостатков перевода мною замечено не было.

Затем в разделе «Панель управления>Терминал и SNMP>Терминал» включаем тот способ коммуникации с хранилищем который вам идеологически ближе:

image

Подключаемся к synology c использованием выбранного протокола. Затем нам будет необходимо поправить созданный автоматически файл /usr/syno/etc/synovpnclient/openvpn/client_oXXXXXXXXXX. Гуру vi могут это сделать прямо в консоли, остальным может быть удобно скопировать файл к себе в папку общего доступа и отредактировать файл там с использованием более привычных инструментов. Делается это следующей командой

cp /usr/syno/etc/synovpnclient/openvpn/client_oXXXXXXXXXX /volume1/Share

При редактировании файла обратите внимание что у Linux и windows разные подходы к обозначению конца строки, поэтому используйте текстовый редактор который сможет сохранить файл в привычном synology формате.
В моем случае файл конфигурации выглядит следующим образом:

client
dev tun
proto udp
remote 255.255.255.255 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca keys/ca.crt
cert keys/client.crt
key keys/client.key
ns-cert-type server
cipher AES-128-CBC
auth SHA1
redirect-gateway def1

Затем с помощью команды mkdir создаем директорию keys в директории /usr/syno/etc/synovpnclient/openvpn/ куда и положим с помощью команды cp имеющиеся у нас файлы сертификатов и ключи от них. С помощью этой же команды необходимо скопировать измененный файл конфигурации обратно в соответствующую директорию.

Для того чтобы подключиться к серверу OpenVPN необходимо зайти в «Панель управления>Сеть>Сетевой интерфейс», выбрать созданное нами подключение и нажать на кнопку «Подключить». Благодаря строке «redirect-gateway def1» в конфигурационном файле synology будет использовать созданный туннель в качестве основного канала для доступа к интернет, а при отключении от VPN сервера наше хранилище будет вновь использовать имеющийся в локальной сети маршрутизатор для доступа в глобальную сеть.

Настраиваем остальные устройства

Теперь осталось научить остальные устройства выбирать путь в интернет. Для этого у меня создано два скрипта с следующим содержимым:
напрямую.bat:

route change 0.0.0.0 mask 0.0.0.0 255.255.255.254 metric 1

через туннель.bat:

route change 0.0.0.0 mask 0.0.0.0 255.255.255.255 metric 1
где 255.255.255.254 — адрес домашнего маршрутизатора, а 255.255.255.255 — адрес synology в локальной сети.

При необходимости выпустить одно из устройств в интернет через российский канал на synology через web-интерфейс поднимается VPN подключение, а на ПК, с помощью скрипта, меняется шлюз по умолчанию. Когда необходимость пропадает — подключение на synology гасится, а на ПК, с помощью другого скрипта, шлюз по умолчанию возвращается обратно.

Скорость

При моем паттерне использования подобной конфигурации нагрузка на процессор хранилища не превышает 80% что много, но не критично. Не стоит также забывать, что подобная конфигурация вносит большие задержки, а скорость через туннель в моем случае не превышает 8 мегабит при скорости домашнего интернета в 20 мегабит и скорости в 40 мегабит на том конце туннеля.

Автор: Dshuffin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js