show nat サブコマンド¶
概要¶
show nat は SONiC の NAT 機能の 動的な変換テーブル および 静的な設定 を表示する CLI で、show/nat.py の @click.group() がエントリポイントとなる1。
実装は薄く、natshow / natconfig という C/Python の補助バイナリを clicommon.run_command(...) で呼び出すだけのラッパー。natshow は ASIC_DB / COUNTERS_DB を参照し、natconfig は CONFIG_DB を整形して出すように分業されている。
コマンド一覧¶
| コマンド | 用途 | 内部呼び出し |
|---|---|---|
show nat statistics |
NAT 変換のカウンタ統計 | natshow -s |
show nat translations |
現在の動的変換テーブル | natshow -t |
show nat translations count |
変換エントリ数 | natshow -c |
show nat config |
全体設定の一括表示 | natconfig -g/-s/-p/-b/-z を順に |
show nat config static |
static エントリのみ | natconfig -s |
show nat config pool |
pool 設定のみ | natconfig -p |
show nat config bindings |
binding 設定のみ | natconfig -b |
show nat config globalvalues |
グローバル設定のみ | natconfig -g |
show nat config zones |
NAT zone 設定のみ | natconfig -z |
各コマンドに --verbose オプションがあり、内部で実行する sudo natshow ... / sudo natconfig ... の起動コマンドラインを表示する。
各コマンドの詳細¶
show nat statistics¶
natshow -s を起動。NAT 変換ごとの hit カウンタ・packet bytes 等を表で表示する。STATE_DB / COUNTERS_DB のカウンタを集計しているため、リアルタイムに更新される。
show nat translations [count]¶
サブコマンド無しで実行 (@nat.group(invoke_without_command=True)) すると natshow -t が呼ばれ、現在 ASIC に入っている変換 (static + 動的に学習されたもの) を表示する。count サブコマンド付きでは件数のみ。
show nat config [<sub>]¶
サブコマンド無しの実行ではグローバル → static → pool → bindings → zones の順で 5 ブロックを連続出力する。それぞれ natconfig -g/-s/-p/-b/-z の独立呼び出しに対応し、ブロック間に click.echo で見出しを差し込む。
サブコマンド付きでは指定 1 ブロックのみ。
関連する CONFIG_DB¶
| テーブル | キー | 表示するコマンド |
|---|---|---|
STATIC_NAT |
<global_ip> |
show nat config static |
STATIC_NAPT |
<global_ip>\|TCP/UDP\|<port> |
show nat config static |
NAT_POOL |
<pool_name> |
show nat config pool |
NAT_BINDINGS |
<binding_name> |
show nat config bindings |
NAT_GLOBAL |
Values |
show nat config globalvalues |
PORT / PORTCHANNEL / VLAN / LOOPBACK_INTERFACE の nat_zone |
<if_name> |
show nat config zones |
注意¶
natshownatconfigの出力フォーマットは固定列。スクリプトから JSON で扱いたい場合は--json等の互換オプションは無いので、現状はラフな text 出力のパース、または STATE_DB / CONFIG_DB を直接読むしかない。show nat translationsは NAT が実際にハード offload されている前提。config nat feature disable状態では空表示になる。
関連リファレンス¶
- CONFIG_DB:
STATIC_NAT/STATIC_NAPT/NAT_POOL/NAT_BINDINGS/NAT_GLOBAL
引用元¶
実行例¶
典型的な使い方¶
よくある引数の組み合わせ¶
期待される出力 (抜粋)¶
Static NAT Entries ............ 1
Dynamic NAT Entries ............ 0
Total NAT Entries ............ 1
Protocol Source Destination Translated Source Translated Destination
-------- ----------- ------------ ----------------- -----------------------
all 10.0.0.1 --- 192.168.1.1 ---
データフロー (自動生成)¶
flowchart LR
CLI["show nat"]
CDB0[("CONFIG_DB<br/>STATIC_NAT")]
CDB0 --> CLI
CDB1[("CONFIG_DB<br/>STATIC_NAPT")]
CDB1 --> CLI
CDB2[("CONFIG_DB<br/>NAT_POOL")]
CDB2 --> CLI
CDB3[("CONFIG_DB<br/>NAT_BINDINGS")]
CDB3 --> CLI
凡例
show 系 (CONFIG_DB → CLI) のミニ図。テーブル → daemon 対応は docs/reference/config-db-orch-map.md から機械生成。
関連 Topics¶
運用ヒント¶
典型的な利用シーン¶
- NAT translation / statistics / zone 設定の確認。
- セッションテーブル枯渇の傾向監視。
よくある落とし穴¶
show nat translationsは ASIC 上限を超えた分は表示されない。show nat statisticsは永続値ではなく、container 再起動でリセット。
関連する show / debug¶
-
natグループはshow/nat.pyL9-L12。config/nat.py側は CONFIG_DB を書き、show/nat.pyは別 binary 経由で読むという分担。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/show/nat.py#L9 ↩