5
5

More than 1 year has passed since last update.

Proxmox VE上でOVSを使ってみる

Last updated at Posted at 2023-04-09

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚と申します。
前回、前々回とubuntu VM上にOVSで仮想ネットワークを敷設する記事を投稿しました。

今回はProxmox VE上でOVSを使って仮想ネットワークを敷設。
敷設したネットワークに対してVMを立ち上げてみて、
どうせならリバースプロキシVMも立ち上げて外部から通信できるかやっていこうと思います。
但し、この記事ですべてをやろうとすると長くなるので、今回はOVSでネットワーク敷設と、そこにVMを立ち上げるところまで行います。
後日もう1つ挙げる記事のほうで、最後までやっていこうと思います。

構築ゴール

以下の画像のような環境構築ができたらゴールとします。
具体的には、PCからProxmox VE上に構築しているnginx VMに対してWebブラウザで8000ポート指定でアクセスすると、OVSブリッジの先にある外界に接続されていないapache2 VMにリダイレクトされるようにしたいと思います。
VMは双方ともubuntu22.04を使用します。

nginx.drawio (2) (1).png

※Proxmox VE上でOVSを使う利点って他に何かあるのでしょうか?
 OVNとかを使ってProxmox VE間でオーバレイネットワークを構築するとかがあるのかなと思ったのですが、Proxmox公式サイトをあさってみても情報がヒットせず・・・まだまだ勉強が足りませんね(-_-;)

Proxmox VEでOVSを使ってみる

まず、私のProxmox VEのデフォルトは以下でした。
ens18がProxmox VE自体のNICです。Proxmox VE自体にsshし設定投入などを行う場合はこちらにアクセスします。
一方でLinuxBridgeはProxmox VE環境構築時に作成したものになります。
image.png

この状態でCreateを押下し、OVSを作成してみます。敷設するネットワークを192.168.200.0/24とし、デフォルトゲートウェイはいったん空白としました。
ちなみにProxmox VE上にはOVSをインストールしていない状態です。
image (1).png

当たり前なのですがOVSをインストールしていないと以下のようなエラーが吐かれます
image (2).png

Proxmox VEにsshしOVSをインストールしていきます。
今回叩いたコマンドは以下となります。
ovs-vsctl showコマンドでバージョンが出力されていることからインストールは問題なくできていると判断できますね。

root@network:~# apt update && apt upgrade -y
root@network:~# apt install -y openvswitch-switch
root@network:~# ovs-vsctl show 
f8b0ff39-faf0-4a7c-bdee-80156133130f 
    ovs_version: "2.15.0"

この状態でWebコンソールから改めてOVSを作成できるか確認してみます。
image (3).png

今回はエラーを吐かれずに作成することができました。
ただ、これだけでは実機に反映されていないようです。
Activeのステートを見るとNoとなっていることが確認できますね。
これをYesにしてあげる必要があります。
image (4).png

YesにするためにはWebコンソールにあるApply Configurationを押下します。
有効化に成功するとActiveのステートが以下のようにYesと表示されるようになるはずです。
image (5).png

この状態でProxmox VEにsshしipコマンド、ovs-vsctl showコマンドを叩いてみると
vmbr1が表示されるようになると思います。

root@network:~# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
       valid_lft forever preferred_lft forever 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever 
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP group default qlen 1000 
    link/ether 7a:2e:48:ba:4a:8b brd ff:ff:ff:ff:ff:ff 
    altname enp0s18 
3: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 
    link/ether 7a:2e:48:ba:4a:8b brd ff:ff:ff:ff:ff:ff 
    inet 192.168.2.152/24 scope global vmbr0 
       valid_lft forever preferred_lft forever 
    inet6 fe80::782e:48ff:feba:4a8b/64 scope link 
       valid_lft forever preferred_lft forever 
4: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 
    link/ether 4a:05:26:33:cd:b3 brd ff:ff:ff:ff:ff:ff 
5: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000 
    link/ether b6:6c:db:af:ea:40 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.200.200/24 scope global vmbr1 
       valid_lft forever preferred_lft forever 
    inet6 fe80::b46c:dbff:feaf:ea40/64 scope link 
       valid_lft forever preferred_lft forever

root@network:~# ovs-vsctl show 
f8b0ff39-faf0-4a7c-bdee-80156133130f 
    Bridge vmbr1 
        Port vmbr1 
            Interface vmbr1 
                type: internal 
    ovs_version: "2.15.0"

せっかくなのでこのOVSで敷設したネットワークに対してVMを作成してみようと思います。
VM名はovs-vmとします。これに後々apache2をインストールしてみます。
image (6).png

OSはubutnu22.04を指定。
image (7).png

ネットワークは先ほど敷設したOVSのものを指定します。
ほかの設定は気にしなくて問題ないと思います。
image (8).png

この設定下でVMの立ち上げを行いましたが、特にエラー等を吐かずに実行することができました。
このVMは外界に接していないネットワークのVMになるのでsshで操作はできませんが、Proxmox VE上にあるコンソールから操作することができるのも確認できました。
とりあえず一安心。。。
image (9).png

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5