Não é possível SSH via encaminhamento da porta do roteador quando o cliente openvpn está em execução

0

Eu tenho um PC debian na minha rede doméstica. Eu uso um serviço DNS dinâmico para que eu possa SSH para o PC de outro lugar na internet. Eu também uso o encaminhamento de porta no roteador, então mapeio (digamos) 2222 no endereço dinâmico para 22 no PC.

Isso tudo funciona bem, até eu executar um cliente openvpn no PC. Então não consigo fazer a conexão SSH.

No entanto, eu posso fazer uma conexão SSH a partir de qualquer outro PC na rede doméstica direto para o PC debian. É apenas a porta do roteador que não funciona.

Por que o PC vê a conexão do roteador para a porta 22 diferentemente de como ela vê uma tentativa de conexão direta para a porta 22? E por que a conexão não funciona? Ideias bem-vindas!

    
por xorsyst 20.12.2016 / 16:01

1 resposta

1

Rotas

A maioria dos softwares VPN é inteligente o suficiente para configurar rotas que ignoram o tráfego de rede local (LAN), e é por isso que o SSH funciona em outros computadores da sua rede doméstica.

No entanto, todo tráfego destinado à Internet ainda é roteado por meio da interface VPN por padrão. Isso inclui conexões via encaminhamento de porta. Assim, o tráfego SSH entra pelo seu roteador, mas depois é respondido pela VPN (o que estraga tudo, já que o servidor VPN tem um endereço IP diferente).

Uma maneira de resolver isso seria configurar algumas regras de firewall do iptables em seu PC debian para enviar o tráfego SSH pela interface de rede normal, e não pela interface VPN.

Exemplo

Eu tentei adaptar esta resposta a essa situação (supondo que seu roteador doméstico seja 192.168.0.1 e seu PC debian é 192.168.0.20):

Edit /etc/iproute2/rt_tables and add a new table by appending the following line:

200 eth-route

You then need to configure your new routing table named eth-route with a default gateway and create rules to conditionally send traffic to that table.

# Populate secondary routing table
ip route add default via 192.168.0.1 dev eth0 table eth-route
# Anything with this fwmark will use the secondary routing table
ip rule add fwmark 0x1 table eth-route
# Mark these packets so that iproute can route it through eth-route
iptables -A OUTPUT -t mangle -o tun0 -p tcp --dport 22 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o eth0 -p tcp --dport 22 -j SNAT --to 192.168.0.20

Tornar isso automático envolveria adicionar esses comandos ao final de /etc/rc.local ou fazer com que openvpn faça essas coisas quando for iniciado.

Cruze os dedos ...

    
por 20.12.2016 / 18:20