Ubuntu与CentOs两种静态IP配置方式

0 阅读5分钟

网络基础与静态 IP 配置(Ubuntu & CentOS)

为什么需要静态 IP?

  • NFS 的访问控制(/etc/exports)和客户端挂载(/etc/fstab)都依赖 IP/主机名。
  • DHCP 分配的地址重启后会变,一变所有挂载全部失效。
  • 生产环境中存储服务器 IP 还会被写进 DNS、监控、备份白名单,从来都是静态。

0. 前置检查:先看环境再动手

先查网卡名和网关(两个系统通用):

ip addr                     # 当前 IP 和网卡名(如 ens33)
ip route | grep default     # 默认网关(本次实验为 192.168.232.2)

然后分别用各自的方式查看 IP 是动态还是静态

Ubuntu:查看 netplan 配置

ls /etc/netplan/            # netplan 配置文件(本次为 50-cloud-init.yaml)
cat /etc/netplan/50-cloud-init.yaml

dhcp4: true 就表示现在是动态 IP,由 DHCP 自动分配。

CentOS:查看 ifcfg 配置

cat /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO="dhcp" 表示 IP 由路由动态分配,但我们要改成静态分配。

一、Ubuntu 静态 IP 配置

1. 禁用 cloud-init 网络接管

50-cloud-init.yaml 是 cloud-init 自动生成的,直接改的话重启后会被还原。先关掉 cloud-init 的网络配置:

sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

在配置文件里加上一句:

network: {config: disabled}

440c9d79-9763-4dcd-8c00-8e94762186d0.png

2. 备份原配置

sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak

.bak 结尾不会被 netplan 加载,放在同目录安全。

3. 写入静态 IP 配置

sudo vim /etc/netplan/50-cloud-init.yaml

修改成下面这段:

network:
  version: 2
  ethernets:
    ens33:
      dhcp4: false
      addresses:
        - 192.168.232.131/24    # 192.168.232 是"网络位"(小区名),由网络环境决定,不能凭空改;131(门牌号)可以变
      routes:
        - to: default
          via: 192.168.232.2    # 下一跳网关(保安亭),必须和 IP 同网段,跟 ip route | grep default 查到的一致
      nameservers:
        addresses: [192.168.232.2, 114.114.114.114]    # DNS 服务器地址

6d365b0c-0a2b-4da5-8b67-d70328d32412.png

4. 应用配置

sudo netplan apply

如果出现 WARNING:root:Cannot call Open vSwitch,忽略即可,只是提示系统没装 OVS,不影响配置。

5. 验证

ip addr show ens33
ping -c 3 192.168.232.2     # 网关
ping -c 3 baidu.com         # 外网

预期:ens33 显示 inet 192.168.232.131/24没有 dynamic 字样

⚠️ netplan apply 后 Xshell 会断线(IP 变了),用新 IP 重新连接即可。


二、CentOS 静态 IP 配置(异曲同工)

1. 配置文件位置不同

CentOS 的网卡配置文件在 /etc/sysconfig/network-scripts/ifcfg-ens33

cat /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO="dhcp" 表示 IP 由路由动态分配,但我们要改成静态分配。

2. 备份配置文件

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33_bak_0818

3. 修改配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改文件内容如下:

DEVICE=ens33
BOOTPROTO=static        # 由动态改为静态分配
ONBOOT=yes              # 开机时是否自动启用这块网卡
IPADDR=192.168.232.131  # 静态 IP
NETMASK=255.255.255.0   # 子网掩码
GATEWAY=192.168.232.2   # 网关

4. DNS 配置

和 Ubuntu 不同的是,CentOS 的 DNS 配置在另一个文件 /etc/resolv.conf

vim /etc/resolv.conf

加入:

nameserver 8.8.8.8  # 谷歌 DNS

⚠️ 小提示:/etc/resolv.conf 在重启网络时可能被覆盖,更推荐的做法是在 ifcfg-ens33 里加一行 DNS1=192.168.232.2,这样才永久生效。

5. 重启网络生效

systemctl restart network
ip addr
ping www.baidu.com

看看网络是否正常。


三、网络配置理解:虚拟机访问 www.baidu.com 的完整流程

场景:你住 192.168.232.131 这一户,想点一份"百度"外卖。

第一步:查地址(DNS 解析)

你不知道百度的详细地址,于是打开外卖平台搜索框(DNS),输入 www.baidu.com。系统看 /etc/resolv.conf,知道该问哪个平台(192.168.232.28.8.8.8),问完得到结果:

www.baidu.com → 103.235.46.102

第二步:看是不是同小区(子网掩码判断)

拿到地址后,先拿子网掩码 255.255.255.0 算一下:

你的地址:192.168.232.131  →  网络位是 192.168.232(小区:192.168.232)
百度地址:103.235.46.102   →  网络位是 103.235.46(小区:103.235.46)

不是同一个小区!不同小区不能直接送,必须出小区。

如果目标和你同小区,比如 192.168.232.1,就直接送,不需要经过保安亭——这也是为什么 ping 同网段不需要网关。

第三步:交给保安亭(网关)

既然要出小区,数据包就交给保安亭 192.168.232.2。你的电脑查路由表,发现默认路由 default via 192.168.232.2,于是把所有"寄往外地的快递"统一交给它。

第四步:保安亭接力转送(路由)

保安亭(VMware NAT 网关)把快递转出去,经过 VMnet8 → Windows → 你的路由器 → 运营商,一路上的每一个"保安亭"(路由器)都只干一件事:看快递上写的目的地,把它送到下一站。最终到达百度服务器 103.235.46.102

第五步:百度回包

百度收到请求,把回复按原路寄回来:还是经过那一串保安亭,最后从 192.168.232.2 送进小区,交到你手上 192.168.232.131

第六步:你看到结果

浏览器显示网页,或者 ping 打出 64 bytes from 103.235.46.102


四、Ubuntu 与 CentOS 配置对比

对比项UbuntuCentOS
配置文件/etc/netplan/*.yaml/etc/sysconfig/network-scripts/ifcfg-ens33
动态/静态开关dhcp4: true / falseBOOTPROTO="dhcp" / static
掩码写法/24(CIDR 写法)NETMASK=255.255.255.0
网关写法routes: to: default, via: ...GATEWAY=...
DNS 配置nameservers.addresses/etc/resolv.confDNS1=...
生效命令sudo netplan applysystemctl restart network
是否会被覆盖cloud-init 会还原,需先禁用一般不会

小结

  • 配置前先跑 ip addrip route | grep default,看清自己住在哪个小区、保安亭在哪。
  • 格式跟规则走dhcp4addressesroutesnameservers 这些字段是 netplan 规定死的;BOOTPROTOIPADDRGATEWAY 是 CentOS 的规矩。
  • 数值跟环境走:IP、网关、DNS 由网络环境决定,不能照抄。