ポート転送って DNAT ですよね.よく考えてみると.

Photo by hyt.

ポート転送って DNAT ですよね.よく考えてみると.

Edgerouter でこのところ遊んでてふと思ったんですが,家庭用のルータなんかで一般的に称される(俗称としてのものも含めて)

  • ポート転送
  • ポートフォワーディング
  • 穴あけ

って,よくよく考えてみると,DNAT(Destination NAT) だと思います.

DNAT って何なのかは,

DNAT【Destination NAT】とは、2つのTCP/IPネットワークの境界にある機器が双方のIPアドレスを自動的に変換するNAT(Network Address Translation)のうち、宛先アドレスを書き換える方式。ネットワーク境界のルータやゲートウェイなどが、両ネットワークの特定のアドレス同士を対応...

あたりを見れば分かる通り,パケットの送り先のアドレスを書き換えることです.つまり,インターネット側からルーターに届いたパケットのアドレスを,ローカルに設置してあるサーバーに書き換える(転送する)動作のこと.これ,そのまんま「ポート転送」です.

ただし,DNAT って,普通これ単体では使われません.SNAT とセットで使われます.

SNAT【Source NAT】とは、2つのTCP/IPネットワークの境界にある機器が双方のIPアドレスを自動的に変換するNAT(Network Address Translation)のうち、送信元アドレスを書き換える方式。ネットワーク境界のルータやゲートウェイなどが、両ネットワークの特定のアドレス同士を対応付け、パ...

何でかと言うと,サーバーにパケットが届くと,普通,サーバーはパケットの送信元に何か返信をします.このパケットがそのまま相手方に届くと,送信元は,ルーターのアドレスに対してパケットを送ったのに,なぜか,違うローカルのアドレスを持ったサーバーからの返信を受け取ることになり,結果的に,不審なパケットとしてこれを廃棄してしまいます.だから,ルーターを通るときには,送信元アドレスをルーターのアドレスに書き換えて送らないといけません.この書き換えは送信元を書き換えるので SNAT(Source NAT) と呼ばれる訳です.

と言うことは,ポート転送って,DNAT + SNAT の組み合わせだろ……ってことになりそうなんですが,家庭用のルーターの場合,NAPT

NAPT【Network Address Port Translation / IP masquerade / Port Address Translation】とは、LANとインターネットなど2つのTCP/IPネットワークの境界にあるルータやゲートウェイが、双方のIPアドレスとポート番号を自動的に変換してデータを中継...

で,ローカルの(任意の)端末のアドレスをルーターのアドレスに書き換えて送るよう設定されているのが普通です.だから,わざわざ SNAT を設定しなくてもきちんとローカルに設置されているサーバーの返信パケットの送信元もルーターのアドレスに書換えられてしまいます(そもそも NAPT って,SNAT の拡張ですし).

だから,「ポート転送の設定 = DNAT の設定」と考えて良いことになる訳ですね.

家庭用ルーターの中を見た訳じゃないので,ホントにこう設定されてるかどうかは分かりませんが,仕組み的にはこれで良いはずです.

まぁ,代理応答(Proxy ARP のことではない.たしか stone はこういう動作をするんだったと思う)で,同様の動作を実現しているものがあるのかもしれないので,絶対とは言い切れませんけどね.なお,stone については,

をご参照ください.

以上!

スポンサーリンク
large rectangle advertisement
スポンサーリンク
large rectangle advertisement