Eu tenho um Raspberry Pi que estabelece uma conexão SSH com um servidor remoto (VPS) e abre uma porta no Pi para que eu possa usá-lo como um proxy SOCKS5. Este é o comando que eu uso para estabelecer o túnel:
ssh -D 1080 -f -C -q -N user@hostname
A razão para isso é que a rede bloqueia a VPN usando DPI, mas não o SSH. Então eu configurei uma VPN na LAN e configurei um proxy SOCKS5 (o mesmo Pi). O problema é que, se o proxy estiver inativo, o tráfego de saída da VPN (portanto, quando não for mais o tráfego da VPN, mas apenas o HTTP (S) regular) não o usará e tentará enviar essas solicitações pelo firewall da rede. Quero impedir que isso aconteça, de modo que, se o proxy estiver inativo, a VPN não permitirá a saída de nenhuma conexão.
Isso mostra como ele deve funcionar
______________________________
| |
| Client |
|______________________________|
|
| L2TP over IPSEC
________________|_______________ __
| | |
| VPN (192.168.1.XXX) | |
|________________________________| |
________________|_______________ |-RaspberryPi
| | |
| SOCKS5 (127.0.0.1:1080) | |
|________________________________|__|
|
| SSH tunnel
________________|________________
| |
| VPS (Amazon EC2) |
|_________________________________|
|
/ \
/ \
the internet
Estes são meus iptables:
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.42.0/24 -o eth+ -j MASQUERADE
-A POSTROUTING -s 192.168.43.0/24 -o eth+ -m policy --dir out --pol none -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol none -j DROP
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m multiport --dports 500,4500 -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -j DROP
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -i eth+ -o ppp+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ppp+ -o eth+ -j ACCEPT
-A FORWARD -s 192.168.42.0/24 -d 192.168.42.0/24 -i ppp+ -o ppp+ -j ACCEPT
-A FORWARD -d 192.168.43.0/24 -i eth+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.43.0/24 -o eth+ -j ACCEPT
-A FORWARD -j DROP
COMMIT
Este foi o script usado para fazer o link
da VPN
Então, minha pergunta é: Como posso alterar esses iptables para forçar os clientes VPN a usarem apenas um proxy SOCKS5 na LAN? (caso contrário, DROP seus pacotes destinados não-proxy)