【Cisco】NAT で add-route を設定してもスタティックルートが追加されないときの確認ポイント

ルータ

検証環境

  • 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 としてルーティングテーブルにインストールされてしまうケースがあります。

詳しくは以下のページを確認してください。

NAT address が Local Route として学習され通信が出来ない問題への対処
IOS15.2(1)T以降へのSoftwareUpgrade後に同様の設定を使用してもNAT通信が正常に行えない事例が報告されています。この記事ではこの問題の概要、発生条件、対処法について紹介します。 問題の概要 15.2(1)T以降のSoftwareでの一部コード実装変更の影響により、これまでと同様の設定を使用されて...

参考資料

NAT add-route オプション Default Route 使用時の注意事項
1.問題の概要設定例) ipnatoutsidesourcestatic10.10.10.1010.1.1.3add-route上記のようにadd-routeoptionを設定すると、指定したNATに応じたstaticrouteが動的に作成され、ルーティングテーブルにインストールされますが、OverlappingNet...

タイトルとURLをコピーしました