Estou conectado por meio de uma VPN e quero que algumas contas de usuário a ignorem. A interface VPN é tap0
(IP é 172.16.xx), a principal é wlan0
(IP é 192.168.10.3). Todo o tráfego regular vai para a Internet via tap0
.
Criei uma segunda tabela de roteamento e adicionei uma uid
regra:
# ip route add default via 192.168.10.1 dev wlan0 proto static table 2
# ip rule add uidrange 1001-1001 table 2
# ip route show table 2
default via 192.168.10.1 dev wlan0
Espero que o tráfego do usuário saia wlan0
com o IP de origem 192.168.10.3. No entanto, o tráfego do usuário afetado tem o IP da wlan0
interface, mas sai na tap0
interface errada (e então não vai a lugar nenhum). Sem a regra, o tráfego vai normalmente via tap0
.
Estranhamente, ip route get
mostra o que eu esperaria. Com a regra em vigor:
$ ip route get 8.8.4.4
8.8.4.4 via 192.168.10.1 dev wlan0 table 2 src 192.168.10.3 uid 1001
cache
Sem a regra:
$ ip route get 8.8.4.4
8.8.4.4 via 172.16.0.1 dev tap0 src 172.16.0.102 uid 1001
cache
Também tentei adicionar dev wlan0
e proto static
à tabela de roteamento, mas não mudou nada. Não tenho absolutamente nada em iptables
, todas as políticas definidas para ACCEPT
. Também tentei iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
, mas não ajudou (obviamente porque o tráfego sai em tap0
). Também defini rp_filter
como zero em todos os lugares.
Em qualquer caso, o usuário pode executar ping com sucesso no wlan0
gateway em 192.168.10.1. Obrigado pela ajuda.