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

Networks
Photo by hyt.

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

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

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

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

DNAT って何なのかは,

Not Found

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

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

Not Found

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

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

Not Found

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

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

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

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

Simple Repeater `stone'

をご参照ください.

以上!

NetworksServer
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました