DIY VPN Killswitch
Обновена на: 24 март 2022 г.EDITED
Имах идея да пиша т’ва като едит на Ubuntu & VPN поста, но реших да го направя отделен, понеже разликите между Ubuntu и чист Debian са миниатюрни, но важни.
Killswitch-ът ще блоква всеки трафик, който не минава през VPN-a. На всеки мрежови адаптер. Сравнително сигурен съм, че скриптът, който написах, е универсален.
След деплоймент, може да се зарежда заедно с openvpn в /etc/rc.local точно както описах в последния пост. Преди openvpn, естествено.
Супер важно е да кажа, че vanilla Debian няма resolvconf пакета, който е неизменно важен хем да нямаш DNS Leak, хем изобщо да можеш да ползваш DNS-и с този killswitch.
Та първо инсталирай resolvconf, после инсталирай ufw, след това действай по предния пост, а накрая си вземи скрипта:
#!/bin/bash
# Bring all interfaces downifconfig eth0 down
ifconfig $(ifconfig -a | grep wlan | awk ‘{printf$1}’ | head -1) down# Purge UFW settings
ufw –force reset
# Deny from all
ufw default deny incoming
ufw default deny outgoing
ufw enable# This should allow most local traffic
ufw allow to 192.168.0.0/12
ufw allow in from 192.168.0.0/12# Revive interfaces
ifconfig eth0 up
ifconfig $(ifconfig -a | grep wlan | awk ‘{printf$1}’ | head -1) up# This parses the OVPN files in your /etc/openvpn folder, presumably this scipt is deployed in the same dir
# Allows VPN port for the UDP protocol outbound onlyremote_port=($(grep -r -m 1 remote *.ovpn | awk ‘{print$3}’));
for ((i=0; i != ${#remote_port[@]}; i++)); do
ufw allow out ${remote_port[i]}/udp;
done;# Allow inbound from parsed VPN IPs.
ufw allow in from $(grep -m 1 remote *.ovpn | awk ‘{print$2}’ | xargs echo -n) to any
# Allow the VPN tun0 (presumably default) interface
ufw allow in on tun0 from any to any
ufw allow out on tun0 from any to any# Restart NetworkManager to reconnect.
service NetworkManager restart
