hack のためのネタ帳, etc,,,

概要

Ubuntu 上の libvirt で QEMU/KVM 使って仮想マシン上にルーターを構築した。

手順

QEMU/KVM に nic を 1 つ増やして計 2 つの nic を準備。
これを物理 nic に割り当てて macvtap で用いる。
macvtap で同じ nic にぶら下がっている母艦と VM を通信させるのは難しいみたいなコメントが表示されたのだが、
幸い母艦側には nic が 3 つあったので、それぞれ、VM WAN 側、VM LAN 側、母艦 LAN 側に割り当て。
具体的には
  • eth0 : VM WAN 用
  • enp2s0f0 : VM LAN 用
  • enp2s0f1 : 母艦 LAN 用

母艦では母艦 LAN 側の NIC (enps0f1) のみ DHCP 構成にして、その他は未設定に、
これは Ubuntu Desktop の NetworkManager から GUI で設定しており設定は以下に生成されてた。
  • /var/lib/NetworkManager/dhclient-enp2s0f1.conf
VM では VM WAN 側と LAN 側をどちらも static 構成にした。

具体的には、
VM WAN 側には割り当てられている IP を
VM LAN 側には 192.168.1.1/24 を
Ubuntu 18.04 LTS で標準の netplan を用いておおよそ以下のように設定。
/etc/netplan/config.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      addresses: [xxx.xxx.xxx.xxx/24]
      gateway4: xxx.xxx.xxx.1
      nameservers:
        addresses: [yyy.yyy.yyy.yyy, zzz.zzz.zzz.zzz]
    ens4:
      addresses: [192.168.1.1/24]

LAN 内の DHCP サーバーも兼ねるので、
dnsmasq を導入。
/etc/dnsmasq.d/lan.conf に
interface=ens4
#listen-address=192.168.1.1
dhcp-range=192.168.1.2,192.168.1.254,255.255.255.0,6h

firewall は
ufw enable にして default deny
LAN 側の IP に対しては基本 allow にするんだけど、
今回の場合、IP 無い状態で DHCP から IP 取れないといけないため LAN 側 nic に対して基本 allow としておく。
ufw enable
ufw default deny
ufw allow 192.168.0.0/16
ufw allow in on ens4

NAPT (ip masquerade) は以下の公式ガイドを参考に設定。
まず /etc/default/ufw の以下の行を ACCEPT に
DEFAULT_FORWARD_POLICY="ACCEPT"
加えて、/etc/ufw/sysctl.conf の以下の行をアンコメントして有効化
net/ipv4/ip_forward=1
更に /etc/ufw/before.rules の先頭のコメント直後に以下を追加。
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic from ens4 through ens3.
-A POSTROUTING -s 192.168.1.0/24 -o ens3 -j MASQUERADE

# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
あとは ufw を再起動しておく。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます