游客发表
CentOS 7 改 IP 这件事,修改说简单也简单,地址说坑多也真不少。修改我见过太多人上来就 ifconfig 一顿敲,地址结果重启后配置全丢。修改CentOS 7 跟 6 最大的地址区别就是网络管理换成了 NetworkManager,网卡命名也从 eth0 变成了 ens33 这种 predictable name。修改你要是地址还按老习惯去改 /etc/sysconfig/network-scripts/ifcfg-eth0,大概率找不到文件。修改
先确认你的地址网卡叫什么。终端里敲:
ip addr 输出里能看到类似 ens33、修改ens192、地址enp0s3 这样的修改名字。记下来,地址后面要用。修改别用 ifconfig 了,CentOS 7 最小化安装默认不带 net-tools,得额外装。用 ip 命令更省事。
假设网卡是 ens33,配置文件在 /etc/sysconfig/network-scripts/ifcfg-ens33。改之前先备份,这习惯能救命:
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak 然后用 vi 或者 nano 打开。默认装完系统后,这个文件里 BOOTPROTO 通常是 dhcp,ONBOOT 可能是 no。你要改成静态 IP,核心就这几行:
BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=114.114.114.114 注意 ONBOOT=yes 必须写,不然开机网卡不启动,你 SSH 都连不上。有人改完 IP 重启网络服务,结果当前会话直接断掉,因为 IP 变了。所以最好在虚拟机控制台或者物理机跟前操作,别远程搞。
改完保存,重启网络:
systemctl restart network 如果报错,多半是配置文件语法问题。比如等号两边不能有空格,IP 地址别写错段。CentOS 7 的 network 服务跟 NetworkManager 有时候会打架。你可以用 nmcli 来改,更符合 CentOS 7 的脾气:
nmcli con mod ens33 ipv4.addresses 192.168.1.100/24 nmcli con mod ens33 ipv4.gateway 192.168.1.1 nmcli con mod ens33 ipv4.dns "8.8.8.8 114.114.114.114" nmcli con mod ens33 ipv4.method manual nmcli con up ens33 这样改完,配置文件也会同步更新。我个人更推荐 nmcli,尤其批量改多台机器的时候,脚本跑起来干净利落。
验证一下:
ip addr show ens33 ping -c 3 192.168.1.1 ping -c 3 baidu.com 能 ping 通网关说明局域网没问题,能 ping 通外网说明 DNS 和路由都对。要是外网不通但网关通,检查 /etc/resolv.conf,看看 DNS 写进去没有。有时候 NetworkManager 会覆盖这个文件,你可以在 ifcfg 文件里加 PEERDNS=no 防止它乱改。
还有个坑:如果你改了 IP 段,比如从 192.168.1.x 换到 10.0.0.x,网关和 DNS 也得跟着换。别只改 IPADDR 就完事。另外虚拟机里改完,记得检查虚拟网络编辑器的 DHCP 范围,别跟静态 IP 冲突。
最后说一句,改完最好 reboot 一次,确认开机后 IP 还在。我见过 systemctl restart network 生效但重启后失效的情况,多半是 ONBOOT 没设对,或者 NetworkManager 和 network 服务冲突。CentOS 7 里这两个服务并存,选一个用就行,别两边都配。
友情链接