快速切换网关和DNS配置(Linux)
文章目录
上脚本
#!/bin/bash
# 目标网关
GW1="192.168.3.8"
GW2="192.168.3.2"
# 网卡名称(你的 LXC 为 eth0)
IFACE="eth0"
# 读取当前默认网关
CURRENT_GW=$(ip route | awk '/default/ {print $3}')
echo "Current gateway: $CURRENT_GW"
# 选择切换目标
if [ "$CURRENT_GW" = "$GW1" ]; then
NEW_GW="$GW2"
else
NEW_GW="$GW1"
fi
echo "Switching default gateway to: $NEW_GW"
# 删除旧的默认路由(可能存在多个)
ip route delete default 2>/dev/null
# 添加新的默认路由
ip route add default via "$NEW_GW" dev "$IFACE" onlink
# 更新 DNS(覆盖 resolv.conf,但保留 PVE 的约定格式)
cat > /etc/resolv.conf <<EOF
# --- BEGIN PVE ---
search au92.com
nameserver $NEW_GW
# --- END PVE ---
EOF
echo "DNS switched to: $NEW_GW"
echo "Done."
使用说明
vi switch-gw.sh
填入上边的shell内容
chmod +x switch-gw.sh
./switch-gw.sh
验证方法:
ip route
cat /etc/resolv.conf
也可以traceroute 8.8.8.8看第一跳是否为切换的新网关
相似文章
文章作者 pengxiaochao
上次更新 2025-11-20
许可协议 不允许任何形式转载。