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

相关推荐
JuiceFS13 分钟前
JuiceFS sync 原理解析与性能优化,企业级数据同步利器
运维·后端
q***47181 小时前
使用Canal将MySQL数据同步到ES(Linux)
linux·mysql·elasticsearch
Logan Lie1 小时前
Web服务监听地址的取舍:0.0.0.0 vs 127.0.0.1
运维·后端
Y淑滢潇潇2 小时前
RHCE 防火墙实验
linux·运维·rhce
wadesir2 小时前
当前位置:首页 > 服务器技术 > 正文Linux网络HSRP协议(实现路由器热备份与高可用性的实用指南)
linux·服务器·网络
稻谷君W2 小时前
Ubuntu 远程访问 Win11 WSL2 并固定访问教程
linux·运维·ubuntu
泡沫·2 小时前
4.iSCSI 服务器
运维·服务器·数据库
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [kernel]workqueue
linux·笔记·学习
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [kernel]usermode_helper
linux·笔记·学习
weixin_436525073 小时前
使用 idea 命令行构建 Docker 镜像并部署到云服务器
linux·docker·github