Ubuntu 18.04 で KVM + OpenvSwitch(NAPT)
いくつかのサイトを参考に作成.
環境
OS
Hypervisor
やりたいこと
正しい書き方かわからないけど概要はこんな感じ.
KVMの設定
基本は省略する.defaultネットワークを停止させ,自動起動を無効化する.
以下のコマンドでLinux標準ブリッジを無効化する.
rmmod bridge
OpenVSwitchの設定
インストール
apt install openvswitch-switch apt install openvswitch-common apt install python-openvswitch apt install python-netifaces
Ubuntu 18.04はnetplanでネットワークされるが,OVSに非対応なので従来の設定ファイルを行う. (netplanの設定でmatchというキーを使えばIPアドレスを付加できたが接続は未検証) まずは,/etc/netplan/に存在するファイルの中身を全てコメントアウトする.
次に以下のパッケージをインストールする.
apt install ifupdown
/etc/network/interfacesを編集.ブリッジの設定をここに書く.
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto br0 iface br0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 ovs_type OVSBridge
保存したら設定を適用.
ifdown br0 ifup br0
ブリッジ設定ファイルを作成.
<network> <name>br0</name> <forward mode='bridge'/> <bridge name='br0'/> <virtualport type='openvswitch'/> </network>
設定ファイルを適用.
virsh net-define br0.xml virsh net-start br0 virsh net-autostart br0
作成したブリッジを仮想マシンに設定. この際にもともとあるmacvtapを選ばないように注意.
ufwとフォワーディング設定
/etc/ufw/before.rules
*filterと書かれている行の前に以下を記述.
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -F -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE COMMIT
/etc/ufw/sysctl.conf
net/ipv4/ip_forward=1
/etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
3つの設定を弄ったら,ufwを適用. ufwはデフォルトで全通信を遮断しインターネットに繋がらなくなるので注意(許可する設定をする必要があるけど省略).
ufw disable ufw enable
うまく行っているか確認.
iptables -L
dnsmasqの設定
インストールとSystemdで起動.
apt install dnsmasq systemctl enable dnsmasq systemctl start dnsmasq
/etc/dnsmasq.conf
listen-address=192.168.0.1 dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h
ゲストOS側の設定
ゲストはnetplanで大丈夫.うまく行けばインターネットに繋がる.
network: version2: ethernet: ens3: dhcp4: true addresses: []
設定適用.
netplan apply