Firecrackerを外部と接続させるためにTAPデバイスの設定をまとめる。
マイクロVMと外部ネットワークとのTAP接続は以下となる。

代表のIPをenp0s3に設定しNATを設定することでMicroVMと通信できるようにしている。
以下にTAPデバイス生成のスクリプトをまとめるので、適宜環境に応じて変更して使ってみてください。
#!/bin/bash
# setup_network.sh
DEVICE="tap0"
VM_IP="172.16.0.2"
EIP="192.168.10.251"
# 1. 古いTAPデバイスの掃除(あれば消す、なければ無視)
sudo ip link delete "$DEVICE" 2>/dev/null || true
# TAPデバイスの作成と起動
sudo ip tuntap add dev "$DEVICE" mode tap
sudo ip addr add 172.16.0.1/24 dev "$DEVICE"
sudo ip link set "$DEVICE" up
echo "[OK] TAP device $DEVICE created."
# 2. ルーター機能の有効化
sudo sysctl -w net.ipv4.ip_forward=1 > /dev/null
echo "[OK] IP forwarding enabled."
# 3. 仮想EIPの付与(すでに存在する場合のエラーを握りつぶす)
sudo ip addr add $EIP/24 dev enp0s3 2>/dev/null || true
echo "[OK] Virtual EIP $EIP attached to enp0s3."
# 4. NATテーブルの設定(Dockerのルールを消さないための工夫)
sudo iptables -t nat -D PREROUTING -d $EIP -j DNAT --to-destination $VM_IP 2>/dev/null || true
sudo iptables -t nat -A PREROUTING -d $EIP -j DNAT --to-destination $VM_IP
sudo iptables -t nat -D POSTROUTING -s $VM_IP -j SNAT --to-source $EIP 2>/dev/null || true
sudo iptables -t nat -A POSTROUTING -s $VM_IP -j SNAT --to-source $EIP
echo "[OK] 1:1 NAT (DNAT/SNAT) configured."
# 5. FORWARDルールの設定
sudo iptables -D FORWARD -s 172.16.0.0/24 -j ACCEPT 2>/dev/null || true
sudo iptables -I FORWARD 1 -s 172.16.0.0/24 -j ACCEPT
sudo iptables -D FORWARD -d 172.16.0.0/24 -j ACCEPT 2>/dev/null || true
sudo iptables -I FORWARD 1 -d 172.16.0.0/24 -j ACCEPT
echo "[OK] FORWARD pass issued."次回は実際にTAPデバイスを使って通信ができるFirecrackerの設定をまとめる。