Разрешение доступа в сеть в Linux только через VPN с помощью NetBlocker
При наличии опции persist-tun в клиентском конфигурационному файле OpenVPN, при разрыве VPN-соединения (в случае потери доступа к серверу) основным сетевым шлюзом в Интернет остается сетевой интерфейс VPN и трафик по-прежнему направляется через него.
Но как было упомянуто в статье Разрешение сетевых соединений в Linux только при подключенном VPN порой необходимо заблокировать доступ в сеть без активного VPN-соединения. Поэтому мы подготовили» скрипт, который облегчает данную задачу.
Скачайте и установите NetBlocker:
sudo mkdir /etc/netblocker
sudo wget https://zorrovpn.com/static/download/netblocker.sh -O /etc/netblocker/netblocker.sh
sudo chmod +x /etc/netblocker/netblocker.sh
Включите блокирование:
sudo /etc/netblocker/netblocker.sh start
Скрипт создаст нужные правила для iptables, получит все входящие IP-адреса VPN-серверов сервиса и добавит их в список разрешенных для подключения (список будет находится в файле /etc/netblocker/vpn.list), а затем заблокирует неразрешенные исходящие соединения.
После старта Вы можете проверить недоступность обращений к неразрешенным адресам, например к 77.88.8.8, с помощью команды ping 77.88.8.8
PING 77.88.8.8 (77.88.8.8) 56(84) bytes of data. ping: sendmsg: Operation not permitted ping: sendmsg: Operation not permitted ping: sendmsg: Operation not permitted ^C --- 77.88.8.8 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 1999ms
Подключение будет возможно только к разрешенным IP-адресам VPN-серверов.
Вы можете добавлять свои собственные разрешенные IP-адреса в файл /etc/netblocker/custom.list (по одному IP-адресу в строке): 192.168.1.1 (для доступа к роутеру; это также разрешит доступ к DNS роутера), 8.8.8.8 (для публичного DNS от Google) и другие.
После добавления следует выполнить:
sudo /etc/netblocker/netblocker.sh reload
Обновление списка IP-адресов VPN-серверов:
sudo /etc/netblocker/netblocker.sh update
Прекратить блокирование:
sudo /etc/netblocker/netblocker.sh stop
Добавление в собственный список адресов локальных DNS серверов:
sudo /etc/netblocker/netblocker.sh add_dns_to_custom
Для старта после загрузки системы следует прописать следующую строку в файл /etc/rc.local (до строки содержащей «exit 0»)
/etc/netblocker/netblocker.sh start