VirtualBox Ubuntu NAT网络虚拟机创建两个子网的正确方法
作为刚接触Ubuntu和网络的新手,你首先得明确一个核心前提:虚拟机要使用两个子网,必须先在VirtualBox中添加额外的虚拟网卡——系统里的网络配置是建立在硬件存在的基础上的,光修改配置文件根本没用哦。下面一步步来帮你搞定:
1. 先在VirtualBox中添加虚拟网卡
先关闭你的Ubuntu虚拟机,然后按以下操作来:
- 打开VirtualBox,选中你的目标虚拟机,点击顶部的「设置」按钮
- 切换到「网络」标签页,你会看到默认的「网卡1」已经设置为NAT模式
- 点击「网卡2」,勾选「启用网络连接」,网络类型选择「NAT」;如果需要第二个独立子网,继续配置「网卡3」(同样选NAT模式)
- 点击「确定」,重新启动虚拟机
2. 识别系统中的网卡名称
现在Ubuntu默认使用「可预测网络接口命名规则」,不再是传统的eth1、eth2,而是类似enp0s8、enp0s9这样的命名。你可以通过以下命令查看所有可用网卡:
ip link show
或者更直观的方式:
lshw -C network | grep logical
把新添加的网卡名称记下来,后面配置要用到。
3. 配置网络(分两种主流场景)
场景A:使用传统的/etc/network/interfaces(Ubuntu 17.10及更早版本)
编辑/etc/network/interfaces配置文件:
sudo nano /etc/network/interfaces
在文件末尾添加两个网卡的配置(假设新网卡是enp0s8和enp0s9):
# 第一个额外网卡(对应第一个子网) auto enp0s8 iface enp0s8 inet dhcp # 第二个额外网卡(对应第二个子网) auto enp0s9 iface enp0s9 inet dhcp
如果需要设置静态IP,把dhcp改成static,补充IP、子网掩码和网关信息:
auto enp0s8 iface enp0s8 inet static address 10.0.3.100 netmask 255.255.255.0 gateway 10.0.3.1 auto enp0s9 iface enp0s9 inet static address 10.0.4.100 netmask 255.255.255.0 gateway 10.0.4.1
小提示:VirtualBox的NAT模式下,每个网卡的默认网关通常是
x.x.x.1,子网段一般是10.0.x.0/24(第一个NAT网卡是10.0.2.0,第二个是10.0.3.0,以此类推)
保存退出后,重启网络服务生效:
sudo systemctl restart networking
场景B:使用Netplan(Ubuntu 17.10及以后版本,默认配置方式)
Ubuntu新版本用Netplan管理网络,配置文件在/etc/netplan/目录下,通常是00-installer-config.yaml这类文件名。
先备份原配置文件(避免改错了无法恢复):
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
然后编辑配置文件:
sudo nano /etc/netplan/00-installer-config.yaml
添加两个网卡的配置,示例如下:
network: ethernets: enp0s3: # 原默认网卡 dhcp4: true enp0s8: # 第一个额外网卡(对应第一个子网) dhcp4: true enp0s9: # 第二个额外网卡(对应第二个子网) dhcp4: true version: 2
如果要设置静态IP,修改为:
network: ethernets: enp0s3: dhcp4: true enp0s8: addresses: [10.0.3.100/24] gateway4: 10.0.3.1 nameservers: addresses: [8.8.8.8, 1.1.1.1] enp0s9: addresses: [10.0.4.100/24] gateway4: 10.0.4.1 nameservers: addresses: [8.8.8.8, 1.1.1.1] version: 2
重要提醒:Netplan的YAML配置文件对缩进要求严格,一定要用空格,不能用Tab键!
保存退出后,先测试配置是否正确:
sudo netplan try
测试没问题的话,应用配置:
sudo netplan apply
4. 验证配置是否成功
执行以下命令查看所有网卡的IP地址,确认两个子网的IP已正确分配:
ip addr show
也可以ping对应子网的网关,测试连通性:
ping 10.0.3.1 ping 10.0.4.1
内容的提问来源于stack exchange,提问作者kostas

