3流プログラマのメモ書き

元開発職→現社内SEの三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

RTX1000でNATテーブルが溢れた

RTX1000IPマスカレードを使ってて、ふとNATテーブルを確認すると、結構な量使ってました。

には以下のコマンドが使えます。IPマスカレードの変換テーブルも見れます。

show nat descriptor address

...

Masqueradeテーブル

外側アドレス: 192.168.0.150 ポート範囲=60000-64095 3015個使用中

プロトコル 内側アドレス 宛先 マスカレード TTL(秒)

このままでは端末が増えたときにテーブル使いきってしまうおそれがあるため、ポート範囲を広げようと思いました。

デフォルトが60000-64095っぽいので、nat descriptor masquerade port range コマンドで40000-60000までにしてみます。

nat descriptor masquerade port range 1 40000 20000

エラー: パラメータが範囲を越えています

なぬ?

どうやら調べてみると、RTX1000はポート範囲は 4096 しか使えないようです。

RTX1500や1100も同様でした。

RTX1200はポート範囲20000までいけるようです。(仕様のNATセッション数)

どうしたものか悩んでると、ともちゃ日記 - 元大学生の悪魔^H^H魔神OL日記-で対応策が載ってました。

どうやら、NATテーブルで保持してるセッション情報の保持期間を短くしてやるといいようです。

デフォルトは全プロトコルで15分間(900秒)IPマスカレードのセッション情報を保持しているようです。

この保持期間を変更するには、nat descriptor timerコマンドを使うようです。

NATディスクリプタ1の全プロトコルでセッション保持期間を10分に変更するには以下のようにします。

nat descriptor timer 1 600

TCPの80宛のセッション保持期間を120秒にするには以下のようにします。

nat descriptor timer 1 protocol=tcp port=80 120

セッション保持期間を短くすると確かに、使うポート範囲が小さくなり使用するNATテーブルの使用量を抑えれました。

これでもポート消費量が減らず、特定の端末が大量にセッションを消費している場合はnat descriptor masquerade session limitコマンドでホスト毎のセッションの最大数を指定してやるといいようです。(RTX1100以上。RTX1000は使えないみたい)

例えば以下のようにすると端末毎のセッション数を200に出来ます。

nat descriptor masquerade session limit 1 1 200

参考:

RTX1000設定-sshが切れる/NATテーブル溢れ

YAMAHA RTX1100 とセッション数制限 - かぼちゃ日記