Linux虚拟机IP设置是搭建开发、测试环境的基础操作,正确的IP配置确保虚拟机能与宿主机、外部网络或其他虚拟机稳定通信,影响远程访问、服务部署、文件共享等场景,本文将详细讲解Linux虚拟机IP设置的全流程,涵盖网络模式选择、静态/动态IP配置、多发行版适配及问题排查。
虚拟机网络模式简介
在配置IP前,需先理解虚拟机的网络模式,不同模式决定IP获取方式和通信范围,主流虚拟机软件(如VMware、VirtualBox)通常提供三种网络模式,其特点对比如下:
模式 | 特点 | IP获取方式 | 适用场景 |
---|---|---|---|
NAT模式 | 虚拟机通过宿主机NAT服务访问外部网络,与宿主机不在同一网段,外部无法直接访问虚拟机 | VMware DHCP分配(默认) | 隔离环境,无需外部访问,适合日常开发 |
桥接模式 | 虚拟机直接连接物理网络,与宿主机处于同一网段,外部网络可像访问宿主机一样访问虚拟机 | 物理网络DHCP或手动静态配置 | 需要对外提供服务(如Web服务器、数据库) |
仅主机模式 | 虚拟机与宿主机互访,无法访问外部网络,形成独立私有网络 | VMware DHCP或手动静态配置 | 安全测试,内部通信,无需联网的场景 |
虚拟机软件中网络模式配置
IP设置前,需在虚拟机软件中确认网络模式,以VMware为例(VirtualBox操作类似):
- 关闭虚拟机电源,右键点击虚拟机→“设置”→“硬件”→“网络适配器”。
- 在“网络连接”区域选择对应模式(如NAT模式/桥接模式/仅主机模式)。
- 若选择“仅主机模式”,需确保“虚拟网络编辑器”中该模式的DHCP服务已开启(编辑→虚拟网络编辑器→仅主机模式→勾选“使用本地DHCP服务将IP地址分配给虚拟机”)。
- 点击“确定”后重启虚拟机或Linux系统网络服务。
Linux系统内IP设置方法
(一)查看当前网络配置
配置IP前,需确认虚拟机网卡名称及当前状态,使用以下命令:
-
推荐命令:
ip addr show
(显示网卡详细信息,包括IP、MAC地址、状态)
示例输出:2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.109.128/24 brd 192.168.109.255 scope global dynamic ens33 valid_lft 3600sec preferred_lft 3600sec inet6 fe80::xx:xx:xx:xx:xx/64 scope link valid_lft forever preferred_lft forever
其中
ens33
为网卡名称,168.109.128
为当前动态IP(dynamic
表示DHCP获取)。 -
兼容命令:
ifconfig
(需安装net-tools
包,CentOS下yum install net-tools
,Ubuntu下apt install net-tools
)
(二)动态IP(DHCP)设置
默认情况下,NAT模式和桥接模式(物理网络有DHCP服务器)会自动获取IP,无需手动配置,若需重新获取IP:
- CentOS/RHEL:
systemctl restart network
- Ubuntu/Debian:
systemctl restart networking
或netplan apply
(新版netplan)
仅主机模式需确保虚拟机软件DHCP服务已开启,否则需手动配置静态IP。
(三)静态IP设置
静态IP适用于需要固定IP地址的场景(如服务器部署),不同Linux发行版配置方式不同:
CentOS/RHEL系列(以CentOS 7为例)
配置文件路径:/etc/sysconfig/network-scripts/ifcfg-网卡名
(如ifcfg-ens33
)。
操作步骤:
(1)备份原配置文件:
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
(2)编辑配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
(3)修改/添加以下参数(根据网络模式调整网关和DNS):
TYPE=Ethernet # 网络类型 PROXY_METHOD=none # 代理方式 BROWSER_ONLY=no # 仅浏览器 BOOTPROTO=static # 静态IP(默认为dhcp) DEFROUTE=yes # 默认路由 IPV4_FAILURE_FATAL=no # IPv4错误不致命 NAME=ens33 # 网卡名称 DEVICE=ens33 # 网卡设备名 ONBOOT=yes # 开机启动网络 # 以下为静态IP配置(NAT模式示例) IPADDR=192.168.109.130 # 静态IP(需与NAT网段不冲突,如192.168.x.2-254) NETMASK=255.255.255.0 # 子网掩码(NAT模式默认) GATEWAY=192.168.109.2 # 网关(NAT模式默认网关,可通过VMware“编辑→虚拟网络编辑器”查看) DNS1=8.8.8.8 # DNS服务器 DNS2=114.114.114.114 # 备用DNS
(4)保存文件(wq
),重启网络服务:
systemctl restart network
Ubuntu/Debian系列(以Ubuntu 20.04为例)
新版Ubuntu(18.04+)使用netplan
工具,配置文件位于/etc/netplan/
下(如50-cloud-init.yaml
)。
操作步骤:
(1)备份原配置文件:
cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
(2)编辑配置文件:
vi /etc/netplan/50-cloud-init.yaml
(3)修改为静态IP配置(YAML格式,注意缩进):
network: version: 2 ethernets: ens33: # 网卡名称(通过`ip addr`确认) dhcp4: no # 关闭DHCP addresses: [192.168.109.131/24] # 静态IP/子网掩码长度(如24表示255.255.255.0) gateway4: 192.168.109.2 # 网关(NAT模式默认) nameservers: # DNS配置 addresses: [8.8.8.8, 114.114.114.114]
(4)应用配置:
netplan apply
旧版Ubuntu(16.04及以下)使用/etc/network/interfaces
文件,编辑添加:
auto ens33 iface ens33 inet static address 192.168.109.131 netmask 255.255.255.0 gateway 192.168.109.2 dns-nameservers 8.8.8.8 114.114.114.114
保存后执行systemctl restart networking
。
(四)图形化界面设置(适合新手)
- CentOS:执行
nmtui
命令,进入“文本用户界面”→“编辑连接”→选择网卡→“自动配置”改为“手动”→输入IP、网关、DNS→“确定”→“激活”连接。 - Ubuntu:点击桌面右上角网络图标→选择“有线已连接”→“齿轮”图标→IPv4→“手动”→输入IP、子网掩码、网关、DNS→“应用”。
网络验证与问题排查
设置完成后,需验证网络连通性:
- 测试本地网络:
ping 192.168.109.2
(网关地址),若通,说明与网关通信正常。 - 测试外网连通性:
ping 8.8.8.8
,若不通,检查:- 防火墙状态:
systemctl stop firewalld
(临时关闭)或添加允许规则。 - SELinux状态:
setenforce 0
(临时关闭,getenforce
查看状态)。 - 虚拟机软件网络模式:确认NAT模式网关正确,桥接模式与宿主机同网段。
- 防火墙状态:
- 查看网络日志:
- CentOS:
journalctl -u network
- Ubuntu:
journalctl -u networking
- CentOS:
常见问题总结
- IP冲突:静态IP与网络中其他设备冲突,通过
arp -a
查看同网段IP,修改静态IP。 - 无法获取IP:DHCP模式下若无法获取IP,检查虚拟机软件DHCP服务是否开启(NAT模式需在“虚拟网络编辑器”中启用)。
- 网卡未识别:执行
dmesg | grep eth
查看内核日志,确认驱动是否正常。
FAQs
问:设置静态IP后,虚拟机无法上网,如何排查?
答:首先检查网关和DNS配置是否正确(cat /etc/resolv.conf
查看DNS,route -n
查看网关);然后关闭防火墙(systemctl stop firewalld
)和SELinux(setenforce 0
)临时测试;若仍不通,确认虚拟机软件网络模式(NAT模式网关应为192.168.x.2,桥接模式需与宿主机同网段)。
问:如何查看Linux虚拟机的当前IP地址?
答:使用命令行工具:ip addr show
或ip a
(推荐,显示详细信息);ifconfig
(需安装net-tools
),图形化界面:CentOS通过nmtui
查看,Ubuntu点击桌面右上角网络图标查看IP详情。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/21001.html