O que há de errado com as regras de iptables da NordVPN? A equipe deles não consegue resolver o problema

O que há de errado com as regras de iptables da NordVPN? A equipe deles não consegue resolver o problema

O aplicativo NordVPN para Linux possui um recurso de lista de permissões de portas e sub-redes. É habilitado com estes comandos (para minha porta e sub-rede):

nordvpn whitelist add subnet 192.168.1.0/24
nordvpn whitelist add port 22

No entanto, quando esse dispositivo está conectado à VPN, não consigo acessá-lo por SSH de outro dispositivo na minha sub-rede. Escrevi para o suporte da NordVPN e eles responderam:

Atualmente, estamos tendo alguns problemas com o aplicativo NordVPN para Linux em relação à lista de permissões de portas e sub-redes.

Eles não tinham conselhos úteis para oferecer. Dei uma olhada nas regras do iptables. Eles parecem bons para mim, mas quando liberei todas as regras (enquanto estava conectado à VPN), consegui fazer a conexão SSH com este dispositivo a partir do meu outro dispositivo local. Isso indica que as regras não estão funcionando corretamente.

As regras da NordVPN são:

# Generated by iptables-save v1.8.4 on Sun Apr 12 16:11:29 2020
*filter
:INPUT DROP [86:19526]
:FORWARD ACCEPT [0:0]
:OUTPUT DROP [103:7935]
-A INPUT -i nordlynx -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 89.87.71.71/32 -i lo -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.0/8 -i lo -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 89.87.71.71/32 -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 89.87.71.71/32 -i nordlynx -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.5.0.0/16 -i nordlynx -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.0/8 -i lo -p udp -m udp --dport 22 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -i lo -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -i lo -p udp -m udp --dport 6568 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -i lo -p tcp -m tcp --dport 6568 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -i lo -p udp -m udp --dport 7070 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -i lo -p tcp -m tcp --dport 7070 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -i lo -p udp -m udp --dport 51820 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i lo -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -p udp -m udp --dport 22 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -p udp -m udp --dport 6568 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -p tcp -m tcp --dport 6568 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -p udp -m udp --dport 7070 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -p tcp -m tcp --dport 7070 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -p udp -m udp --dport 51820 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -i eth0 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -d 103.86.99.99/32 -o lo -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 103.86.96.96/32 -o lo -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 103.86.99.99/32 -o nordlynx -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 103.86.96.96/32 -o nordlynx -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -o nordlynx -j ACCEPT
-A OUTPUT -d 89.87.71.71/32 -o lo -j ACCEPT
-A OUTPUT -d 127.0.0.0/8 -o lo -j ACCEPT
-A OUTPUT -d 89.87.71.71/32 -o eth0 -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -o eth0 -j ACCEPT
-A OUTPUT -d 89.87.71.71/32 -o nordlynx -j ACCEPT
-A OUTPUT -d 10.5.0.0/16 -o nordlynx -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -o lo -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -o eth0 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Sun Apr 12 16:11:29 2020

Eu os lavei com:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

Minha conexão SSH funcionou conforme desejado quando as regras foram liberadas. (Restaurei as regras do NordVPN reiniciando-o.)O que precisa mudar nas regras acima para que este dispositivo aceite conexões SSH de entrada (porta 22) da LAN?

Informações adicionadas em resposta ao comentário:

# ip -br address
lo               UNKNOWN        127.0.0.1/8
eth0             UP             192.168.1.3/24
nordlynx         UNKNOWN        10.5.0.2/16

# ip rule
0:      from all lookup local
32764:  from all lookup main suppress_prefixlength 0
32765:  not from all fwmark 0xca6c lookup 51820
32766:  from all lookup main
32767:  from all lookup default

# ip route
default via 192.168.1.1 dev eth0 proto dhcp metric 20100
10.5.0.0/16 dev nordlynx proto kernel scope link src 10.5.0.2
192.168.1.0/24 via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.3 metric 100

ip route show table 51820
default dev nordlynx scope link

Estou usando a tecnologia wireguard da NordVPN (nordlynx). Mas o problema existe ao usar a tecnologia openvpn em vez do wireguard. Testei dos dois jeitos.

Responder1

Eu tive um problema semelhante, tente colocar na lista de permissões192.168.0.0/16em vez de 192.168.1.0/24. Isso funcionou para mim na versão 3.8.10.

David, do suporte da NordVPN, me fez tentar, por precaução, e funcionou. Ele disse que não sabia explicar o porquê, porque em teoria /24deveria ter funcionado, mas como está funcionando para mim agora não posso reclamar muito.

Além disso, consegui remover a porta 22 da minha lista de permissões sem quebrar o SSH.

informação relacionada