NordVPNのiptablesルールの何が問題なのでしょうか?スタッフは問題を解決できません

NordVPNのiptablesルールの何が問題なのでしょうか?スタッフは問題を解決できません

NordVPN for Linux アプリには、ポートとサブネットのホワイトリスト機能があります。これは、次のコマンドで有効になります (私のポートとサブネットの場合)。

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

しかし、そのデバイスが VPN に接続されている場合、サブネット内の別のデバイスから SSH でアクセスすることはできません。NordVPN サポートに問い合わせたところ、次のような返信がありました。

現在、Linux 用の NordVPN アプリケーションで、ポートとサブネットのホワイトリストに関する問題が発生しています。

彼らから有益なアドバイスはありませんでした。iptables ルールを見てみました。問題ないように見えますが、すべてのルールをフラッシュすると (VPN に接続している間)、他のローカル デバイスからこのデバイスに SSH 接続できるようになりました。これは、ルールが正しく機能していないことを示しています。

NordVPN のルールは次のとおりです。

# 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

私はそれらを次のようにフラッシュしました:

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

ルールがフラッシュされたとき、SSH 接続は期待どおりに機能しました。(NordVPN を再起動してルールを復元しました。)このデバイスが LAN からの着信 SSH 接続 (ポート 22) を受け入れるようにするには、上記のルールで何を変更する必要がありますか?

コメントへの返信として追加された情報:

# 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

私は NordVPN の Wireguard テクノロジー (nordlynx) を使用しています。しかし、Wireguard の代わりに OpenVPN テクノロジーを使用すると問題が発生します。両方の方法をテストしました。

答え1

同様の問題がありました。ホワイトリストを試してみてください192.168.0.0/16の代わりに192.168.1.0/24。これはバージョン 3.8.10 では機能しました。

NordVPN サポートの David が念のため試してみるように勧めてくれたところ、うまくいきました。理論上は/24うまくいくはずなので理由は説明できないとのことでしたが、今のところうまくいっているのだから文句は言えません。

また、SSH を壊すことなく、ホワイトリストからポート 22 を削除することができました。

関連情報