Для настройки OpenVPN с поддержкой kill switch на роутере, необходимо установить прошивку LEDE или OpenWRT.  О том как установить прошивку LEDE, или OpenWRT смотрите инструкцию в Интернете.

Зайдите на 192.168.1.1 через SSH и выполните команду установки OpenVPN клиента:

# opkg update

# opkg install openvpn-openssl

Здесь и далее команды выделены жирным шрифтом. Вы также можете установить luci-компонент конфигурации openvpn, но он не является обязательным:
# opkg install install luci-app-openvpn
Вы также можете создать образ прошивки с помощью openvpn.

Хорошее руководство по общей настройке клиента OpenVPN вы можете найти на странице https://github.com/StreisandEffect/streisand/wiki/Setting-an-OpenWrt-Based-Router-as-OpenVPN-Client Мы будем следовать по ней с изменениями, специфичными для VPN Monster.

После установки OpenVPN добавьте его в автозапуск:

# /etc/init.d/openvpn enable

Если у Вас еще нет лицензии VPN Monster, вы можете получить его в том числе и бесплатно.

Если у вас уже есть код активации VPN Monster, зайдите в личный кабинет по адресу: https://vpnmonster.ru/login/   и загрузите архив файлов конфигурации.

Этот архив содержит файлы конфигурации OpenVPN с расширением «ovpn». Имя файла с расширением «ovpn» в архиве определяет страну и протокол. Например, рассмотрим файл «VPN_ <your_code> _Austria.ovpn». Это файл конфигурации TCP, файл конфигурации UDP содержит завершающее слово «udp». Мы будем использовать этот файл, другие файлы обрабатываются аналогично.
Скопируйте файл «VPN_ <your_code> _Austria.ovpn» с помощью программы pscp или WinSCP в Windows, scp в Linux в /etc/openvpn папку файловой системы маршрутизатора. В случае проблем с копированием принудительно задайте  протокол scp (по умолчанию может использоваться sftp).

Конфигурация OpenVPN с использованием файла «VPN_ <your_code> _Austria.ovpn» может быть реализована двумя способами.
1) Измените расширение файла «ovpn» на «conf». В этом случае OpenVPN найдет его автоматически по расширению.
2) Укажите имя файла в /etc/config/openvpn. Вы можете использовать uci:

# uci set openvpn.vpnmonster=openvpn
# uci set openvpn.vpnmonster.enabled=’1′
# uci set openvpn.vpnmonster.config=’/etc/openvpn/VPN_<your_code>_Austria.ovpn’
# uci commit openvpn

Файл /etc/config/openvpn должен содержать следующие добавленные строки:

config openvpn ‘vpnmonster’
 option enabled ‘1’
 option config ‘/etc/openvpn/VPN_<your_code>_Austria.ovpn’

Здесь и далее курсивом выделено содержимое конфигурационных файлов. Обратите внимание на отступы. Однако, как выяснилось после обновления luci-app-openvpn — git-19.256.41054-c048f23-1, система стала пытаться запустить файл ‘openvpn-vpnmonster.conf’, причём двойным образом, согласно конфигурационному файлу и согласно правилу умолчания. Это привело к повторяющимся сообщениям в логе о невозможности повторного запуска. Поэтому наиболее универсальным является смена расширения на ‘conf’ и удаление или комментирование добавленных строк, то есть оставление файла /etc/config/openvpn в первоначальном виде:

#config openvpn ‘vpnmonster’
# option enabled ‘1’
# option config ‘/etc/openvpn/VPN_<your_code>_Austria.ovpn’

Создайте новый сетевой интерфейс:

# uci set network.vpnmonstertun=interface
# uci set network.vpnmonstertun.proto=’none’
# uci set network.vpnmonstertun.ifname=’tun0′
# uci commit network
Файл /etc/config/network должен содержать следующие добавленные строки:
config interface ‘vpnmonstertun’
 option proto ‘none’
 option ifname ‘tun0’

Создайте новую зону брандмауэра и добавьте правило пересылки из локальной сети в VPN:

# uci add firewall zone
# uci set firewall.@zone[-1].name=’vpnfirewall’
# uci set firewall.@zone[-1].input=’REJECT’
# uci set firewall.@zone[-1].output=’ACCEPT’
# uci set firewall.@zone[-1].forward=’REJECT’
# uci set firewall.@zone[-1].masq=’1′
# uci set firewall.@zone[-1].mtu_fix=’1′
# uci add_list firewall.@zone[-1].network=’vpnmonstertun’
# uci add firewall forwarding
# uci set firewall.@forwarding[-1].src=’lan’
# uci set firewall.@forwarding[-1].dest=’vpnfirewall’
# uci commit firewall

Файл /etc/config/firewall должен содержать следующие добавленные строки:

config zone
 option name ‘vpnfirewall’
 option input ‘REJECT’
 option output ‘ACCEPT’
 option forward ‘REJECT’
 option masq ‘1’
 option mtu_fix ‘1’
 list network ‘vpnmonstertun’

config forwarding
 option src ‘lan’
 option dest ‘vpnfirewall’

Теперь мы должны настроить DNS-серверы. Самый простой подход — использовать общедоступный DNS для WAN-интерфейса маршрутизатора. Вы можете добавить OpenDNS:

# uci set network.wan.peerdns=’0′
# uci del network.wan.dns
# uci add_list network.wan.dns=’208.67.222.222′
# uci add_list network.wan.dns=’208.67.220.220′
# uci commit

Файл /etc/config/network должен содержать раздел «wan» со следующими строками (добавлены три нижние строки):
config interface ‘wan’

 option ifname ‘eth0.2’
 option force_link ‘1’
 option proto ‘dhcp’
 option peerdns ‘0’
 list dns ‘208.67.222.222’
 list dns ‘208.67.220.220’

Вы также можете добавить Google DNS:

# uci set network.wan.peerdns=’0′
# uci del network.wan.dns
# uci add_list network.wan.dns=’8.8.8.8′
# uci add_list network.wan.dns=’8.8.4.4′
# uci commit

Добавленные строки аналогичны рассмотренным.

Чтобы предотвратить утечку трафика вне VPN-туннеля, следует удалить правило пересылки (forwarding) с lan на wan. В конфигурации по умолчанию существует одно правило пересылки, поэтому выполните команду или удалите (закомментируйте) соответствующую секцию в файле /etc/config/firewall:

# uci del firewall.@forwarding[0]

Вы также можете установить опцию «masquerading» на «0» для зоны wan, она идет после зоны lan, поэтому выполните команду или опять же отредактируйте файл:

# uci set firewall.@zone[1].masq=0

После настройки вы должны сохранить изменения:

# uci commit firewall

Вы также можете отключить пересылку к интерфейсу, отличному от tun с цифрой, изменив файл /etc/firewall.user:

# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.

# Internal uci firewall chains are flushed and recreated on reload, so
# put custom rules into the root chains e.g. INPUT or FORWARD or into the
# special user chains, e.g. input_wan_rule or postrouting_lan_rule.
if (! iptables -C forwarding_lan_rule ! -o tun+ -j REJECT); then
 iptables -I forwarding_lan_rule ! -o tun+ -j REJECT
fi

Кроме того, вы можете выполнить следующие шаги. Добавьте строки в файл /etc/firewall.user:

if (! ip a s tun0 up) && (! iptables -C forwarding_rule -j REJECT); then
 iptables -I forwarding_rule -j REJECT
fi

Создайте файл 99-prevent-leak в папке /etc/hotplug.d/iface/ со следующим содержимым:
#!/bin/sh
if [ «$ACTION» = ifup ] && (ip a s tun0 up) && (iptables -C forwarding_rule -j REJECT); then
 iptables -D forwarding_rule -j REJECT
fi
if [ «$ACTION» = ifdown ] && (! ip a s tun0 up) && (! iptables -C forwarding_rule -j REJECT); then
 iptables -I forwarding_rule -j REJECT
fi

Рассмотренные четыре варианта блокировки утечки являются независимыми и достаточными, вы можете использовать как некоторые из них, так и все вместе для надёжности. Разумеется, блокировка утечки работает только для клиентов маршрутизатора из локальной сети, для ресурсов, запущенных на самом маршрутизаторе (в частности, torrent-клиенте Transmission) она работать не будет! Для torrent-клиента, запущенного на компьютере, подключенном к маршрутизатору, блокировка работает.

После настройки маршрутизатора перезагрузите его командой

# reboot

и проверьте свой IP-адрес на странице https: //ipper.ru/ , тем самым убедитесь, что вы подключены.