You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过nmcli脚本配置tun0并恢复路由,或实现全流量走tun0的需求

如何通过nmcli脚本配置tun0并恢复路由,或实现全流量走tun0的需求

嗨,我来帮你搞定这个Appgate SDP的DNS和路由问题~ 针对你的两种需求,我整理了两个实用方案:

方案一:先备份路由,再配置DNS后恢复

这个方案能保留Appgate自动添加的300+路由,同时修复DNS配置,完美解决你用nmcli改DNS后丢路由的问题。

步骤1:备份当前tun0的所有临时路由

先把Appgate刚添加的路由都存到内存里,避免nmcli修改配置时丢失:

# 初始化数组存储路由
routes=()
# 读取tun0的所有路由并加入数组
while IFS= read -r line; do
    routes+=("$line")
done < <(ip route show dev tun0)

步骤2:配置tun0的DNS和搜索域

这里注意你之前打错了ncmli,要改成正确的nmcli:

# 设置DNS服务器
nmcli con mod tun0 ipv4.dns "10.x.x.x"
# 设置域名搜索范围
nmcli con mod tun0 ipv4.dns-search "~example.com"

步骤3:恢复之前备份的路由

用+ipv4.routes参数追加路由,避免覆盖现有配置:

# 循环添加每一条备份的路由
for route in "${routes[@]}"; do
    nmcli con mod tun0 +ipv4.routes "$route"
done

最后:重启tun0连接让配置生效

nmcli con down tun0 && nmcli con up tun0

方案二:直接配置全流量走tun0(更省心)

如果你每次用Appgate只需要tun0,那直接把所有流量都导去tun0会更简单,不用管那几百条路由。

配置全流量走tun0

# 获取tun0的网关(Appgate会自动分配)
tun0_gateway=$(ip route show dev tun0 | grep default | awk '{print $3}')
# 添加默认路由,让所有流量走tun0
nmcli con mod tun0 +ipv4.routes "0.0.0.0/0 via $tun0_gateway"
# 降低tun0的路由优先级(数值越小越优先,确保比eth0先被使用)
nmcli con mod tun0 ipv4.route-metric 100
# 同时配置DNS和搜索域
nmcli con mod tun0 ipv4.dns "10.x.x.x"
nmcli con mod tun0 ipv4.dns-search "~example.com"
# 重启连接生效
nmcli con down tun0 && nmcli con up tun0

断开Appgate后恢复原路由(eth0)

可以提前备份eth0的默认路由,断开时一键恢复:

# 先备份eth0的默认路由(在启动Appgate前执行)
default_route=$(ip route show default | grep eth0)

# 断开Appgate后执行以下命令恢复:
# 清空tun0的路由配置
nmcli con mod tun0 ipv4.routes ""
# 恢复eth0的默认路由
ip route add $default_route
# 恢复原DNS配置
nmcli con mod tun0 ipv4.dns ""
nmcli con mod tun0 ipv4.dns-search ""
# 重启eth0连接
nmcli con down eth0 && nmcli con up eth0

备注:内容来源于stack exchange,提问作者John the Ripper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:49:39