Решение на iptables:
https://askubuntu.com/questions/589477/is-there-a-vpn-monitor-kill-switch-application-for-ubuntu (в конце есть что-то для ufw, не проверял).
Берём оттуда только настройку файрволла, монитор мне кажется излишним.
Перед началом работы
сохранить текущие правила:
sudo iptables-save > working.iptables.rules Если что-то пошло не так, вернуть назад:
sudo iptables-restore < working.iptables.rulesКомментарии:
0. VPN и virtual_interface смотрите в ifconfig при законнекченном VPN. local_interface -- eth0 (там торчит кабель провайдера) или wlan0 или куда к вам приходит инет.
1. Секции про локалку (всё, где упоминается LCL) можно выкинуть (кто-то ещё пользует этот пережиток пионер-домосеток?).
2. В servers прописываем ip-адреса наших VPN (параметр remote из ovpn-файла).
3. В последней секции правила можно писать и так:
$FW -A INPUT -j ACCEPT -p udp -s ${servers[c]} -m multiport --sports 443,465 -i $local_interface
Порты для этих правил берём из ovpn-файла, параметр remote.
-p udp или
-p tcp смотрите в ovpn файле (
proto udp или
proto tcp). Все лишние правила, не имеющие отношения к делу, удаляем.
4. Настроили скрипт, проверили. Если всё хорошо, то сохраним: поставим (если не стоит) пакет iptables-persistent, настройки сохранятся автоматически и будут применяться при загрузке системы. Если пакет уже стоит, то для сохранения настроек выполняем
sudo invoke-rc.d iptables-persistent save.