在 QEMU 网络 Guest 中运行 Alpine Linux
为了使网络正常运行,你可以使用 tun/tap 接口,它会变成一个真实的接口。关键是在正确的虚拟 vlan 上定义虚拟网络接口,并使用正确的 ifup 脚本。
你需要在命令行界面使用 2 个 net 命令,一个用于主机
-net tap,vlan=[somenumber],ifname=[host if],script=[some script]
一个用于 guest 系统
-net nic,vlan=[samenumber]
因此,要在 qemu 虚拟机系统上拥有一个连接到物理主机 tap0 的网卡,
qemu -net tap,vlan=0,ifname=tap0,script=./qemu-ifup -net nic,vlan0 \ -boot d -cdrom alpine*.iso}}
要创建具有多个网卡的 qemu guest 系统,只需重复使用 -net 命令。
qemu -net tap,vlan=0,ifname=tap0,script=./qemu-ifup -net nic,vlan0 \ -net tap,vlan=0,ifname=tap1,script=./qemu-ifup -net nic,vlan0 \ -net tap,vlan=0,ifname=tap2,script=./qemu-ifup -net nic,vlan0 \ -boot d -cdrom alpine*.iso}}
现在你的 Alpine guest 系统将有 3 个网卡,分别映射到 tap0、tap1 和 tap2。
实际上发生的是你正在有效地创建一个点对点隧道,物理 tap0 设备是一个端点,而虚拟机 eth0 是隧道的另一个端点。
因此,你需要为隧道的两端都分配 IP 地址。qemu-ifup 脚本就是为主机执行此操作的。这是一个例子
#!/bin/sh case $1 in tun0 | tap0 ) sudo /sbin/ip addr add 192.168.1.100/24 dev $1 sudo /sbin/ip link set $1 up ;; tap1 | tun1 ) sudo /sbin/ip addr add 192.168.2.100/24 dev $1 sudo /sbin/ip link set $1 up ;; tap2 | tun2 ) sudo /sbin/ip addr add 192.168.3.100/24 dev $1 sudo /sbin/ip link set $1 up ;; esac
在你的 Alpinebox 中,创建一个像这样的 interfaces 文件
iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.100 iface eth1 inet static address 192.168.2.1 netmask 255.255.255.0 iface eth0 inet static address 192.168.3.1 netmask 255.255.255.0
如果现在你在你的主机上为 tap0 添加一个 MASQUERADE 规则到你主机的默认网卡,并且你开启了主机上的 ip_forward,你现在就可以直接从你的 qemu guest 系统进行 svn 更新、上网、运行 transmission 等操作。