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 地址啦!🎉

相关推荐
Gss7772 小时前
Docker 镜像知识总结
运维·docker·容器
梁正雄2 小时前
1、docker入门简介
运维·docker·容器
東雪蓮☆2 小时前
Docker 数据卷与存储机制(持久化与共享实战)
运维·docker·容器
牛马的人生2 小时前
GitLab入门教程:打开DevOps全流程的大门
运维·其他·gitlab·devops
阑梦清川2 小时前
动静态库和编译链接简述
linux
拾光Ծ2 小时前
【Linux】入门指南:基础指令详解Part One
linux·运维·服务器·centos
egoist20233 小时前
[linux仓库]肝爆进程通信:匿名管道、命名管道、进程池核心原理与实战【万字长文】
linux·服务器·进程通信·匿名管道·命名管道·进程池
轻颂呀3 小时前
线程的概念和控制
linux
我命由我123453 小时前
Git 暂存文件警告信息:warning: LF will be replaced by CRLF in XXX.java.
java·linux·笔记·git·后端·学习·java-ee