Após longas horas de escavação e muitas tentativas, ainda não consigo descobrir como não ter tráfego em uma determinada porta que passa pelo túnel openvpn. Abaixo da minha configuração:
(enp0s25)<ovpn server>(tun0) <--> (tun0)<ovpn client>(enp2s0) <--> app connecting on port 10011
O ovpn server está configurado para enviar a configuração da rota para o cliente com push "redirect-gateway def1 bypass-dhcp"
para que todo o tráfego seja redirecionado através do túnel que é o que eu quero e está funcionando perfeitamente, exceto que eu quero a porta tcp 10011 não passando o túnel ...
A tabela principal de roteamento do kernel de <ovpn client>
é:
0.0.0.0/1 via 192.168.88.9 dev tun0
default via 192.168.0.1 dev enp2s0
128.0.0.0/1 via 192.168.88.9 dev tun0 # not sure why it's there..
192.168.0.0/24 dev enp2s0 proto kernel scope link src 192.168.0.29
192.168.88.0/24 via 192.168.88.9 dev tun0
192.168.88.9 dev tun0 proto kernel scope link src 192.168.88.10
Aqui está minha última tentativa em <ovpn client>
:
Definir uma tabela de roteamento openvpn
default via 192.168.0.1 dev enp2s0
192.168.0.0/24 dev enp2s0 proto kernel scope link src 192.168.0.29
Defina a regra 1000: from all fwmark 0x64 lookup openvpn
Defina as seguintes regras mangle do iptables:
-A OUTPUT -p tcp -m tcp --sport 10011 -j MARK --set-xmark 0x64/0xffffffff
-A OUTPUT -p tcp -m tcp --sport 10011 -j LOG --log-prefix "(OUTPUT) fwmark 100: "
A idéia (que pode ser ruim) é que as comunicações <ovpn client> --> app connecting on port 10011
não sejam transmitidas através do túnel por causa da entrada da tabela de roteamento 0.0.0.0/1 via 192.168.88.9 dev tun0
, mas use a tabela de roteamento openvpn, que é uma "rede local" muito básica "tabela de roteamento.
Eu uso o mangle OUTPUT porque ele vem logo após o processo enviar os dados na porta 10011 e antes do POSTROUTING, então eu pensei que seria a corrente certa para usar.
Ao iniciar o openvpn em <ovpn client>
e tentar conectar na porta 10011, não consigo ver nenhum log do sistema gerado pela regra LOG iptables, enquanto com o openvpn parado, vejo os logs e tudo funciona bem.
Talvez o IP de origem do tráfego de saída para o aplicativo seja o da interface tun0, de modo que o roteamento seja quebrado em algum lugar.
Tags openvpn iptables arch-linux