コンテンツにスキップ

SNMP テーブル

概要

SNMP エージェント (snmpd in docker-snmp) のシステム情報 (Contact / Location) を保持するテーブル1docker-snmp 内の起動スクリプトと hostcfgdSNMP ハンドラが CONFIG_DB を読み、/etc/snmp/snmpd.conf のテンプレ展開で sysContact / sysLocation 行に反映される。

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>SNMP")]
  DM["snmp-config"]
  CDB --> DM

凡例

CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。

key 構造

SNMP|CONTACT
SNMP|LOCATION

container SNMP の下に 2 つのシングルトン container (CONTACT/LOCATION)。各 container にフィールド 1 つだけ。

フィールド

SNMP|CONTACT

フィールド 説明
Contact string (1..255 chars, 改行不可) SNMP sysContact

SNMP|LOCATION

フィールド 説明
Location string (1..255 chars, 改行不可) SNMP sysLocation

制約

  • 双方の leaf は length "1..255" かつ pattern '[^\n]+' (改行禁止)
  • container 名は SNMP、内部 container 名は CONTACT / LOCATION、フィールド名は 大文字 (Contact/Location)1

購読者

  • docker-snmpsnmpd 起動テンプレ: CONFIG_DB/etc/snmp/snmpd.conf
  • hostcfgd の SNMP ハンドラ (sonic-host-services)

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: SNMP_COMMUNITY (v1/v2c), SNMP_USER (v3), SNMP_AGENT_ADDRESS_CONFIG
  • 関連 CLI: config snmp contact { add | modify | del } / config snmp location { add | modify | del }
  • 関連 YANG: sonic-snmp

関連リファレンス

引用元

関連ページ

運用ヒント

典型値

  • key 形式: SNMP|<community> / SNMP|LOCATION / SNMP|CONTACT
  • SNMP_COMMUNITY|<name>TYPE: RO

よくある誤設定

  • community 名を default の public のまま運用すると外部から read 可能。本番では変更。

確認コマンド

sonic-db-cli CONFIG_DB keys 'SNMP*'
show snmp community

値依存挙動マトリクス

Contact / Location フィールド挙動

状態 挙動
設定済み(1..255 chars) snmpd.conf の sysContact / sysLocation 行に展開。\n は空白に置換。
未定義(エントリなし) テンプレートの is defined チェックで該当行を出力しない。snmpd は空の値を使用。
改行文字を含む YANG pattern '[^\n]+' 制約違反でロード拒否。
256 chars 以上 YANG length "1..255" 制約違反でロード拒否。

SNMP_COMMUNITY テーブルとの関係

状態 挙動
SNMP_COMMUNITY 定義済み snmpd.conf にコミュニティ設定行を出力。
SNMP_COMMUNITY 未定義 {% if SNMP_COMMUNITY is defined %} チェック失敗。コミュニティ行なし → 全 SNMP アクセスが拒否される。
SNMP_COMMUNITY.TYPE = RO 読み取り専用コミュニティとして展開。
SNMP_COMMUNITY.TYPE = RW 読み取り/書き込みコミュニティとして展開。

例外条件・特殊挙動

  • sysContact / sysLocation 未定義時: テンプレートの is defined チェックで未定義の場合は該当行を出力しない。snmpd は空の sysContact / sysLocation を使用する。2
  • SNMP_COMMUNITY が未定義の場合は全アクセス拒否: snmpd.conf テンプレートは {% if SNMP_COMMUNITY is defined %} で SNMP_COMMUNITY の有無を確認し、存在しない場合はコミュニティ設定行を出力しない。community なしでは全 SNMP アクセスが拒否される。2
  • 設定変更の反映はコンテナ再起動時のみ: テーブル変更は docker-snmp コンテナの再起動 / snmpd リロードまで反映されない。2
  • key の大文字/小文字: SNMP|LOCATION / SNMP|CONTACT の key 名の大文字/小文字が YANG 定義と実装の間で一致しない場合、テンプレートがその値を参照できずサイレントスキップが発生する可能性がある。2

  1. src/sonic-yang-models/yang-models/sonic-snmp.yang (container SNMP / CONTACT / LOCATION). https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-snmp.yang 

  2. snmpd.conf テンプレート: sonic-buildimage/dockers/docker-snmp/snmpd.conf.j2. https://github.com/sonic-net/sonic-buildimage/blob/master/dockers/docker-snmp/snmpd.conf.j2