在openwrt上根据DNS解析决定路由出口
基本情况:
1.多互联网出口:内网拥有1条以上互联网出口(1条电信、1条连通)
项目需求:
- 域名分别通过两个smartdns实例解析。smartdns_dx -> 电信上游 -> 结果写入ip4_dx; smartdns_lt -> 联通上游 -> 结果写入ip4_lt
- nft根据目标IP是否匹配ip4_dx / ip4_lt来打标记(mark)。
- ip route + route table 根据标记(mark)选择不同出口。
- 动态切换时,通过脚本改写wan_policy_route 链内容
- hook通过fw4 include持久化,避免fw4 reload后丢失。
- 最优出局:联通Public DNS Server返回的IP从联通出口出局,电信Public DNS Server返回的IP从电信出口出局。
- 故障切换:当联通线路故障不可用是,从电信接口出局;当电信接口不可用是,从联通接口出局。
- 默认情况下,根据系统负载自由决定