Linux虚拟机固定IP超详细教程

Linux 虚拟机固定 IP 地址详细教程(超详细小白版)

在使用 Linux 虚拟机时,你可能会遇到这样一个问题:

每次重启虚拟机,IP 地址都会变!导致远程连接的时候,你还要重新去查 IP 地址,非常麻烦。本文将手把手教你如何固定虚拟机的 IP 地址,让它永远不变


为什么 IP 会变?

默认情况下,Linux 虚拟机的 IP 地址是通过 DHCP(动态主机配置协议) 自动分配的。

DHCP 就像一个小区物业,每次你开机就去物业那边领一个临时车位号。

  • 如果车位号(IP 地址)是临时的,下次来可能会换。
  • 所以我们每次重启,就可能得到一个不同的 IP。

但是我们需要远程连接虚拟机(例如用 Xshell、VSCode、SSH 登录),这时就希望IP 地址固定下来,不然每次都得改,非常麻烦。


固定 IP 的思路

要让 IP 地址固定,核心就是手动配置网络

  1. 告诉虚拟机不要再去 DHCP 那里随便领号了。
  2. 直接在虚拟机里写死一个 IP 地址。

换句话说,就是我们自己规定"我的虚拟机就是用这个 IP,不许改"。


查看当前网络信息

在配置之前,我们需要知道当前网络的基本信息(子网掩码、网关、DNS)。

  1. 打开终端,输入:

    bash 复制代码
    ip addr

    或者:

    bash 复制代码
    ifconfig

    你会看到类似这样的输出:

    复制代码
    ens33: <BROADCAST,MULTICAST,UP,LOWER_UP>
        inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic ens33
    • ens33:网卡名称(不同虚拟机可能不同,比如 eth0ens160
    • inet 192.168.1.100/24:IP 地址是 192.168.1.100,掩码是 /24(即 255.255.255.0)
    • brd 192.168.1.255:广播地址
    • scope global dynamic:说明这是动态分配的
  2. 查看网关:

    bash 复制代码
    ip route

    输出示例:

    复制代码
    default via 192.168.1.1 dev ens33
    • 网关是 192.168.1.1
  3. 查看 DNS:

    bash 复制代码
    cat /etc/resolv.conf

    示例:

    复制代码
    nameserver 8.8.8.8
    nameserver 114.114.114.114
    • DNS 就是域名解析服务器,一般用 8.8.8.8(Google)或者 114.114.114.114(国内)。

修改配置文件

接下来就是核心操作:编辑网络配置文件。

这里有两种常见情况,取决于你用的 Linux 发行版。

方法一:基于 Netplan 的系统(Ubuntu 18.04+)

  1. 编辑配置文件:

    bash 复制代码
    sudo nano /etc/netplan/01-netcfg.yaml
  2. 修改内容,示例:

    yaml 复制代码
    network:
      version: 2
      ethernets:
        ens33:   # 网卡名称,前面查到的
          dhcp4: no
          addresses:
            - 192.168.1.200/24   # 固定的 IP
          gateway4: 192.168.1.1  # 网关
          nameservers:
            addresses: [8.8.8.8, 114.114.114.114]

    注意:YAML 文件缩进要对齐,空格非常严格!

  3. 应用配置:

    bash 复制代码
    sudo netplan apply
  4. 验证:

    bash 复制代码
    ip addr
    ping www.baidu.com

方法二:基于 ifcfg 文件的系统(CentOS、RHEL)

  1. 找到网卡配置文件:

    bash 复制代码
    cd /etc/sysconfig/network-scripts/
    ls ifcfg-*

    例如:ifcfg-ens33

  2. 编辑:

    bash 复制代码
    sudo nano ifcfg-ens33
  3. 修改内容:

    ini 复制代码
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=ens33
    DEVICE=ens33
    ONBOOT=yes
    IPADDR=192.168.1.200
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=114.114.114.114
  4. 重启网络:

    bash 复制代码
    sudo systemctl restart network

    或者:

    bash 复制代码
    nmcli connection reload
  5. 验证:

    bash 复制代码
    ip addr
    ping www.baidu.com

虚拟机软件的设置(重点)

如果你用的是 VMware 或 VirtualBox,除了虚拟机内部配置,还需要检查网络模式。

  • NAT 模式 :虚拟机通过宿主机上网,IP 是 192.168.xxx.xxx,适合上网用。
  • 桥接模式:虚拟机和宿主机在同一个局域网,可以直接被其他电脑访问。
  • 仅主机模式:虚拟机只能和宿主机通信,不能上网。

一般我们要远程 SSH 连接,推荐用 桥接模式,这样虚拟机就像家里的另一台电脑。


常见问题与解决办法

  1. 配置完后连不上网?

    • 检查网关和 IP 是否在同一网段。
    • 检查是否输错子网掩码。
  2. 配置文件报错?

    • 如果用的是 netplan,要小心 YAML 文件缩进。
    • 如果用的是 ifcfg,注意不要多余空格。
  3. 虚拟机能上网,但外部连不上?

    • 检查虚拟机的防火墙:

      bash 复制代码
      sudo systemctl stop firewalld
    • 检查虚拟机网络模式是不是 NAT。换成桥接。


总结

  1. Linux 默认用 DHCP 分配 IP,所以 IP 会变。
  2. 固定 IP 的方法:手动写入 IP、子网掩码、网关和 DNS。
  3. Ubuntu 用 Netplan ,CentOS 用 ifcfg 文件
  4. 配置时要注意虚拟机网络模式,推荐桥接。
  5. 常见问题一般是 网段不匹配文件写错

这样配置好之后,你的虚拟机 IP 就固定了,再也不用重启后到处找 IP 地址啦!🎉

相关推荐
初学者_xuan2 小时前
零基础新手小白快速了解掌握服务集群与自动化运维(十五)Redis模块-Redis数据库基础
运维·数据库·自动化
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [kernel][time]alarmtimer
linux·笔记·学习
小志biubiu2 小时前
【Linux】Ext系列文件系统
linux·服务器·c语言·经验分享·笔记·ubuntu·操作系统
ha20428941943 小时前
Linux操作系统学习之---基于环形队列的生产者消费者模型(毛坯版)
linux·c++·学习
DooTask官方号3 小时前
DooTask 1.3.38 版本更新:MCP 服务器与 AI 工具深度融合,开启任务管理新体验
运维·服务器·人工智能·开源软件·dootask
南林yan5 小时前
Debian、Ubuntu、CentOS:Linux 三大发行版的核心区别
linux·ubuntu·debian·linux内核
せいしゅん青春之我6 小时前
【JavaEE初阶】TCP核心机制3——连接管理
网络·网络协议·tcp/ip·java-ee
阿Y加油吧6 小时前
Docker从入门到实战——含容器部署、docker基础、项目部署
运维·docker·容器
st7802066 小时前
Debian 13.1 下编译Openwrt24
运维·debian·openwrt
Wang's Blog7 小时前
Linux小课堂: NGINX反向代理服务器配置与实践
linux·运维·nginx