Portanto, eu tenho um roteador baseado em Linux e tenho um cliente vpn configurado para rotear o tráfego através dos comandos vpn e isp per iptables Eu estou tentando rotear o tcp específico e todas as portas udp através da vpn apenas e usando o tcpdump para verificar, mas não consigo fazê-lo funcionar
aqui está o código que eu tenho usado
iptables -t mangle -A PREROUTING -i br0 -p tcp -m multiport --dport ! 20,21,22,80,81,443,8080 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i br0 -p udp -j MARK --set-mark 2
em que "2" é a tabela da VPN (na minha tabela de casos 10)
e onde "1" tabela ISP (tabela 100)
o script tem outras funções relacionadas ao roteamento que funcionam corretamente para mover ips específicos para a vpn e um kill switch
o conceito é que eu estou tentando executar um cliente de torrent fora do próprio roteador (interno "lan" 192.168.1.1) e eu quero que todos os udp e todas as portas tcp que NÃO estão listadas acima usem a vpn enquanto o resto vai através do isp
Foi-me dito que eu talvez precise usar as opções INPUT OUTPUT AND FORWARD também, mas apesar da leitura eu não consigo fazer as portas rotearem corretamente, meu script acaba travando e travando o roteador ou eu acabo sem tráfego em tudo para a internet via vpn ou o isp
aqui está o meu script sem a seção ports, já que o removi da fustiration
#!/bin/sh
main() {
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
echo 0 > $i
done
ip route flush table 100
ip rule del fwmark 1 table 100
ip route del default table 100
ip rule del fwmark 2 table 10
ip route flush cache
iptables -t mangle -F INPUT
iptables -t mangle -F OUTPUT
iptables -t mangle -F FORWARD
iptables -t mangle -F PREROUTING
iptables -t mangle -F POSTROUTING
iptables -t mangle -F
ip route show table main | grep ^default | grep -Ev tun1 \
| while read ROUTE ; do
ip route add table 100 $ROUTE
done
ip route add default table 100 via
$(nvram get wan_gateway)
ip rule add fwmark 1 table 100
ip rule add fwmark 2 table 10
ip route flush cache
}
int() {
iptables -t mangle -A PREROUTING -i "$1" -j MARK --set-mark 1
}
adr() {
iptables -t mangle -A PREROUTING -i br0 -s "$1" -j MARK --set-mark 2
}
kills() {
iptables -I FORWARD -s "$1" -o eth0 -j DROP
}
main
int br0
adr 192.168.1.115/32
adr 192.168.1.119/32
adr 192.168.1.147/32
kills 192.168.1.115/32
kills 192.168.1.119/32
kills 192.168.1.147/32
exit 0
Eu tenho o meu roteador configurado onde o padrão é trafegar pelo isp não a vpn