NATはルーティングの前に行われる

NATはルーティングの前に行われる

現在、Proxmox を使用してプライベート クラウド クラスターを構築しています。クラスターには、ヘッド ノードと 2 つのコンピューティング ノードが含まれています。

私のヘッド ノードは、NAT サーバーと openvpn サーバー、および 3 つの NIC (送信用に 1 つ、コンピューティング ノードごとに 1 つ) をホストしています。NAT を使用すると、両方のコンピューティング ノードとインターフェイスできます。両方のコンピューティング ノードで、ルーターあたり約 30 個の VLAN を持つルーターをホストしています。

私の目標は、ルーターに接続するときに VPN クライアントからアドレスを確認できるようにすることです。現在、VPN を使用してヘッドに接続し、ルーターに ping または ssh を試みると、ヘッド ノードの IP アドレスからの接続として表示されます。ご協力いただければ幸いです。

私のルートは次のとおりです。

default via *.*.*.1 dev eno1 onlink 
10.10.1.0/24 via 10.10.1.2 dev tun0 
10.10.1.2 dev tun0 proto kernel scope link src 10.10.1.1 
*.*.*.0/25 dev eno1 proto kernel scope link src *.*.*.46 
192.168.0.0/19 via 192.168.77.1 dev vmbr0 
192.168.32.0/19 via 192.168.76.6 dev vmbr1 
192.168.76.0/24 dev vmbr1 proto kernel scope link src 10.10.1.1
192.168.77.0/24 dev vmbr0 proto kernel scope link src 192.168.77.1 

NAT ルール (現在は、firewalld を使用しています):

-A POST_public_allow ! -o lo -j MASQUERADE

答え1

あなたが示したNATルールは、カスタムチェーンは、他のテーブル内の他の (標準) チェーンから呼び出されると思われます (テーブルPOSTROUTINGのと思われますnat。 を使用して確認できますiptables -t nat -L POSTROUTING)。

発生している問題は、ヘッドノードとコンピューティングノードを接続しているインターフェースにマスカレードが適用されていると思われます。

これに対処する方法は、ヘッドノードがインターネットに接続するために使用するインターフェースにのみ SNAT を設定することです。

ただし、1つの問題に注意してください。ヘッドノードにアクセスするためにVPNを使用しているという事実(質問を正しく理解していれば)は、ヘッドノードで過度のマスカレードを無効にすると、コンピューティングノードが送信しているパケットを見ることを意味します。以上VPN は、送信プログラムが配置されているネットワークから来ているものとして扱われます。プライベート サブネットであると考えられるため、次の点を確認する必要があります。 - ソース ネットワークと、ヘッド ノードとコンピューティング ノードを接続するネットワークの両方に異なるアドレスがある (また、トンネルが使用するサブネットとは区別されている必要があります) - コンピューティング ノードに、ソース ネットワークのルート ルールがある (そこ宛てのパケットをヘッド ノードに送信するため) - ヘッド ノードで IP 転送が有効になっている必要があります。

関連情報