Eu tenho um servidor Ubuntu, que eu controle remotamente via ssh, eu preciso rodar um cliente OpenVpn neste servidor, então todo o tráfego vai passar pelo túnel VPN, exceto por duas coisas, 1. a conexão ssh do meu computador aqui, 2. Outro programa usa a porta 43210 auto-definida.
Isso é o que eu tentei. Eu criei uma nova tabela de regras ip para todo o tráfego que eu não quero usar a VPN:
# reserved values
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
206 passvpn
Eu defini o comportamento da tabela passvpn para usar o dispositivo local sem VPN:
ip route add default via xxx.xxx.xxx.xxx dev eth0 table passvpn
em que xxx.xxx.xxx.xxx é o meu gateway
Eu adiciono uma nova regra de IP para direcionar o tráfego marcado para a tabela:
ip rule add fwmark 66 table passvpn
Marcar o SSH e o tráfego do outro programa com essa máscara 66, usando o número da porta:
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 66
Quando eu executo o OpenVpn, minha conexão ssh é finalizada e não consigo estabelecer novas conexões, erro como "esgotado". Eu pensei que talvez o pedido de conexão do meu computador não pode chegar ao servidor com a VPN em execução, então eu adiciono outra regra iptables como:
iptables -t mangle -A INPUT -p tcp --sport 22 -j MARK --set-mark 66
Mas ainda não está funcionando.
Alguém por favor pode me dizer se eu fiz algo errado aqui? Qualquer sugestão será apreciada, obrigado!