RTX1000でNATテーブルが溢れた
RTX1000でIPマスカレードを使ってて、ふとNATテーブルを確認すると、結構な量使ってました。
には以下のコマンドが使えます。IPマスカレードの変換テーブルも見れます。
show nat descriptor address
...
Masqueradeテーブル
外側アドレス: 192.168.0.150 ポート範囲=60000-64095 3015個使用中
このままでは端末が増えたときにテーブル使いきってしまうおそれがあるため、ポート範囲を広げようと思いました。
デフォルトが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
参考: