見出し画像

「体験しながら学ぶ ネットワーク技術入門」のテスト環境のネットワーク機器をTWSNMP FCで管理する方法を試しています

今朝も3時40分に自力で起きました。助手の猫さんは、かみさんの布団の上で丸くなってぐっすり寝ていました。

「体験しながら学ぶ ネットワーク技術入門」を読んでtinetによるテスト環境を作っています。テスト環境のtinet定義ファイルは

で公開されています。これを元に
TWSNMP FCはDockerに対応しているので、比較的簡単にテスト環境に組み込むことができました。でも、この本で紹介しているテスト環境のネットワーク機器(スイッチやルーター)はSNMP対応していないのであまり楽しくありません。
そこでテスト環境に登場するネットワーク機器をSNMP対応にする方法を考えることにしました。テスト環境のコンテナにログインしてSNMPエージェントをインストールしようとしましたが、これは失敗でした。テスト環境は、分離されているのでインターネットに接続されていないためパッケージのダウンロードができないのです。
そこでSNMPエージェントを組み込んだDockerのイメージを作ることにしました。最初、DockerHUBで公開する方法を考えましたが、tinetにはbuildコマンドがあり Dockerイメージをビルド できることを見つけました。tinetのソースコードを読んだ成果です。
この本のテスト環境の定義ファイルで使っているイメージをベースにしてSNMPエージェントを組み込めばいけそうです。
試しにスイッチに組み込んでみました。

Dockerfileは

FROM sphalerite1313/ovs_arm
RUN apt update && apt install -y snmpd
COPY  snmpd.conf /etc/snmp/snmpd.conf

ぐらいでよいです。
スイッチとTWSNMP FCを組み込んだtinetの定義ファイルは、

nodes:
  - name: twsnmp
    net_base: bridge
    image: twsnmp/twsnmpfc:arm64_v1.45.0
    interfaces:
      - { name: eth1, type: direct, args: sw1#port1 }
    mounts: 
      - /mnt/c/tinet:/tmp/tinet
      - /home/ubuntu/twsnmp:/datastore
    docker_run_extra_args: -p 8080:8080
  - name: sw1
    image: ovs_snmp_arm
    buildfile: /home/ubuntu/tinet/sw_snmp/Dockerfile
    buildcontext: /home/ubuntu/tinet/sw_snmp
    interfaces:
      - { name: port1, type: direct, args: twsnmp#eth1 }
    dns: 127.0.0.1
    mounts: /mnt/c/tinet:/tmp/tinet

node_configs:
  - name: twsnmp
    cmds:
      - cmd: ip addr add 192.168.11.200/24 dev eth1
  - name: sw1
    cmds:
      - cmd: ip addr add 192.168.11.101/24 dev port1
      - cmd: /etc/init.d/snmpd start

test:
    cmds:
      - cmd: docker exec twsnmp ping -c2 192.168.11.101
      - cmd: docker exec sw1 ping -c2 192.168.11.200

tinetのbuildコマンドでビルドしてから起動すればSNMP対応のスイッチになりました。
組み込んだTWSNMP FCからアクセスできます。


このスイッチには、SNMPのエージェントの他に、NetFlowやLLDP(Link Layer Discovery Protocol)機能を組み込めそうです。
ルーターのほうもSNMPの拡張MIBを組み込めるようです。

gRPCも記載があるので組み込めるかもしれません。

「体験しながら学ぶ ネットワーク技術入門」で使っているスイッチやルーターが管理機能のない数千円のものですが、これを数万円の管理機能付きにできるという話です。

いろいろ楽しめるものを見つけました。

明日に続く


いいなと思ったら応援しよう!

twsnmp
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。