Descobri isso com base em informações que encontrei aqui . Para completar, vou repetir o que foi dito lá:
Este é um problema clássico. Quando você conecta seu servidor usando seu endereço IP público, os pacotes de retorno são roteados pela VPN. Você precisa forçar esses pacotes a serem roteados pela interface pública Ethernet. Esses comandos de regra / rota devem funcionar:
ip rule add from x.x.x.x table 128
ip route add table 128 to y.y.y.y/y dev ethX
ip route add table 128 default via z.z.z.z
Onde x.x.x.x
é o IP público do seu servidor, y.y.y.y/y
é a sub-rede do endereço IP público do seu servidor, ethX
é a interface pública do servidor e z.z.z.z
é o seu gateway padrão. Por exemplo:
ip rule add from 172.16.9.132 table 128
ip route add table 128 to 172.16.9.0/24 dev eth0
ip route add table 128 default via 172.16.9.1
É importante observar que o exemplo acima faz uso do IP público do servidor, mas como estou atrás de um roteador e todas as conexões para o servidor estão sendo encaminhadas pelo roteador, posso usar o IP local do servidor como visto no exemplo abaixo:
ip rule add from 192.168.1.10 table 128
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1
É provável que você deseje que essas regras persistam após uma reinicialização. Existem várias maneiras de fazer isso, uma delas é adicionar as regras ao seu arquivo etc/network/interfaces
na interface apropriada, conforme mostrado abaixo:
# Only packets related to connections initiated by this machine should go
# through the VPN. All other packets should be routed around the VPN. This
# allows this machine to be accessed via its public IP, but prevents its
# public IP from being exposed by services like transmission.
up ip rule add from 192.168.1.5 table 128
up ip route add table 128 to 192.168.1.0/24 dev enp4s0
up ip route add table 128 default via 192.168.1.1
down ip route del table 128 default via 192.168.1.1
down ip route del table 128 to 192.168.1.0/24 dev enp4s0
down ip rule del from 192.168.1.5 table 128