前置き
ここまでに仮想マシン・コンテナの環境構築→ネットワークの基礎知識→仮想ソフトウェアの基本的なコマンド操作と順番に記事にしてきました。
↓環境構築から読みたい人向け
やることをまとめる
Network Namespace
仮想マシンやコンテナで通信してネットワークのお勉強に入ろうとしたんですが、この記事を書いている時点ではLinuxコマンドに疎いので、以前読んだLinuxでTCP/IPを学べる書籍に知見が書いてあったよなと読み返しました。
そしたら、ネットワーク体験に非常に有用なNetwork Namespaceという機能がLinuxにあることを再認識出来ました。(昨年度読んだのに、読み返すまで完全に忘れていたのは内緒)
高度な機能(※1)が必要な場合や仮想マシンやコンテナ内外を介する通信を試す場合を除いてはNetwork Namespaceで補えそうだと思いました。
※1:Network Namespaceで出来るかもしれないが、DHCPとかDNSとかロードバランサとかルーティングプロトコルとか
以前読んだ書籍
こちらの書籍になります。TCP/IPの基礎からみっちり覚えたい方は、この参考書を読みながら進めたほうが有意義かもしれません。
2022/10/24現在、Amazonのプライム会員であればPrime Readingの書籍に該当している(つまり無料です)ので、試し読みしても良いと思います。
やることリスト
経緯
前述のとおり、Network Namespaceを使おうと書籍を読み返していくと、通信の前準備がめちゃくちゃ面倒くさいことも思い出しました。
しかも、Namespace自体はLinuxがシャットダウンや再起動すると消えます。
つまり間が空くたびにNamespace作って、UP状態にして、アドレス設定して・・・みたいなコマンドを打つ必要があります。
例えば、ちょっと複雑なネットワーク構成を作ってルーティングプロトコル試したい時とか大変です。
そこで、必要なLinux知識を整理しつつ、やりたいことも調べておいてネットワーク体験をやりやすくしようと情報をまとめます。
リスト
- Linuxで必要なコマンドをまとめておき、標準で入っていない機能をインストールする
- 仮想マシン起動で、既定のコマンドを自動実行してホスト内にネットワークを構成
- 脳内整理のためにネットワーク図を用意したい
- Network Namespaceでは無理だけど試したいことを挙げ、実現方法を探る
Linuxで必要なコマンド
少なくとも、Network Namespaceの構築に必要なnetnsコマンドは確定です。
他にも書籍内だといくつかコマンドをインストール・実行していました。別記事にて、コマンドの目的まで含めてまとめておくことにします。
Linux起動時にコマンドを自動実行
コマンドの自動実行は、調べたところLinuxの特定の階層にファイルを置くことでやってくれそうです。Linux内でのファイル編集になるので、viというテキストエディタを用いることになります。そのあたりの手順も含めて、行っていくことにします。
ネットワーク図の作図
PlantUMLというソフトウェア関係の作図をコードで行えるツールがあります。このツールはER図の作成をほんの少しだけ本業でかじったことがあるので、これを使用してネットワーク図を書いてみたいです。
Network Namespaceで不可能なことの実現
これは、Network Namespaceについて色々と調べないと結論は出なさそうです。ただ、少し調べた感じだと、少なくともOSPFは試せるらしいです。
プロキシのようなサーバとしての機能が必要そうなものは、用意しないといけないかもしれません。
最後に
とりあえず、やるべきことが決まってきたのでそれらに取り掛かろうと思います。
それぞれを記事にする感じでまとめれそうですかね。