一次 DNS 端口引发的代理网络和公司内网冲突问题

最近在工作中遇到了一个比较头疼的问题:

公司的 安全准入客户端 和本地开发常用的 网络代理工具 无法同时运行。

现象是这样的:

  • 只要 安全准入客户端 一启动,本地工具就会失效,一些开发常用资源网站无法访问;

  • 一旦关闭安全客户端,访问工具恢复正常,但公司内网系统又连接不上。

两者就像"水火不容",每天都要手动切换,开发效率非常低。


问题排查

经过排查,发现问题核心在于 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 或网络配置不熟悉:

修改前一定要备份原始配置文件。

虽然在我的环境中测试没有问题,但任何底层网络配置修改都存在一定风险。

相关推荐
鲨鱼辣钊3 小时前
【FastAPI筑基-Day19】APScheduler定时任务全实战|自动执行、动态启停、后台常驻
java·spring·fastapi
坚定信念,勇往无前4 小时前
mongodb的日志分割
数据库·mongodb
学长毕业设计7 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
Brilliantwxx7 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
东小西7 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西7 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
oradh7 小时前
Oracle TX 锁 Mode 4(Share)问题排查总结
数据库·oracle·tx 锁 mode 4·oracle tx 锁
许彰午7 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
不怕犯错,就怕不做7 小时前
git prune 自动删除本地记录中那些远程已经不存在的分支引用
linux·服务器·git
2601_962065257 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql