如何通过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
相关产品推荐
相关产品推荐

