Eu configurei a seguinte conexão VPN s2s (no pfSense) que está funcionando em geral.
Infelizmente, consigo conectar (ping, netcat, ssh) apenas do cliente ao servidor, mas não de volta.
Se eu conseguir ssh normalmente, isso significa que o firewall não é o problema, certo? Já que os pacotes estão viajando em ambas as direções?
Como diagnosticar o problema com os meios de ferramentas de linha de comando?
Eu cometi um erro, não consigo netcat para trás. Mas posso ver o tráfego de ping com captura de pacotes em um cliente ao pingá-lo do servidor.
Além disso, adicionei rota explícita
route add -net 192.168.31.0/24 192.168.27.2
em um servidor.
Aqui está o que eu vejo ao descarregar pacotes no cliente ao pingar (.31.1) ou suas contrapartes de rede (.31.155) do servidor
$ tcpdump -n -i ovpnc2 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ovpnc2, link-type NULL (BSD loopback), capture size 262144 bytes
20:04:44.123925 IP 192.168.27.1 > 192.168.31.1: ICMP echo request, id 14862, seq 0, length 64
20:04:45.133435 IP 192.168.27.1 > 192.168.31.1: ICMP echo request, id 14862, seq 1, length 64
20:04:46.146100 IP 192.168.27.1 > 192.168.31.1: ICMP echo request, id 14862, seq 2, length 64
20:04:49.664935 IP 192.168.27.1 > 192.168.31.155: ICMP echo request, id 1295, seq 0, length 64
20:04:50.663422 IP 192.168.27.1 > 192.168.31.155: ICMP echo request, id 1295, seq 1, length 64
20:04:51.679393 IP 192.168.27.1 > 192.168.31.155: ICMP echo request, id 1295, seq 2, length 64
20:04:52.688367 IP 192.168.27.1 > 192.168.31.155: ICMP echo request, id 1295, seq 3, length 64
Aparentemente, um cliente final vê pacotes de ping, mas não responde, certo?
Um firewall certamente pode controlar a direção em que as conexões TCP podem ser estabelecidas, passando pacotes TCP com o sinalizador SYN definido, mas o sinalizador ACK não definido de uma maneira apenas.
O fato de você poder usar o SSH normalmente apenas indica que os pacotes sem nenhum sinalizador SYN ou com ambos os sinalizadores SYN e ACK definidos são permitidos em ambas as direções. Para estabelecer uma conexão TCP, um sistema deve enviar um pacote com o sinalizador TCP SYN ativado e o sinalizador ACK desativado, e um firewall pode diferenciá-los facilmente de outros pacotes.
Pings são pacotes ICMP, não pacotes TCP, então um firewall pode facilmente ter uma regra diferente para eles. Além disso, um firewall pode facilmente ter uma regra para "pedidos de ping" e uma regra diferente para "respostas de ping".