検証環境
- C891FJ-K9
- Version 15.8(3)M9
NAT における add-route オプション
outside のアドレスを変換する ip nat outside source 設定において add-route
オプションを指定すると、ネクストホップアドレスを outside global アドレスとした outside local アドレス宛のスタティックルートが自動でルーティングテーブルにインストールされます。
例えば以下のスタティック NAT 設定をしたとします。
ip nat outside source static 10.0.1.10 10.0.2.100 add-route
すると以下のスタティックルートがインストールされます。
S 10.0.2.100/32 [1/0] via 10.0.1.10
ただし、add-route
オプションを指定してもスタティックルートがインストールされないケースがあります。以下で説明します。
スタティックルートがインストールされないケース
以下のネットワーク構成を考えます。

NAT Router において端末B のアドレス 10.0.1.10 を 10.0.2.100 に変換する outside static nat が設定されていて add-route オプションが指定されています。
NAT Router のコンフィグは以下のようになっています。(※関連コンフィグの抜粋)
interface FastEthernet0
ip address 10.0.0.254 255.255.255.0
ip nat outside
!
interface GigabitEthernet8
ip address 10.0.2.1 255.255.255.0
ip nat inside
!
ip nat outside source static 10.0.1.10 10.0.2.100 add-route
ip route 0.0.0.0 0.0.0.0 10.0.0.1
このときの NAT Router のルーティングテーブルは以下のようになっています。
S* 0.0.0.0/0 [1/0] via 10.0.0.1
10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C 10.0.0.0/24 is directly connected, FastEthernet0
L 10.0.0.254/32 is directly connected, FastEthernet0
C 10.0.2.0/24 is directly connected, GigabitEthernet8
L 10.0.2.1/32 is directly connected, GigabitEthernet8
outside static nat 設定で add-route を指定しているため以下のルートがインストールされることが期待されますが、実際にはインストールされていません。
S 10.0.2.100/32 [1/0] via 10.0.1.10
【原因】outside global 宛のルートが無いとインストールされない
add-route を指定しても、outside static nat 設定で追加されるルートのネクストホップアドレスとなる outside global アドレス宛のルートが存在しないとルートはインストールされません。
上記例では、10.0.1.10 が outside global アドレスのため、10.0.1.10 宛のルートが存在しない場合は add-route によるスタティックルートのインストールはされません。
【注意】デフォルトルートは判定の対象外
上記の例では NAT Router にはデフォルトルートが設定されているため、NAT 設定の outside global アドレスである 10.0.1.10 宛のアドレスがあると判断されるのではと考えると思いますが、デフォルトルートはこの判定においては対象外となり、個別のルートが必要になります。
【解決方法】outside global 宛のスタティックルートを設定する
outside global を宛先に含むスタティックルートを設定することで解決できます。例えば以下のスタティックルートを NAT Router で設定します。
ip route 10.0.1.10 255.255.255.255 10.0.0.1
※上記は宛先を /32 で設定していますが、/24 等でも OK です
上を設定後のルーティングテーブルは以下のようになります。
S* 0.0.0.0/0 [1/0] via 10.0.0.1
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
C 10.0.0.0/24 is directly connected, FastEthernet0
L 10.0.0.254/32 is directly connected, FastEthernet0
S 10.0.1.10/32 [1/0] via 10.0.0.1
C 10.0.2.0/24 is directly connected, GigabitEthernet8
L 10.0.2.1/32 is directly connected, GigabitEthernet8
S 10.0.2.100/32 [1/0] via 10.0.1.10
outside static nat 設定で追加される想定の以下のルートがインストールされています。
S 10.0.2.100/32 [1/0] via 10.0.1.10
Local Route として認識されてしまうケース
Outside static NAT で設定している Outside local アドレスが NAT ルータの connected セグメントに含まれる場合、add-route
を指定してもスタティックルートではなく Local Route としてルーティングテーブルにインストールされてしまうケースがあります。
詳しくは以下のページを確認してください。

参考資料
