Twice NAT機能

$Date: 2023/07/06 20:30:27 $


1. 仕様

Twice NATは、 RFC2663で定義されている用語で、 始点アドレスと終点アドレスの両方を書き換える方式を意味します。

この方式を使う典型例は、 下図のように、 プライベートアドレスが衝突しているネットワークを扱うときです。 プライベートアドレスの衝突は、企業の合併によるネットワークの再編で、 しばしば発生しています。 このケースで、Router 1の設定は変更できず、 Router 2の設定だけを変更できるものと想定します。 このとき、Router 2では、N1に対してN2のアドレスを偽り、 N2に対してN1のアドレスを偽る必要があります。

プライベートアドレスの衝突

従来のファームウェアで、 この要件を満たそうとするならば、 LAN1とLAN2の両方にNATを設定する必要があります。例えば、 LAN1で終点アドレスを変換し、LAN2で始点アドレスを変換するというように、 段階的に両方のアドレスを変換していきます。

しかしながら、この方法では、変換するタイミングに時間差があるため、 過渡的に始点アドレスと終点アドレスの両方が192.168.0.0/24になってしまいます。 従来のファームウェアでは、 ちょうどルーティングのタイミングでこのような状態になるので、 正しくルーティングができません。

新しいファームウェアでは、始点アドレスを変換するディスクリプターと、 終点アドレスを変換するディスクリプターを定義し、 それらを同じインタフェースに適用することで、この問題を回避します。 具体的には、次のような設定になります。

    ip lan2 nat descriptor 1 reverse 2
    nat descriptor type 1 nat
    nat descriptor address outer 1 172.16.2.1-172.16.2.254
    nat descriptor static 1 1 172.16.2.1=192.168.0.1 254
    nat descriptor type 2 nat
    nat descriptor address outer 2 172.16.1.1-172.16.1.254
    nat descriptor static 2 1 172.16.1.1=192.168.0.1 254

1行目のコマンドの「reverse」は、 NATディスクリプターを逆方向に適用するキーワードです。 従来の実装では、インタフェースの外側がNATの外側に対応していましたが、 このキーワードの後ろに設定したディスクリプターについては、 インタフェースの外側がNATの内側に対応します。 ヤマハルータでは、前者を順方向、 後者を逆方向と呼びます。 なお、「reverse」を使用してNATディスクリプターを双方向で適用させる場合は、 順方向と逆方向の両側のNATディスクリプターのタイプを「nat」にする必要があります。 Twice NATではIPマスカレードを使用することはできません。

上記の設定では、まず順方向で1のディスクリプターを適用し、 その後、逆方向で2のディスクリプターを適用します。 この設定にしたがえば、N1からはN2が172.16.2.0/24に見え、 N2からはN1が172.16.1.0/24に見えるようになります。例えば、N1からN2に対して、 次のようなパケットを送信すると、

    始点アドレス: 192.168.0.1
    終点アドレス: 172.16.2.1

N2に届くときには、次のように変換されることになります。

    始点アドレス: 172.16.1.1
    終点アドレス: 192.168.0.1

この機能追加に対応して、 ip INTERFACE nat descriptorコマンドの仕様を次のように変更します。

ip INTERFACE nat descriptor
... インタフェースへのNATディスクリプター適用の設定

[書式]
ip interface nat descriptor nat_descriptor_list [reverse nat_descriptor_list]
ip pp nat descriptor nat_descriptor_list [reverse nat_descriptor_list]
ip tunnel nat descriptor nat_descriptor_list [reverse nat_descriptor_list]
no ip INTERFACE nat descriptor [nat_descriptor_list [reverse nat_descriptor_list]]
no ip pp nat descriptor [nat_descriptor_list [reverse nat_descriptor_list]]
no ip tunnel nat descriptor [nat_descriptor_list [reverse nat_descriptor_list]]
[設定値および初期値]
interface ...
LANインタフェース名
nat_descriptor_list ...
空白で区切られたNATディスクリプター番号(1..2147483647) の並び(16個以内)
[説明]
適用されたインタフェースを通過するパケットに対して、 リストに定義された順番で、 NATディスクリプターによって定義されたNAT変換を順番に処理する。
reverseの後ろに記述したNATディスクリプターでは、 通常処理されるIPアドレス、ポート番号とは逆向きのIPアドレス、 ポート番号に対してNAT変換を施す。
[ノート]
インタフェースがLANである場合、 NATディスクリプターの外側アドレスに関しては、 同一LANのARP要求に対してARP応答する。
[初期値]
設定されない

▲ このドキュメントの先頭へ


2. 注意事項

IPマスカレードタイプのNATディスクリプターでは、Twice NAT機能を使用することはできません。
IPsecトンネル経由の通信では、Twice NAT機能を使用する場合でも、変換後の宛先IPアドレスがルーター自身のIPアドレスと同じパケットは転送されず破棄されます。このような場合は、トンネルの対向側でもTwice NAT機能を使用して異なるIPアドレスに見せかける、などの設定が必要となります。

▲ このドキュメントの先頭へ


3. 対応機種とファームウェアリビジョン

以下の機種およびファームウェアで、Twice NAT機能が動作します。

機種 ファームウェア
vRX VMware ESXi版 すべてのリビジョン
vRX Amazon EC2版
RTX3510
RTX1300
RTX1220
RTX830
NVR510
NVR700W
RTX1210
RTX5000
RTX3500
FWX120
RTX810
NVR500
RTX1200
SRT100
RT58i
RTX3000
RT107e Rev.8.03.42以降
RTX1500 Rev.8.03.37以降
RTX1100

▲ このドキュメントの先頭へ


4. 関連技術資料