一次 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 或网络配置不熟悉:

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

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

相关推荐
dgvri2 小时前
比较Spring AOP和AspectJ
java
eggwyw2 小时前
springboot和springframework版本依赖关系
java·spring boot·后端
韩立学长2 小时前
Springboot奶茶加盟信息管理系统m307m786(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
2401_844221322 小时前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
zhangyueping83852 小时前
9、MYSQL-存储过程
数据库·mysql
Arya_aa2 小时前
Mysql数据库-管理和存储数据库(开源管理系统)与JDBC操作数据库步骤,JUnit以及如何将压缩包中exe程序添加上桌面图标
数据库·mysql·junit·开源
于先生吖3 小时前
国际版JAVA婚恋交友系统源码:多语言适配,可商用的跨境婚恋解决方案
java·大数据·交友
最懒的菜鸟4 小时前
redis缓存击穿
数据库·redis·缓存