Для настройки 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/ , тем самым убедитесь, что вы подключены.
Оставить комментарий