nwdiag にルーティング表示機能を追加
テキストベースでネットワーク構成図を作成する手段が無いものかと色々探したところ、 nwdiag が良さそうな感じだったのですが、 残念なことにパケットのルーティング周りに関して図示する機能がありませんでした。
他に良さそうなものがなかったのと、
それっぽい用途向けと思われる
route
ステートメントが途中まで実装されていた状態だったので、
nwdiag にルーティングを図示する機能を追加してみました。
pull request が受理されるまでは
pip install git+https://github.com/flying-foozy/nwdiag@make-route-statement-available
等で私の公開リポジトリ経由でインストールしてください。
機能追加版の nwdiag を使うことで、 以下のようなテキスト記述から:
diagram { inet [shape = cloud]; inet -- router; network internal { address = "192.168.0.0/24"; router [address = "192.168.0.1"]; client01 [address = "192.168.0.101"]; client02 [address = "192.168.0.102"]; } route { client02 -> router -> inet; inet -> router -> client01 [path = "rb", color = "blue"]; } }
以下のような図を生成できます。
ルーティングの描画は
"la" (Left-Above), "lb" (Left-Below), "ra" (Right-Above), "rb" (Right-Below)
の4通りの値のいずれかを path
属性に指定することで、
ネットワーク接続線に対する描画の相対位置を指定できます。
他にも、色(color
)/強調の有無(thick
)/線種(style
)/
ネットワーク描画からのパディング(pad
)が指定可能です。
diagram { inet [shape = cloud]; inet -- router; network { router; client01; client02; } route { client02 -> client01 [path = "rb", pad = 4, color = "green"]; client01 -> router [path = "lb", thick, color = "blue"]; router -> client01 [path = "ra", color = "maroon"]; client01 -> client02 [path = "la", pad = 4, style = "dotted"]; inet -> router [ pad = 1]; } }