0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

snmpsimを使用して環境構築 (2)

Last updated at Posted at 2025-05-11

Docker環境でSNMPシミュレーション環境を構築する

この記事では、snmpsim を使用してDocker環境でSNMPシミュレーション環境を構築する方法を紹介します。前回の記事「snmpsimを使用して環境構築 (1)」の続きとして、今回はDockerを利用した構築手順を説明します。
Dockerを使うことにより、管理者権限を使って161ポート番号も使えるようになります。

必要なファイル

以下の2つのファイルを作成します。

1. docker-compose.yml

以下は docker-compose.yml の内容です。このファイルを使用して、snmpsim コンテナを構築・起動します。

docker-compose.yml
version: '3.8'

services:
    snmpsim:
        image: ghcr.io/etingof/snmpsim
        container_name: snmpsim
        ports:
            - "161:161/udp"
        volumes:
            - ./data:/opt/snmpsim/data
        command: >
            --data-dir=/opt/snmpsim/data
            --agent-udpv4-endpoint=0.0.0.0:161
dockerfile
FROM python:3.9-slim

# Install required dependencies
RUN pip install snmpsim

# Create a directory for SNMP simulation data
RUN mkdir -p /opt/snmpsim/data

# Set the working directory
WORKDIR /opt/snmpsim

# Expose the SNMP port
EXPOSE 161/udp

# Command to run the SNMP simulator
RUN addgroup --system snmpsim && adduser --system --ingroup snmpsim snmpsim
USER snmpsim
CMD ["snmpsim-command-responder", "--data-dir=/opt/snmpsim/data", "--agent-udpv4-endpoint=0.0.0.0:161"]

2. data ディレクトリ

data ディレクトリは、SNMPシミュレーションに必要なデータを格納するためのディレクトリです。このディレクトリには、SNMPエージェントが使用するMIBファイルやデータファイルを配置します。
以下のような構成にします。

data/
└── public.snmprec

public.snmprecは、SNMPエージェントが応答するデータを定義するファイルです。
前回と同様の内容を記述しています。

public.snmprec
# sysDescr: A textual description of the entity.
1.3.6.1.2.1.1.1.0|4|Simulated SNMPv2-MIB::sysDescr
# sysObjectID: The vendor's authoritative identification of the network management subsystem.
1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.8072.3.2.10
# sysUpTime: The time since the network management portion of the system was last re-initialized.
1.3.6.1.2.1.1.3.0|67|123456789
# sysContact: The contact information for the administrator.
1.3.6.1.2.1.1.4.0|4|admin@example.com
# sysName: An administratively-assigned name for this managed node.
1.3.6.1.2.1.1.5.0|4|SimulatedDevice
# sysLocation: The physical location of this node.
1.3.6.1.2.1.1.6.0|4|DataCenter
# ifIndex: A unique value for each interface.
1.3.6.1.2.1.2.2.1.1.1|2|1
#
# 5 - NULL
1.3.6.1.2.1.2.2.1.4.1|5|
# 64 - IpAddress
1.3.6.1.2.1.2.2.1.5.1|64|192.168.64.1
# 65 - Counter32
1.3.6.1.2.1.2.2.1.6.1|65|12345
# 66 - Gauge32
1.3.6.1.2.1.2.2.1.6.1|66|100000000
# 67 - TimeTicks
1.3.6.1.2.1.2.2.1.6.1|67|987654321
# 68 - Opaque
1.3.6.1.2.1.2.2.1.6.1|68|200000000
# 70 - Counter64
1.3.6.1.2.1.2.2.1.6.1|79|300000000

Dockerコンテナの起動

以下のコマンドを実行して、Dockerコンテナを起動します。

docker-compose up -d

このコマンドを実行すると、snmpsim コンテナがバックグラウンドで起動します。コンテナが正常に起動したことを確認するには、以下のコマンドを実行します。

docker-compose ps

正常に起動している場合、以下のような出力が表示されます。

NAME      IMAGE         COMMAND                   SERVICE   CREATED          STATUS          PORTS
snmpsim   002-snmpsim   "snmpsim-command-res…"   snmpsim   46 minutes ago   Up 46 minutes   0.0.0.0:161->161/udp

SNMPシミュレーションの実行

SNMPシミュレーションを実行するには、以下のコマンドを実行します。

snmpwalk -v 2c -c private localhost

このコマンドを実行すると、SNMPエージェントが応答します。SNMPシミュレーションの結果は、コンソールに表示されます。

まとめ

SNMPシミュレーション環境をDockerで構築することで、簡単にSNMPエージェントのシミュレーションが可能になります。Dockerを利用することで、環境構築が容易になり、他のプロジェクトとの依存関係を気にせずにSNMPシミュレーションを行うことができます。
この手法を利用して、SNMPエージェントのテストやデバッグを行うことができます。SNMPシミュレーション環境は、ネットワーク管理や監視の分野で非常に役立つツールですので、ぜひ活用してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?