はじめに
私は先月に気付いたのですが、ProxmoxVE 8.1から、今まで試験的な機能とされていたSDNが正式に実装されたようで、どうやらソフトウェア上だけでネットワークをよしなにできるらしいです。
ちょうどLinux Bridgeをなんとかしなければならないと思っていたので検証がてら触ってみます。
なにをするの?
この記事で接続したHomeNOCから頂いているIP資源を払い出すために使っているLinux Bridge InterfaceをEVPNゾーンに置き換え、物理マシン間を跨いでの通信を可能にします。
現状の構成はこんな感じ
ONUをNode #1の物理NICを介してVyOSのVMへ接続し、VyOSに接続されているLinux Bridge Interface上でいくつかのVMにIPの配布を行っています。
この構成だと、Node #2では資源を利用することができないため、
EVPN Zoneを用いたこのような構成に変更し、物理筐体を超えての疎通を実現します。
準備
EVPNの構築には、FRRoutingを用いますが、現状ではテクニカルプレビュー扱いとのことで、初期状態では導入されていないため、下記のコマンドでインストールを行います。
apt install frr-pythontools
EVPN Zoneを構成する
EVPN Zoneでは、異なるノード間の通信を制御するためにEVPN Controllerが必要となります。
EVPN Controllerの追加
Datacenter > SDN > Options
より、Controllers > Add > evpn
を押下し、以下のように設定します。
項目 | 設定値 |
---|---|
ID | 任意のID |
ASN # | 一意のプライベートAS番号 |
Peers | 対象ノードのIP |
Zoneの追加
Datacenter > SDN > Zones
より、Add > EVPN
を押下し、以下のように設定します。
項目 | 設定値 |
---|---|
ID | 任意のID |
Controller | 上記手順で追加したController |
VRF-VXLAN Tag | 任意のTag |
Exit Node | 外向き通信に使う終端ノード |
ここでVRF-VXLAN Tagとして指定した値は、VNetsでは使えません。
VNet, Subnetの追加
Datacenter > SDN > VNets
より、Vnets > Create
を押下し、VNetを追加します。
項目 | 設定値 |
---|---|
Name | 任意の名称 |
Controller | 上記手順で追加したZone |
Tag | 任意のTag |
Vnetの作成が完了したら、続けてSubnetの定義をします。
現状では、DCHPはSimple Networkに限った機能らしく、EVPN Zone上では機能しないため、ここではsubnetの定義のみでDCHPに関する設定は行いません。
先程追加したVnetを選択した状態で、Subnets > Create
を押下し、Subnetを追加します。
項目 | 設定値 |
---|---|
Subnet | 割当を受けた資源/prefix |
Gateway | VyOSに割り振ったIP |
SNAT | True |
動作確認
おつかれさまです。これまでの手順でEVPN Zoneの構築が完了しました。
適当なVMを建てて疎通を確認します。
Network Deviceに先程作成したevpnnet1
のVNetを指定します。
また、前述の通り、DCHPが使えませんのでIPを手動で割り当てる必要があります。
私はCloud initの機能でぱぱぱーっとやりましたが、必要があれば起動後に割り当ての作業を行ってください。
pingを打って疎通すれば成功です。
補足として、Subnetで設定していないアドレス宛に通信を行いたい場合は、SNATを有効にすることで可能です。
さいごに
ここまで読んでいただきありがとうございました。
Proxmox VEのSDNを利用することで手軽にEVPNを導入できたかと思います。
従来の手法のように外部の機器を通さずとも色々できるのは遊び甲斐がありますよね~。
IPAMと連携していい感じにアドレス資源の管理もできるみたいなので近々試してみたいです。