CML2を使った検証環境の作成
前提条件
- 検証環境・検証機器を既存のWAN/LANに接続させない(CML2のExternal Connector のBridgeで利用しない)
- 既存のLANのIPアドレスから採番したくない
- 既存の環境の機器のクローンが動かせないため
- External Connector をNATで利用したなくない
- NAT(NAPT)にすると外部からアクセスできないため
- NAT内にアクセスするには、VPNサーバのノードを作成する必要がある
→ 5ノードしか使えないのに無駄遣いしたくない
- CML2内の検証環境のネットワークをL2延伸したい or 別の検証環境用のセグメントとL3接続する
- 既存のLANに影響を与えずに、検証できるようにしたい
- 物理的に独立している(CML2外)の検証機器等と連携して検証環境を作成する
確認結果
検証環境用の物理ルータのセグメントをCML2のホストにL2延伸を行い、そのL2にBridge接続を行いたい。
→ 仮想基盤を管理している or 既存LANとは別に仮想基盤でスイッチを作成し、そのスイッチを中心にLANを作成する。仮想化基盤にVMLBなどのブリッジ作成の話をしてくれている方の記事などを参照
L2延伸が難しい場合、L3で接続できるようにする。(本記事はこの話)
既存のWAN/LANにL2パケットを流さないようにする。
構成
構築
- CML2 のインストール(最新版は2.9.0)
- 検証LAN2の作成
- VPNの確立
- FW(iptables)の修正
- 経路交換
- AWX/Ansibleの準備
1. CML2 のインストール(最新版は2.9.0)
他の方がいろいろ解説してくださっているので省略。
Proxmox にインストールするときはSCSI Controllerを変更しないと起動しないので注意
ProxmoxでOVAをインストールする際は、CPUの種類をHostに修正する
CML2のホストに手を入れていくので、アカウントの設定とreference platforms のインストールが終わった後に、VMをテンプレートに変換しておくといいかも。
2. 検証LAN2の作成
2-1. インターフェイス・ネットワークの作成
CML2 が利用できるようになったことを確認した後、
https://<cml2 の管理IP>:9090/virl2/maintenance
にアクセスし、DHCP Networksを展開する。
「⊕Add Network」を押し、「Enable outbound traffic through NAT」のチェックを外し、Bridge欄の名前がLocal0 になっていることを確認し、「⊕Apply」を押す。

2-2. FW(iptables)の修正
Local0は本来NATセグメント用のvirbr0 であり、IPマスカレードを有効にしていないだけのため、Local0 インターフェイスを持たない機器からの通信ができない。そのため、NAT・BridgeモードのExternal Connector に接続しているCML2 のノードからアクセスができず、また物理的に分けられている環境からのアクセスは当然できない。物理の検証環境からアクセスできないのは困るので、下記のコマンドでFWを修正してL3接続できるようにする。(再起動ごとに設定が必要)
FWI_LINE=$(sudo iptables -L LIBVIRT_FWI -v --line-numbers | grep local0 | awk '{print $1}')
FWO_LINE=$(sudo iptables -L LIBVIRT_FWO -v --line-numbers | grep local0 | awk '{print $1}')
sudo iptables -D LIBVIRT_FWI "${FWI_LINE}"
sudo iptables -D LIBVIRT_FWO "${FWO_LINE}"
sudo iptables -I LIBVIRT_FWI -i local0 -j ACCEPT
sudo iptables -I LIBVIRT_FWO -o local0 -j ACCEPT
そのうちスクリプトにしたい。。。。
3. VPNの確立
これはお好きなVPNを利用して、別マシンとのVPNを構築する
例)暗号化なしのGREトンネリングを利用
CML2 側でトンネル終端のI/F gre1 を作成して、IPアドレスを割り当てる。
sudo ip tunnel add gre1 mode gre local 192.168.200.1 remote 192.168.100.1
sudo ip addr add 172.16.31.253/30 dev gre1
sudo ip link set gre1 up
対向機器でGRE トンネリングを作成する
(cisco router)
interface Tunnel0
ip address 172.16.31.254 255.255.255.252
tunnel source 192.168.100.1
tunnel destination 192.168.200.1
トンネルが確立できて問題がなければ、設定を保存する。
cml2 の場合は、/etc/netplan/ に保存する。
network:
version: 2
renderer: networkd
tunnels:
gre1:
mode: gre
local: 192.168.200.1
remote: 192.168.100.1
addresses: [172.16.31.252/30]
mtu: 1476
5. 経路交換
Linux
6. AWX/Ansibleの準備
おわりに
cml2.9 のfree tier をインストールさせてもらったが、インスタンスがいろいろ増えていたのでcml2 だけで遊べる範囲が広がったが、docker container で動作する機器がまだ不安定なので、修正してもらえるのを気長に待たせていただきます。
docker container のノードにアクセスできなくなったときは、下記のコマンドを実行してから再度アクセスを行う。
sudo systemctl restart virl2-lowlevel-driver
