Docker+Open vSwitchを使用して,ローカル環境上に仮想ルータと仮想スイッチのネットワークを構成するためのスクリプトです.
スクリプトによって作成されるネットワーク
- prerequisites
- Docker official site
- Open vSwitch official site
- ovs-docker github
- vyOS使いたかったがARMマシンに対応したコンテナの作成方法がわからなかった
- 結局CentOSのコンテナでルーティング
- そもそもルーティングに必要なソフトウェアが何なのかわからない状態から開始
- ルータとして動作させるためにip_forward機能を有効にする必要があった
docker run --sysctl net.ipv4.ip_forward=1 ...
--sysctl
はコンテナ内のカーネルパラメータを設定するためのオプション- 静的ルーティングのため
ip route add
でそれぞれのルータにルーティングテーブルを設定していく - router1で
ip route add 10.0.3.0/24 via 10.0.1.2 dev eth0
として、router1->router4の通信ができるはずと思いping
で疎通確認するが、返信が返ってこない。。。 - router4->router1への経路を設定できていないからと気づくのに1週間かかる。
- router4で
ip route add 10.0.1.0/24 via 10.0.3.1 dev eth0
とした。 - router1->router4への
ping
が通った!
- check_connection ルータ同士の疎通確認用スクリプト
- create_routers ルータ(dockerコンテナ)とスイッチ(Open vSwitch)の作成
- delete_ports コンテナに割り当てたNICの削除
- Dockerfile ルータコンテナのDockerfile
[root@3c4c80f60d77 /]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
- 仮想ルータの部分をCentOSコンテナからFRR (Free Range Routing) に移行する
- ovs-docker導入方法の説明追記