概要

Linuxカーネルを使用した仮想環境にKVMがあります。

そのため、Linuxで仮想環境を使うのであればKVMを使うという選択肢があります。

ここでは、UbuntuでKVMを使い、仮想マシンから外のネットワークに接続する方法について説明します。

環境

  • Ubuntu 18.04
  • KVM

ブリッジの設定

KVMで仮想マシンから外のネットワークに繋ぐ方法として、ブリッジを使う方法があります。

ブリッジは、L2スイッチのようなもので、これを使うことで仮想マシンをホストのネットワークと同じ場所に接続することができます。

Ubuntuの場合、ブリッジを含めたネットワークの設定はnetplanを使って行うため、/etc/netplanディレクトリ以下にある設定ファイルを変更します。

ファイルは適切なものを使用しましょう。

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp3s0:
      dhcp4: yes
  bridges:
    br0:
      interfaces:
        - enp3s0
      dhcp4: yes
      mtu: 65536
      parameters:
        forward-delay: 0
        stp: no
      optional: true

ブリッジ名はbr0です。

ネットワークインターフェース名としてenp3s0を使用しています。

インターフェース名はifconfigなどで調べることができるため、適切な名前に変更してください。

mtuについて、大きな値にしてあります。理由としては、MTUによるパケットの分割を減らし、高速な通信をするためです。

もしホストマシンを固定IPアドレスにする場合は、次のようにします。

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp3s0:
      dhcp4: no
  bridges:
    br0:
      interfaces:
        - enp3s0
      dhcp4: no
      addresses:
        - 192.168.0.2/24
      gateway4: 192.168.0.1
      nameservers:
        addresses:
          - 192.168.0.1
      mtu: 65536
      parameters:
        forward-delay: 0
        stp: no
      optional: true

設定として、dhcp4: noとすることでDHCPによるネットワークの設定をやめて、それぞれ適切なIPアドレスやゲートウェイなどを記述します。

最後に、次のコマンドを実行して設定を反映させます。

# netplan apply

仮想マシンの設定

仮想マシンでは、作成したブリッジを使うようにする必要があります。

今回で言えば、ブリッジ名はbr0なので、仮想マシンが使用するネットワークインターフェースでbr0を指定します。

これで、仮想マシン上からインターネット通信ができるようになります。

さいごに

私は、KVMでサーバを構築しているのですがKVMの情報はあまり多くなく、つまづいた時に調べるのが大変です。

そのような悩みを抱えた人の助けになれれば幸いです。