Linux 网络配置切换术:告别 ifconfig 手忙脚乱的日子
大家好,我是33blog的运维老司机。今天想和大家聊聊一个看似简单却经常让人抓狂的问题——如何在Linux下优雅地切换多个网络配置文件。上周我在给客户部署服务器时,就因为频繁切换办公网/生产网配置,差点把ifconfig敲出火星子…
为什么我们需要网络配置切换?
相信很多运维同行都遇到过这样的场景:笔记本连公司WiFi要用静态IP,回家连路由器要改DHCP;服务器在测试环境用10网段,上线要切到192网段。每次都要重新配置IP、网关、DNS,不仅麻烦还容易出错。
我最早的做法是写个network_config.sh
脚本,后来发现每次改参数都要vim编辑,实在太原始了。直到有天看到同事用nmcli
行云流水地切换配置,才打开了新世界的大门。
方案一:NetworkManager 的 connection 管理
现代Linux发行版基本都使用NetworkManager服务,它自带的nmcli
命令行工具其实超级强大:
# 查看现有连接配置
nmcli connection show
# 创建办公网络配置
nmcli connection add type ethernet
con-name "office" ifname eth0
ip4 192.168.1.100/24 gw4 192.168.1.1
nmcli connection modify office ipv4.dns "8.8.8.8"
# 切换到家网络配置
nmcli connection up home
我特别喜欢它的connection
概念——把整套网络参数打包命名,切换时就像换电视频道一样简单。而且配置会自动持久化,重启也不怕。
方案二:ifcfg 文件轮换大法
有些老派管理员(比如我师父)更喜欢传统的/etc/sysconfig/network-scripts/
配置方式。我们可以这样玩:
# 备份当前配置
cp ifcfg-eth0 ifcfg-eth0.bak
# 创建不同场景配置
echo "office配置" > ifcfg-eth0.office
echo "home配置" > ifcfg-eth0.home
# 快速切换函数
function net-switch() {
cp ifcfg-eth0.$1 ifcfg-eth0
systemctl restart network
}
这个方案特别适合CentOS老系统,不过要注意SELinux上下文问题(别问我怎么知道的)。
方案三:netplan 的优雅之道
Ubuntu 18.04+用户可以使用netplan,这是我最近发现的神器:
# /etc/netplan/01-office.yaml
network:
version: 2
ethernets:
eth0:
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
# 应用配置
netplan apply
配合ln -sf
创建配置文件的符号链接,切换时只需修改链接指向,既干净又避免配置文件冲突。
我的私房小技巧
最后分享几个实战中总结的经验:
- 用
nmcli connection edit
进入交互模式比直接敲命令更友好 - 给配置名加前缀比如
zz-auto-home
可以控制排序 - 记得用
nmcli device status
检查网卡状态 - 网卡命名不稳定时,改用MAC地址指定接口更可靠
现在我的终端里常驻着alias net-office='nmcli con up office'
这样的快捷命令,切换网络比切换输入法还快。大家如果有更好的方案,欢迎在评论区交流~
用nmcli的小伙伴注意了,connection name记得不要带空格,别问我怎么知道的 😅
nmcli确实比ifconfig好用多了,现在切换网络配置再也不用手忙脚乱了
老哥你那个ifcfg方案还不错,正好我们公司还在用CentOS6,改天试试 🤔
每次用ifconfig手动改IP都有点慌,生怕把生产网搞挂了
求问Ubuntu20.04用netplan管理无线网络怎么搞?卡在wifi配置这里了
原来nmcli还能interactive模式!学到了,感谢分享 👍
之前网络切换经常掉DNS,现在用楼主方法总算稳定了
建议配个按键精灵,一键切换办公室和家里网络,美滋滋
收藏了!正好最近被频繁改IP搞得头大
老司机带带我!能不能再详细说说SELinux配置那部分 😊