2017年4月12日 いくつか説明追加
YAMAHA ルーターの「NAT」について勝手なまとめ
以下、NATなどの定義のみを扱っている。
定義したNATは、意図される動作のために、しかるべきインターフェイスに掛けられる必要がある。
しかしここではインターフェイスへの掛け方については扱っていない。
一口にNATと言っても、いくつか種類がある。
以下では、各種類ごとに主な特徴などをまとめている。
また、静的NATの特徴を使うことで、
NAT処理を行わない例外も設定できる。(一番最後)
新品価格 |
■ 静的/動的 NAT ■
静的NAT処理と動的NAT処理は同じNATで併用可能。
ただし、処理されるパケットの条件が両者で一致した場合は、静的NAT処理が優先される。
(1) 先ず、NAT定義でNATタイプを、nat に設定する。
nat descriptor type <NATディスクリプタ番号> nat
<NATディスクリプタ番号>・・・ このNAT定義を表すための任意の番号
(2) 静的NAT、動的NAT処理はそれぞれ下記のように記述が異なる。
(静的処理の設定)※1
外側アドレスと内側アドレスの1対1にバインドする(=静的処理)ための設定を次のように一行で記述する。
nat descriptor static <NATディスクリプタ番号> <テーブル番号> <外側アドレス=内側アドレス>
<NATディスクリプタ番号>・・・(1)で定義済み
<テーブル番号>・・・ 複数のバインド(下記)を設定可能なため、それらを識別するための番号
<外側アドレス=内側アドレス>・・・ 機構の内側と外側とで通過するパケットのアドレスが相互変換される
〇この相互変換は下記のようなイメージである。
(外側ネットワーク)←→外側アドレス | 静的 NAT | ←→(内側アドレス)
上の図を説明すると次のようになる。
内側(ソース)アドレスからやってきたパケット「←(内側アドレス)」は、
外側(ソース)アドレスに変換「←外側アドレス」され、外側ネットワークに送られる。
外側ネットワークから、外側(宛先)アドレスにやってきたパケット「→外側アドレス 」は、
内側(宛先)アドレスに変換「→(内側アドレス)」されて配送される。
(動的処理の設定)
”アウターアドレス”かつ”インナーアドレス”を設定する。
内側から外側へ向うパケットについてインナーアドレスにマッチすれば、
動的NAT処理が行われ、アウターアドレスに変換される。
逆方向についても自動的に変換される。
下記に挙げるマスカレードとは異なり、アドレスは1対1に相互変換される。
○アウターアドレス(外側アドレス)の設定
nat descriptor address outer <NATディスクリプタ番号> <値>
<値>・・・ アウターアドレス(アドレス、アドレス範囲)
アドレスの記述例
→ 172.30.0.1
→ 172.30.0.1,172.30.0.2,172.30.0.3
アドレス範囲の記述例
→ 172.30.0.1-172.30.0.3
→ 172.30.0.1-172.30.0.3,172.30.0.5-172.30.0.10
○インナーアドレス(内側アドレス)の設定
nat descriptor address inner <NATディスクリプタ番号> <値>
<値>・・・ インナーアドレス(アドレス、アドレス範囲)
特に指定しなければ、全範囲を指定する auto が暗黙的に設定される。
■ マスカレード ■
内側から外側へ向うパケットについてインナーアドレスにマッチすれば、
動的NAT処理が行われ、アウターアドレスに変換される。
逆方向についても自動的に変換される。
下記に挙げるマスカレードとは異なり、アドレスは1対多で相互変換される。
(「多」を区別するために、マスカレードでは外側アドレス+ポート番号を利用する。)
マスカレードでも、上記※1で記したNAT静的処理の併用が可能である。
このことは、同じ NATディスクリプタ番号で、static設定を記述できるということだ。
処理されるパケットの条件が両者で一致した場合は、静的NAT処理が優先される。
また、マスカレードでは、外側の特定のポートを、内側の特定のアドレス(とポート)に静的バインドさせられる。 静的マスカレードと言うが、ここでは扱わない。
マスカレードの定義の仕方
(1) 先ず、NAT定義でNATタイプを、masquerade に設定する。
nat descriptor type <NATディスクリプタ番号> masquerade
NATディスクリプタ番号・・・ このマスカレード定義を表すための任意の番号
(2) ”アウターアドレス”かつ”インナーアドレス”を設定する。
○アウターアドレス
nat descriptor address outer <NATディスクリプタ番号> <値>
値・・・ アウターアドレス(アドレス、アドレス範囲)
ただし、マスカレードが使えるのはそのうちの8個のみ。
アドレスの記述例
→ 172.30.0.1
→ 172.30.0.1,172.30.0.2,172.30.0.3
アドレス範囲の記述例
→ 172.30.0.1-172.30.0.3
→ 172.30.0.1-172.30.0.3,172.30.0.5-172.30.0.10
○インナーアドレス
nat descriptor address inner <NATディスクリプタ番号> <値>
値・・・ インナーアドレス(アドレス、アドレス範囲)
全範囲を指定する場合は、auto を設定する。
■ NAT-MASQERADE ■
動的NAT処理と、動的マスカレード処理とを組み合わせることができる。
この処理では、動的NAT処理が優先的に行われるが、外側アドレスが残り1つになったとき、
このアドレスを用いて動的マスカレード処理に自動的に切り替わる。
(マスカレード処理なので、残りアドレスが1個でも、1対多で相互変換が可能である。)
上記※1で記したNAT静的処理の併用も可能である。
同じ NATディスクリプタ番号で、static設定を記述できるということだ。
ただし、処理されるパケットの条件が両者で一致した場合は、静的NAT処理が優先される。
また、静的マスカレード処理のための記述も可能である。
(1) 先ず、NAT定義でNATタイプを、nat-masquerade に設定する。
nat descriptor type <NATディスクリプタ番号> nat-masquerade
NATディスクリプタ番号・・・ このマスカレード定義を表すための任意の番号
(2) ”アウターアドレス”かつ”インナーアドレス”を設定する。
上記参照(NATあるいはマスカレードのinnerとouterの設定方法を参照)
[NAT処理を行わない例外を設定する方法]
たとえば下のようにして定義する。
マスカレードのNATディスクリプタ番号が99であるとする。
例外とするパケットのソースアドレスが、192.168.10.5と、192.168.10.6だとすると、
これらのアドレスを内側アドレスとし、外側アドレスと一致させた静的NAT定義を作成する。
nat descriptor static 99 1 192.168.10.5=192.168.10.5 1内側からやってきたソースアドレスが192.168.10.5のパケットは、
nat descriptor static 99 2 192.168.10.6=192.168.10.6 1
静的NAT定義の内側アドレスに一致して静的NATでソースアドレスが書き換えられるものの、
定義された外側アドレスに変換後も、同じ192.168.10.5がソースアドレスのパケットのままである。
逆に、外側からやってきたパケット(あて先アドレスが192.168.10.5)は、
静的NAT定義の外側アドレスに一致して静的NATであて先アドレスが書き換えられるものの、
定義された内側アドレスに変換後も、同じ192.168.10.5があて先アドレスのパケットのままである。
静的NAT定義はマスカレード処理より優先して処理されるので、
内側⇔外側のどちらの方向へ通過してもパケットのアドレスが変化させないこういう仕組みを定義することで、
マスカレード処理しない例外として設定できるわけだ。
(参考)
・ NATディスクリプタ機能 概要
< http://www.rtpro.yamaha.co.jp/RT/docs/nat-descriptor/nat-abstruct.html > 2014年10月14日