求Ubuntu Server 16.04 LTS开机自动切换网络配置的启动脚本
解决方案:Ubuntu Server 16.04 LTS 开机自动切换静态IP/DHCP脚本
针对你的异地数据中心Ubuntu Server 16.04 LTS场景——有时在可访问公网的私有网络,有时需要直接接入公网,我整理了一套开机启动脚本方案,能自动完成静态IP配置、公网连通性检测,失败后自动切换到DHCP模式。
实现步骤
1. 创建网络配置脚本
首先创建一个可执行脚本,路径选/usr/local/bin/network-auto-config.sh(这个位置不会被系统更新覆盖),内容如下:
#!/bin/bash # -------------------------- 请根据你的实际环境修改以下参数 -------------------------- STATIC_IP="192.168.1.100" # 预定义的静态IP NETMASK="255.255.255.0" # 子网掩码 GATEWAY="192.168.1.1" # 网关地址 INTERFACE="eth0" # 网卡名称(可用`ip addr`命令查看) # ---------------------------------------------------------------------------------- # 第一步:配置静态IP echo "[Network Auto-Config] 正在配置静态IP: $STATIC_IP..." ip addr flush dev $INTERFACE # 清空网卡现有配置 ip addr add $STATIC_IP/$NETMASK dev $INTERFACE # 设置静态IP和子网掩码 ip route add default via $GATEWAY dev $INTERFACE # 设置默认网关 # 第二步:检测公网连通性(用Google DNS做测试) echo "[Network Auto-Config] 正在检测公网连通性..." ping -c 3 -W 2 8.8.8.8 > /dev/null 2>&1 # 发送3个测试包,超时2秒 if [ $? -eq 0 ]; then echo "[Network Auto-Config] 公网连通正常,保持静态IP配置" else echo "[Network Auto-Config] 无法连接公网,切换为DHCP模式..." ip addr flush dev $INTERFACE # 清空静态配置 dhclient $INTERFACE # 启动DHCP客户端获取地址 fi echo "[Network Auto-Config] 网络配置完成,继续启动系统服务"
2. 给脚本添加执行权限
运行以下命令赋予脚本可执行权限:
chmod +x /usr/local/bin/network-auto-config.sh
3. 配置开机启动(Systemd服务)
Ubuntu 16.04支持Systemd,我们用它来实现开机自动运行脚本:
创建Systemd服务文件/etc/systemd/system/network-auto-config.service,内容如下:
[Unit] Description=Automatic Network Configuration (Static IP with DHCP fallback) After=network-pre.target Before=network.target network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/network-auto-config.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target
然后重新加载Systemd配置并启用服务:
systemctl daemon-reload systemctl enable network-auto-config.service
关键说明
- 脚本使用
ip命令直接配置网络,不会修改/etc/network/interfaces等系统配置文件,避免后续手动配置冲突 ping命令的参数-c 3和-W 2是为了快速完成检测,不会让系统启动过程等待太久- Systemd服务的时序设置确保脚本在系统网络服务启动前执行,保证网络配置优先完成
- 测试脚本可以直接运行
/usr/local/bin/network-auto-config.sh,验证静态IP和DHCP切换是否正常
内容的提问来源于stack exchange,提问作者KoreanGuy
相关产品推荐
相关产品推荐

