
クライアントとサーバーがあるとします。クライアントは NAT の背後にあり、サーバーはパブリックです。
クライアントはセッションサーバーと。
クライアントが 192.168.1.1 上にあり、NAT が 192.168.1.2 プライベート IP アドレス上にあるとします。また、NAT が 50.0.0.1 上にあり、サーバーが 50.0.0.2 パブリック IP アドレス上にあるとします。
クライアントは、UDP/IP (TCP/IP と似ているとよいのですが) パケットをサーバーに送信します。このパケットの送信元 IP は 192.168.1.1、送信元ポートは 1000 (ランダムに選択) で、宛先ポートは 50.0.0.2、宛先ポートは 2000 です。これは、サーバー上でアプリケーションが実行されるポートです。
TCP/IP パケットは NAT に到着し、送信元 IP が 50.0.0.1 に変更され、ポートは 5000 (ランダムに選択) に変更され、サーバーにルーティングされます。
サーバーは、宛先 IP 50.0.0.1、ポート 5000 で応答パケットを送信します。
NAT はパケットの宛先 IP を 192.168.1.1 に、宛先ポートを 1000 に変更します。
さて、サーバーは同じ IP 50.0.0.1 とポート 5000 に多数の UDP/IP パケットを送信し、すべてのパケットがクライアント 192.168.1.1 ポート 1000 に転送されるでしょうか?
もしそうなら、NAT のパブリック側のこのポート 5000 は、どのくらいの期間、上記のクライアントにパケットを転送しますか?
パケットのみ送信元IP 50.0.0.2、送信元ポート2000クライアントに転送されますか?
答え1
回答:
- はい。
- これはデバイスのNATの実装に依存します。Linuxでは、次のように調整できます。/proc/sys/net/ipv4/netfilter/ip_conntrack_udp_* を編集する
- はい - ただし、NAT によって認識される「関連」ポートがある場合は、関連するものを特定するために追加の NAT モジュールが使用されます (少なくとも Linux では)