Antes de iniciar sua VPN, faça uma cópia de netstat -rn
e ifconfig -a
. Inicie sua VPN e as diferenças nesses dois comandos informarão quais redes a VPN cria em termos de rotas e qual IP você recebeu para obter visibilidade dessas redes. Você também precisará obter o IP do servidor que fornece sua VPN (ou tráfego para o servidor VPN não irá alcançá-lo). Eu também assumi que seu servidor VPN usa udp
e não tcp
, se ele usa tcp
, você precisará atualizar a segunda regra para refletir isso.
Depois disso, você adiciona as regras OUTPUT
no iptables para definir o que seu host pode ver
iptables -F OUTPUT
iptables -I OUTPUT -d VPNSERVER -p udp -j ACCEPT -m comment --comment "Allow traffic to VPN SERVER"
iptables -I OUTPUT -s VPNIP -d VPNNETWORK/CIDR -j ACCEPT -m comment --comment "Allow all traffic to VPN newtork"
iptables -I OUTPUT -j DROP -m comment --comment "Drop all other traffic"
iptables -F OUTPUT
libera suas regras existentes, esteja ciente disso, mas é necessário fazer o que sua pergunta original fez.
VPNSERVER
seria o ip do seu servidor vpn.
VPNIP
seria o IP que a VPN atribuiu a você.
VPNNETWORK/CIDR
seria a rede roteada que apareceu em netstat -rn
alguma coisa
como 10.1.0.0/24
Ao depurar essas regras, pode ser útil registrar o que está sendo descartado, pois alguns protocolos podem precisar de alguma massagem extra:
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
Isso deve ser suficiente para interromper o tráfego OUTBOUND
do seu computador para a Internet e permitir apenas o tráfego para o servidor VPN e a rede que ele fornece.
O OP apontou que o Arch Linux não é fornecido com netstat
ou ifconfig
. Nesse caso, as alternativas são:
ip addr show
mostrar-lhe-á as interfaces e ip route show
mostrará-lhe as rotas que tem.