PAT(NAPT)の動作について

このQ&Aのポイント
  • 内部からの通信では問題なく変換が行われるが、外部からの通信ではプライベートIPとポートへの変換ができない場合がある。その場合、どのような技術や対策方法があるのか?
  • 複数の内部PCからPATで外部へアクセスする場合、ポート番号の重複によってアクセス不能になる可能性がある。しかし、ポート番号の重複に関してどのように処理されているのか?
回答を見る
  • ベストアンサー

PAT(NAPT)の動作について

ネットワークの書籍を読むと 内部PCから外部へアクセスする際、送信元IPとポート番号がルーターのNATテーブルに保持され その変換テーブルを元にして、PATにおけるIPとポートの変換が実現されるとあるのですが いくつか疑問がありましたので質問させてください (1)内部ネットワーク側から通信を開始したなら問題なく通信出来ると思いますが 外部サーバーから始まる通信だとNATテーブルに情報がないためプライベートIPとポートに変換出来ないのではないでしょうか? その場合は、どういう技術や対象方法があるのでしょうか? (2)例えば複数の内部PCからPATで外部へアクセスする場合 内部PCのポート番号は65535までのポートをランダムに使用することになると思います。 しかし、もし内部PCが使用するポートが重複してしまった場合はアクセス不能になってしまわないのですか? つまり、外部サーバーから見ると、10.0.1.1:65535、10:0.1.1:65534のようにポート番号だけ変えてアクセスしてくるわけですし、もしポート番号が重複してしまうと変換出来ないと思います。 ポート番号はそれぞれのPCが独自に設定するものなので重複することもありえると思うのですがどのように処理されているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

>(1)内部ネットワーク側から通信を開始したなら問題なく通信出来ると思いますが >外部サーバーから始まる通信だとNATテーブルに情報がないためプライベートIPとポートに変換出来ないのではないでしょうか? >その場合は、どういう技術や対象方法があるのでしょうか? はい。変換できませんので通信不可です。 対策としてはポートフォワーディングとか言われるものになりますね。 # ルータのメーカによって、微妙に呼び方が変わります。 「ポート解放」「ポート転送」「仮想サーバ」等々……。 ルータのWAN側に届いたパケットを事前に設定したLAN側IPの特定のポートに転送します。 # TCPならこの後内部テーブルに「接続済み」などのステータスとともに状態を持ち続けるでしょう。 で、ポートフォワーディングの設定はルータの方に静的に設定する場合と、UPnPで動的に変更を受け付ける場合があります。 さらに、DMZとして全ポートのパケットを転送する。という設定もあります。 >(2)例えば複数の内部PCからPATで外部へアクセスする場合 >内部PCのポート番号は65535までのポートをランダムに使用することになると思います。 >しかし、もし内部PCが使用するポートが重複してしまった場合はアクセス不能になってしまわないのですか? ルータはクライアント側のIPアドレスとポート番号をセットで保持しています。 PC-A(192.168.1.1)とPC-B(192.168.1.2)が外部の同じポート(80番)にアクセスした場合の状態を見ると…… PC-A(送信元ポート33333)=>ルータのLAN側(送信元ポート33333)=ルータのWAN側(送信元ポート12345)=>サーバ PC-B(送信元ポート33333)=>ルータのLAN側(送信元ポート33333)=ルータのWAN側(送信元ポート12346)=>サーバ というような変換を行います。 ルータはクライアント側のIPアドレスと送信元ポートのセットで記憶していますので、サーバ側からの送信先ポート12346のパケットはPC-Bへ送信先ポート33333に書き換えて転送します。 同様にサーバ側からのサーバ側からの送信先ポート12345のパケットはPC-Aへ送信先ポート33333に書き換えて転送します。

kyotokyo
質問者

お礼

質問1 いわゆる「ポート解放」ってやつですね。 静的にルータのNATテーブルを設定するのは想像がつきますが 動的にUPnPを使った方法もあるのですね。もっとも勉強したいと思います。 質問2 非常によくわかりました。 ルーターの外部側インターフェイスと内部側インターフェイスで別のポートを使用するんですね。 つまり内部PCのポート番号がそのまま外部へ出ていくのではなくて ルーター側が独自にポート番号を割り振るため重複は起こらないということですね。 目から鱗です。わかりやすい説明ありがとうございました。

その他の回答 (1)

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

(1) 外部からのアクセスはポートフォワーディングにより転送されます。 この場合、外部に公開したくないセグメントには転送せずにDMZ等のセグメントに転送するのが一般的です。 http://lan-pc.pc-beginner.net/bb_router/bb_router_port.html (2) 重複しないように割り振ります。ポート番号を決めるのはアプリケーションやPCではなくてNAPTするルータ等です。

kyotokyo
質問者

お礼

質問1 勉強になるサイトありがとうございます。 さっそくそのサイトで勉強したいと思います。 質問2 ルーターの内部と外部インターフェイスで別のポート番号を使用するんですね。 内部PCのポート番号がそのまま外部へ出ていくと思ってましたのでようやく理解出来ました。

関連するQ&A

  • IPテーブルに情報がなくても、LAN外部から内部へアクセスできる理由

    今晩は、ネットワークを勉強中の初心者です、宜しくお願いします。 インタネットでは、LAN内部から外部に出て行った情報がIPテーブルに保存されているため、サーバーからの情報は、 LAN内部にアクセス出来るのは当然ですが、自宅でサーバーを立てた場合等には、外部から内部へのアクセスは、IP テーブルにはそのような情報は持っていないはずなのに、どのようにして外部からはローカルアドレスにNAT変換、或 いはポートが決定されるのでしょうか。 色々と参考書等を調べてもそのような内容について記述しているものが見当たりません、宜しくお願いします。

  • 静的IPマスカレードとPATの混在について

    静的IPマスカレードとPATの勉強をしていて疑問に思ったので質問させていただきます。 間違っていたら指摘していただけるとありがたいです。 HTTPサーバー:192.168.0.1   ↓↑ ルータ(外部側IP):1.0.0.1   ↓↑ クライアントPC:1.0.0.2 クライアントPCがサーバーへアクセスする場合 まずは、1.0.0.1:80を宛先IPとしてルータにアクセスし ルータは静的IPマスカレード(ポート解放)にもとづいて 192.168.0.1のサーバーへリクエストを転送すると思います。 次にサーバーはHTTPレスポンスをクライアントに返すわけですが 当然ルータにはPATが設定されているので、クライアントPCへの送信元IPは1.0.0.1:22222など PATによってポート番号がルータに書き換えられてしまうと思います。 そうするとクライアントPC側から見ると 1.0.0.1:80を宛先IPとしてリクエストを送ったのに 1.0.0.1:22222など別のポート番号からレスポンスが返ってきます。 これだとエラーにならないのでしょうか? それとも静的IPマスカレードとPATが混在している場合 静的IPマスカレードの設定が優先されてサーバーからクライアントへのレスポンスも 1.0.0.1:80を送信元IPとして返すことが出来るという理解でいいのでしょうか?

  • NATとNAPTについて教えてください

     こんにちは、ネットワーク勉強中の初心者です、宜しくお願いします。  NATとNAPTについて教えてください  「NATの場合には、ルータ-はローカルアドレスからグローバルアドレスへの変換は、LAN内 の1個のPCからしか変換できない、そのためにPCのポート番号と組合せたNAPTというシステ ムがある」と参考書には書いてありますが、NATの場合でも、PCのローカルアドレスと組合せれ ば、NAPTと同じように複数のPCに対応出来る機能を持たす(1個のグローバルアドレスと複数 のローカルアドレスを組合せる)ことは出来るのではないでしょうか。  以上、宜しくお願いします。

  • NAPTの機能とセキュリティについて

    NATとNAPTの違いについて調べていたのですがいくつかわからないことがあるので教えてください。 NAPTはNATの発展版?だと思いますが、現状NATはNAPTに置き換えられ、もう使われていない技術なのでしょうか? NAPTではなく、NATでないといけないというパターンはあるのでしょうか? また、NAPTを使用した場合、外部から内部のPCにアクセスすることはできないのでしょうか? アクセスされてしまうとすればどのような方法が考えられるでしょうか? よろしくお願いいたします。

  • ファイアウォールのNAT設定について

    JuniperのNetScreen-5GTを利用しています。 以下の状態を実現したいのですが、お知恵を貸していただけませんでしょうか。 ・ 複数の外部URLと複数の内部サーバをNAT変換で結びつける (URLと内部サーバは1:1対応) ・ 用意するグローバルIPは1つ ・ ユーザが入力するURLにポート番号はつけさせたくない グローバルIPは1つで、www.service1.jpにアクセスした場合は内部サーバ1を表示、www.service2.netにアクセスした場合は内部サーバ2を表示といった具合です。 グローバルIPを増やすとか、URLにポート番号を付けるなど条件を崩せば可能なことはわかるのですが、この条件だとどのような設定になるのかわかりません。 どなたかわかる方、教えていただけませんでしょうか。 NetScreen-5GTに限らず、概念的な説明や、キーワードのご提示でも構いません。宜しくお願い致します。

  • Windows 2000サーバでICSを使っていますが・・・

    Windows2000サーバでICS(インターネット接続共有)を使ってNAT変換をしています。 その状況で、LAN内でHTTPサーバやFTPサーバを立て外部からアクセスしたいと思っていますが、うまく機能しません。(キャプチャするとそのポートにTCPでつなぎに行こうとするとRST,SYNが返ってきます。) 例えば外部から80番ポートへアクセスした場合、それをLAN内のIPアドレス、ポート番号に変換してくれるような設定はあるのでしょうか? また、そのようなことができるソフトウェアや他の策があれば教えてください。

  • ルーターの設定について教えてください。

    ヤマハルーターRTX1000で固定IPアドレス8個をNAT機能を使い プライベートアドレスで運用しています。 外部から内部のサーバーにグローバルアドレスでアクセスするとつながるのですが、 内部から内部のサーバーにグローバルアドレスでアクセスするとつながりません。 内部から内部のサーバーにアクセスするにはプライベートIPでのアクセスしかできません。 現在テストのために下記のような設定にしております。 ip route default gateway 192.168.1.1 ip lan1 address 192.168.2.1/24 ip lan2 address 192.168.1.2/24 ip lan2 nat descriptor 1 nat descriptor type 1 nat nat descriptor address outer 1 192.168.1.10-192.168.1.12 nat descriptor address inner 1 192.168.2.10-192.168.2.12 nat descriptor static 1 1 192.168.1.10=192.168.2.10 1 nat descriptor static 1 2 192.168.1.11=192.168.2.11 1 nat descriptor static 1 3 192.168.1.12=192.168.2.12 1 内部のサーバーにエイリアスのipアドレスを設定するとpingは通るようになりましたが、 telnetなど他の通信はできませんでした。 内部からグローバルアドレスで内部のサーバーに接続するにはどうすればよいでしょうか? よろしくお願いします。

  • NATの外から内側へアクセスされた場合のポート番号

    家のネットワーク環境は、NATを経由してインターネットに 繋がっています。そこへ、外部へ持ち出す関係上ファイアウォールを インストールしたノートPCを接続したところ、外部からのアクセスが ありましたとのメッセージが記録されました。 NATがあると、内から外へのアクセスはそのままで、外から内への アクセスは難しくなると認識していたのですが、その点について 教えてください。 1. 外部からNATルーターを超えてアクセスできるのでしょうか? ポート開放は行っていません。 2. また、できないとすると、この状態はNATがクラックされていると 考えるべきでしょうか? 3. アクセスされたPC上で感知できているポート番号は、外部から アクセスしているポート番号とは異なっているのでしょうか? つまり、攻撃の手口の解明には使えないのでしょうか?

  • ルータ設定変更について【ネットワーク】

    ルータ設定についてなのですが、外部から自宅サーバへの通信設定がうまくいきません。。。 自宅のネットワーク機器はONUと無線ルータがあります。 外部との境界はONUになるので、ONUで以下の設定をしました。 設定:ポート80番と443番での通信のみ、グローバルIPから自宅サーバのローカルIPへのNAT変換をして通信許可。いわゆるIPマスカレード、ポートマッピング。 サーバ上のファイアウォールも80と443は通信許可済みです。 ですが、この状態でポート開放ができておりません。(スマホからpingが通らない。C-MANでも確認済み。) ファイアウォールを切った状態でも通信ができなかったのでONUで設定が間違っているか、ルータ側にも設定がいるのか、という線で考えてます。 どなたかアドバイスをお願いします。

  • シスコ社製ルータでプールを使用したPATの質問

    CCNA試験を受けるためPATの学習をしています。 PATの設定をするときに、内部ローカルアドレスを標準アクセスリストで設定しているのですが、 標準アクセスリストの学習をしていたときに、ip access-grourp というコマンドで、インターフェースに適用していました。しかし、PATの設定では、ip access-grourp というコマンドがでてきません。 コマンドを以下に示します。 access-list 1 permit 192.168.1.0 0.0.0.255 ip nat pool test 172.16.0.1 172.16.0.6 netmask 255.255.255.248 ip nat inside source list 1 pool test overload int fa0/0 ip nat inside int fa0/1 ip nat outside 設定に必要なルーティングなど一部のコマンドは省略しています。 上記のコマンド例で、ip access-grourp というコマンドがなぜ必要ないのかお分かりの方 教えてください。