最近在工作中遇到了一个比较头疼的问题:
公司的 安全准入客户端 和本地开发常用的 网络代理工具 无法同时运行。
现象是这样的:
-
只要 安全准入客户端 一启动,本地工具就会失效,一些开发常用资源网站无法访问;
-
一旦关闭安全客户端,访问工具恢复正常,但公司内网系统又连接不上。
两者就像"水火不容",每天都要手动切换,开发效率非常低。
问题排查
经过排查,发现问题核心在于 DNS 端口冲突。
安全准入客户端启动后会 占用系统的 53 端口(DNS 默认端口) ,而本地代理工具默认也会监听 53 端口用于 DNS 解析。
因此两个程序会出现端口竞争:
安全准入客户端:占用 53 端口
代理工具:默认监听 53 端口
结果就是 其中一个 DNS 服务无法正常工作。
既然两个程序不能同时监听同一个端口,那么解决思路就很简单:
让代理工具改用其他端口监听 DNS。
解决思路
我的解决方案分为两个步骤:
1️⃣ 修改代理工具 DNS 监听端口
2️⃣ 使用虚拟网卡模式统一转发流量
这样既不会影响公司内网访问,也不会影响日常开发资源访问。
第一步:修改代理工具 DNS 监听端口
找到代理工具的配置文件(通常是 config.yaml)。
在 dns 配置部分进行修改。
💡 建议在修改之前 备份原始配置文件。
dns:
enable: true
listen: '127.0.0.1:1053' # 修改 DNS 监听端口,避开 53
ipv6: false # 建议关闭 IPv6
enhanced-mode: fake-ip # 提升解析兼容性
nameserver:
- 'https://example-dns1/dns-query'
- 'https://example-dns2/dns-query'
fallback:
- 'https://example-dns3/dns-query'
- 'https://example-dns4/dns-query'
- 'tls://8.8.8.8:853'
- 'tls://1.1.1.1:853'
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- '240.0.0.0/4'
nameserver-policy:
'+.example.com': 'https://example-dns/dns-query'
关键修改点只有一个:
listen: '127.0.0.1:1053'
也就是:
将 DNS 监听端口从 53 改为 1053。
这样就不会再与安全客户端产生端口冲突。
YAML 配置注意事项
如果你不熟悉 YAML,需要特别注意:
1️⃣ 缩进必须使用空格,不能使用 Tab
2️⃣ 列表建议使用标准块结构
3️⃣ 修改前一定要 备份配置文件
第二步:开启虚拟网卡模式
修改配置后,需要重新加载配置文件。
启动成功后一般会看到类似日志:
DNS server started on 127.0.0.1:1053
接下来开启 虚拟网卡模式(TUN Mode)。
该模式会创建一个 虚拟网络接口,用于统一转发系统流量到代理内核进行处理。
这样:
-
内网流量 → 走安全客户端
-
外网开发资源 → 走代理工具
二者可以同时工作。
同时建议:
关闭 IPv6
可以减少部分企业网络环境中的路由异常。
第三步:验证
最后进行验证:
1️⃣ 同时启动 安全准入客户端 和 代理工具
2️⃣ 访问公司 内网系统
3️⃣ 访问常用 开发资源网站
如果两者都可以正常访问,说明问题已经解决。
总结
这次问题本质其实很简单:
DNS 端口冲突(53 端口)
解决思路就是:
避免端口冲突+ 使用虚拟网卡统一流量
通过修改代理工具 DNS 监听端口并开启虚拟网卡模式,就可以让两种网络环境同时正常工作。
最后提醒
如果你对 YAML 或网络配置不熟悉:
修改前一定要备份原始配置文件。
虽然在我的环境中测试没有问题,但任何底层网络配置修改都存在一定风险。