我一直在尝试为 Ubuntu 服务器设置互联网访问(是的,它必须是 macOS 主机上的 Ubuntu 服务器,尽管我更喜欢轻量级的 Alpine)。据我所知,我需要使用 Tap/Tun 网络。
我目前所做的:
已安装TunTap OSX,所以我有一个
/dev/tap0
设备。bridge1
使用 ifconfig设置网络设备将设备的 IP 设置
bridge1
为192.168.100.1/24
。已将 IP 分配
192.168.100.0
给 tap0。根据以下说明设置 DHCP 服务器和数据包转发本网站
在虚拟机启动和关闭时
addm
创建脚本。(我已验证这些脚本有效)。deletem
tap0
bridge1
明显的问题
此时,WireShark 显示没有流量通过tap0
,但我的所有环回流量似乎都通过了bridge1
。
Ubuntu Server 客户机仍然无法访问互联网。我无法从主机向客户机发送任何数据,反之亦然(我已尝试使用ssh
netcat 侦听器/客户端对)。
ip link show
在客户机中运行仅显示 2 个设备:lo0
和ens3
。当 Ubuntu 服务器启动时,后者始终处于关闭状态,直到我运行ip link set ens3 up
(这并不能解决任何问题)。
当我以前在 VirtualBox 上运行此 VM 时(现在在 macOS 上似乎已损坏),使用虚拟 NAT 可以完美地进行网络连接。我将图像转换.vdi
为.qcow2
,因此 quest OS 中的所有内容都与以前相同。
我在这里做错了什么吗?如果是,我可以修复什么?如果没有,我下一步该怎么做?感谢您的考虑。
数据转储
bridge1
当虚拟机运行时:
$ ifconfig bridge1
bridge1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
ether fa:ff:c2:96:c0:01
inet 192.168.100.1 netmask 0xffffff00 broadcast 192.168.100.255
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x0
member: tap0 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 15 priority 0 path cost 0
Address cache:
52:54:0:12:34:56 Vlan1 tap0 992 flags=0<>
media: autoselect
status: active
bridge1
当虚拟机不是跑步:
$ ifconfig bridge1
bridge1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether fa:ff:c2:96:c0:01
inet 192.168.100.1 netmask 0xffffff00 broadcast 192.168.100.255
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x0
Address cache:
media: <unknown type>
status: inactive
tap0
当虚拟机不是跑步:
$ ifconfig tap0
ifconfig: interface tap0 does not exist
tap0
当虚拟机运行时:
$ ifconfig tap0
tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 7e:9b:23:d0:c2:97
media: autoselect
status: active
open (pid 2415)
我的 QEMU 命令:
sudo qemu-system-x86_64 \
-m 1024m \
-smp 1 \
-boot d \
-hda Server.qcow2 \
-net nic,model=virtio \
-net tap,id=mynet0,ifname=tap0,script=qemu-ifup.sh,downscript=qemu-ifdown.sh
答案1
如果您希望自动为虚拟机配置 NAT 网络,您只需 1) 在系统偏好设置中将您的 Internet 连接共享到桥接接口,然后 2) 将虚拟机的 tapN 接口添加到桥接中。很简单!
点击此处查看更多详细信息 -https://gist.github.com/andriytk/bd3def8c30cbd474490280436c779027。