我正在尝试创建一个 Virtualbox VM(运行 Ubuntu Server 22.10),它具有 NAT(用于互联网访问)和具有静态 IP 的仅主机适配器。似乎我只能让其中一个工作。理想情况下,我会使用和等自动化工具配置整个设置vagrant
,ansible
但目前我使用netplan
它直接在 VM 中调试。
(我是网络新手,因此欢迎任何补充解释。)
如果我netplan apply
仅进行 NAT 配置:
# This is the network config written by 'subiquity'
network:
ethernets:
enp0s3:
dhcp4: true
version: 2
我可以正常访问互联网。结果route -n
如下:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.2.2 0.0.0.0 UG 100 0 0 enp0s3
10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
10.0.2.2 0.0.0.0 255.255.255.255 UH 100 0 0 enp0s3
10.0.2.3 0.0.0.0 255.255.255.255 UH 100 0 0 enp0s3
如果我还应用仅主机配置:
network:
version: 2
renderer: networkd
ethernets:
enp0s8:
addresses:
- 192.168.56.11/24
我失去了互联网访问(ping -c 1 google.com
导致Network is unreachable
,以及其他命令,如curl something
或sudo apt update
)。输出来自route -n
:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
我注意到了差异,但我无法以有用的方式解释它。
答案1
它们绝对可以!您必须配置这两个接口才能使它们工作。我可以帮你。首先,关闭你的虚拟机。然后,在虚拟机的 VirtualBox 设置部分中,确保适配器 1连接到 NAT。接下来,点击适配器2选项卡并将其设置为“仅主机适配器”。您可能已经到达了这一点。现在开始有趣的事情了!
启动虚拟机并登录。为了简化操作,无需输入 sudo每一个时间,执行sudo su
然后cd /etc/netplan
。警告:以 root 身份执行任何操作都可能存在危险。请按照我的指示操作,一旦完成,请退出 root 身份。
这是所有魔法发生的地方。您将需要编辑 YAML 文件。就我而言,我必须编辑 00-installer-config.yaml 文件。下面是我如何配置我的虚拟机以同时运行 NAT 和仅主机:
# This is the network config written by 'subiquity'
network:
version: 2
ethernets:
enp0s3: #This is your network adapter attached to NAT
dhcp4: true
routes:
- to: default
via: 10.0.2.2
nameservers:
addresses: #Below I chose to use google as the DNS servers. You can choose other DNS servers if you'd like.
- 8.8.8.8
- 8.8.4.4
enp0s8: #This is your network adapter attached to Host-only
dhcp4: no
addresses:
- 192.168.56.101/24 #This is the static IP.
routes:
- to: default
via: 192.168.56.1
nameservers:
addresses:
- 192.168.1.200
修改文件后,你必须通过执行以下命令确保操作系统知道使用新配置netplan apply
现在退出root:root@machine-name:/etc/netplan# exit
现在您可以ping google.com
同时通过互联网访问您的虚拟机和一个静态 IP 地址!
繁荣!