Пытаюсь сделать некий kill-switch для vpn соединения, работать должно крайне просто - отвалился VPN - тут же любые пакеты наружу - Operation not permitted.


Проблема в том, что у меня несколько интерфейсов, условный eth0 и wlan1 wlan2. Работать должно везде равносильно.


[code=BASH]
FW=«/sbin/iptables»
LCL=«192.168.0.0/24»
WLCL=«192.168.0.101/24»
VPN=«10.0.0.0/12»
local_interface=«enp2s0»
wireless_local_interface=«wlp1s0»
virtual_interface=«tun0»


VPN Servers


servers=(
193.221.55.161)
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
$FW -P INPUT DROP
$FW -P FORWARD DROP
$FW -P OUTPUT DROP
$FW -A INPUT -i lo -j ACCEPT
$FW -A OUTPUT -o lo -j ACCEPT
$FW -A INPUT -j ACCEPT -s $LCL -i $local_interface
$FW -A OUTPUT -j ACCEPT -d $LCL -o $local_interface
$FW -A INPUT -j ACCEPT -s $WLCL -i $wireless_local_interface
$FW -A OUTPUT -j ACCEPT -d $WLCL -o $wireless_local_interface
$FW -A INPUT -j ACCEPT -i $virtual_interface
$FW -A OUTPUT -j ACCEPT -o $virtual_interface
$FW -A INPUT -j ACCEPT -i $wireless_local_interface
$FW -A OUTPUT -j ACCEPT -o $wireless_local_interface
server_count=${#servers[@]}
for (( c = 0; c < $server_count; c++ ))
do
$FW -A INPUT -j ACCEPT -p udp -s ${servers[c]} –sport 1194 -i $local_interface
$FW -A OUTPUT -j ACCEPT -p udp -d ${servers[c]} –dport 1194 -o $local_interface
$FW -A INPUT -j ACCEPT -p tcp -s ${servers[c]} -i $local_interface
$FW -A OUTPUT -j ACCEPT -p tcp -d ${servers[c]} -o $local_interface
done


server_count=${#servers[@]}
for (( c = 0; c < $server_count; c++ ))
do
$FW -A INPUT -j ACCEPT -p udp -s ${servers[c]} –sport 1194 -i $wireless_local_interface
$FW -A OUTPUT -j ACCEPT -p udp -d ${servers[c]} –dport 1194 -o $wireless_local_interface
$FW -A INPUT -j ACCEPT -p tcp -s ${servers[c]} -i $wireless_local_interface
$FW -A OUTPUT -j ACCEPT -p tcp -d ${servers[c]} -o $wireless_local_interface
done
[/code]


Да, не очень красиво выглядит. Самое главное, что работает только с Ethernet интерфейсом, если же я подключён по WLAN, нету запрета на выход при отвале впн, спокойно идёт наружу пакет, непонятно почему.


И попутный вопрос, можно ли как-то в одну строку запихать правило с двумя тремя интерфейсами, типа iptables -A OUTPUT -j DROP -p TCP -o eth0 wlan1 wlan2 wlan3 ?









 ,






URL записи