web-dev-qa-db-ja.com

NAT / PAT理論上の質問

次の単純なネットワークが与えられた

ネットワークhttp://www.vbforums.com/picture.php?albumid=18&pictureid=47

[IMG] http://www.vbforums.com/picture.php?albumid=18&pictureid=47 [/ IMG]

ネットワークに接続されているPCをポート番号で識別できるようにNAT/PATプールを構築することは可能でしょうか。各ユーザーにパブリックIPを割り当てると、識別できることを理解しています。私がやろうとしているのは、パブリックIPを節約することですが、パブリックネットワークからユーザーを識別する機能を維持することです。回答がベンダー固有の場合は、問題ありません。よろしくお願いします。

1
dbasnett

Ciscoルーターでは、次のことができます。

ipnatログ変換syslog

ロギング<syslogサーバーIP>

これにより、各翻訳がsyslogサーバーに送信されます。エントリは次のようになります。

4月29日21:25:06rgw-01 233:000238:4月29日21:25:05.858 EDT:%IPNAT-6-作成:tcp 192.168.0.254:56334 68.175.123.94:56334 1.1.1.1:80 1.1.1.1: 80

これは、ルーターの「show ipnattranslation」の出力をミラーリングします。翻訳が作成および削除されると、ログメッセージが表示されます。

1
Jamie

あなたがしなければならないのは、IPがどのポートにマップするかを見るためにnatデバイス上の現在のnat変換テーブルを見るだけです。たとえば、12.12.12.12のパブリックIPにpatを介してgoogleに接続しているCiscoルーター192.168.1.82では:

router1#show ip nat trans 
tcp 12.12.12.12:33949  192.168.1.82:33949 66.249.80.104:80 66.249.80.104:80

更新:
私は今理解していると思います。私はこれの実装を知りませんが、なぜそれが機能しないのかわかりません。理論的には、各内部IPを異なるポート範囲にマップできます。過負荷は内部ip/tcpsrcポートコンボを外部ip/tcp送信元ポートに変換するため、各内部IPに特定の外部送信元ポート範囲を割り当てることができます(以前はudpポートの場合もあります)。例えば:

32000-33999 public ip's tcp/udp src ports on ip 12.12.12.12. will be used for 192.168.1.2
34000-35999 public tcp/udp ports on ip 12.12.12.12. will be used for 192.168.1.3

オーバーロードの問題は、セッションを識別するための通常の4項目の組み合わせ(送信元IP、送信元ポート、宛先IP、宛先ポート)の代わりに、3に制限されるため、可能な接続を制限し始めることです。セッション数を制限するポート範囲を制限することにより、これらの1つをさらに制限します。したがって、上記の例では、ip192.168.1.2は特定のパブリックIPに最大2000の接続しか持てませんでした。オーバーロードコードがこのように機能するかどうかもわかりません。ソースポート/ソースIP(ここではリターンパケットについて説明しています)の代わりにソースポートだけを使用して変換する可能性があるためです。

シーケンス番号のトリックでそれを回避できるかもしれませんが、それは多くのtcpのやり直しを必要とし、セキュリティホールを開くと思います。これが実装されている場合、私は少し驚かれることでしょう。 NATは、IP不足に役立つと思う一種のハックです。PAT/オーバーロードは、これをさらにハックするものであり、ハックのハックになります。シーケンス番号によるセッションの識別を開始するにはその場合、ハックのハックになります。その時点で、IPv6は本当に時間です:-)

1
Kyle Brandt

さて、これがネットワークからのアウトバウンドの一般アクセス専用である場合、本当に必要なのは標準のNAT-T + DHCPボックスだけです。 DHCPを使用すると、静的DHCPを実行するか、リース時間を長くして、内部のマシンが同じアドレスを維持できるようにすることができます。そうすれば、誰が誰であるかをいつでも知ることができます。

一般的なアウトバウンドアクセスを実行しているときに、パブリック側のポートを使用して内部マシンを識別する場合の問題は、ユーザーが接続しているサーバー上でリターンポートがランダムに生成されることです。したがって、それがどうなるかを実際に追跡または推測する方法はありません。

インバウンド接続を行っている場合は、選択した内部アドレスへのPAT /ポート転送を設定するだけですが、ここではそうではありません。

ソリューションに関しては、市場に出回っているほとんどすべてのものがこれを実行します。LinuxではIPtables + dhcpdをセットアップすることも、BSDマシンではPF + dhcpdソリューションをセットアップすることもできます。

0
Ali Chehab