1. 问题背景
在公司工作时遇到了一个典型的网络代理配置问题:
- 需要访问外网(如YouTube)时需要开启代理
- 但开启代理后无法访问公司内网服务
- 关闭代理后可以访问内网,但无法访问外网
这是一个在企业环境中非常常见的问题,涉及到网络路由、DNS解析、代理规则等多个层面的知识。
2. 网络基础知识
2.1 IP地址分类
私有IP地址段(RFC 1918):
10.0.0.0/8:10.0.0.0 - 10.255.255.255172.16.0.0/12:172.16.0.0 - 172.31.255.255192.168.0.0/16:192.168.0.0 - 192.168.255.255
本次问题中的网络环境:
- 本机IP:
10.3.73.75 - 路由器:
10.3.73.2 - 子网掩码:
255.255.255.0(/24) - 网段:
10.3.73.0/24
2.2 路由表概念
路由表决定了数据包的转发路径:
1 | # 查看路由表 |
2.3 DNS解析过程
- 本地DNS查询:查询本地hosts文件和DNS缓存
- 递归DNS查询:向DNS服务器发起查询
- 域名解析:将域名转换为IP地址
本次问题中的DNS解析:
1 | # 公司内网域名解析 |
3. 代理工作原理
3.1 代理的本质
代理服务器作为客户端和目标服务器之间的中介:
1 | 客户端 → 代理服务器 → 目标服务器 |
3.2 代理的分类
- HTTP代理:处理HTTP/HTTPS流量
- SOCKS代理:可处理任何协议的流量
- 透明代理:客户端无感知的代理
3.3 ClashX代理模式
三种工作模式:
- 全局模式(Global):所有流量都通过代理
- 规则模式(Rule):根据配置规则决定流量走向
- 直连模式(Direct):所有流量都直连,不走代理
4. Clash配置详解
4.1 配置文件结构
1 | # 基本配置 |
4.2 规则类型详解
域名规则:
DOMAIN,example.com,DIRECT:精确匹配域名DOMAIN-SUFFIX,example.com,DIRECT:匹配域名及其子域名DOMAIN-KEYWORD,google,PROXY:匹配包含关键词的域名
IP规则:
IP-CIDR,10.0.0.0/8,DIRECT:匹配IP段GEOIP,CN,DIRECT:匹配中国IP地址
其他规则:
MATCH,PROXY:兜底规则,匹配所有其他流量
4.3 规则匹配顺序
关键原则:从上到下依次匹配,命中即停止
1 | rules: |
5. 问题分析与解决过程
5.1 问题现象
- 开启ClashX代理后无法访问:
https://devops.digitalchina.com/http://zentao.digitalchina.com/zentao/my.html
5.2 初步分析
网络连通性测试:
1
ping 10.3.73.2 # 路由器连通正常
DNS解析测试:
1
2nslookup devops.digitalchina.com
# 结果:10.0.4.173(公司内网IP)路由表检查:
1
2netstat -rn | grep "10\."
# 确认10.x.x.x网段路由存在
5.3 根本原因分析
问题根因:域名解析被代理劫持
正常访问流程(代理关闭):
1
浏览器 → 本地DNS → devops.digitalchina.com → 10.0.4.173 → 直接访问
问题访问流程(代理开启):
1
浏览器 → Clash代理 → 海外代理服务器 → 尝试解析devops.digitalchina.com → 失败
关键问题:
- 虽然配置了
IP-CIDR,10.0.0.0/8,DIRECT规则 - 但域名请求被发送到代理服务器进行DNS解析
- 海外代理服务器无法解析公司内网域名
5.4 解决方案
添加域名直连规则:
1 | rules: |
解决原理:
- 域名匹配优先于IP匹配
digitalchina.com及其子域名直接走本地网络- 本地DNS可以正确解析公司内网域名
- 解析后的内网IP通过本地网络直接访问
6. 网络流量分析
6.1 规则模式下的流量走向
公司内网访问:
1 | devops.digitalchina.com → DOMAIN-SUFFIX规则匹配 → DIRECT → 本地DNS解析 → 10.0.4.173 → 直连访问 |
外网访问:
1 | youtube.com → 无匹配的直连规则 → MATCH规则 → PROXY → 代理服务器 → YouTube服务器 |
国内网站访问:
1 | baidu.com → GEOIP,CN规则匹配 → DIRECT → 直连访问 |
6.2 DNS解析路径
内网域名:
- DNS服务器:
10.3.69.28(公司内网DNS) - 可解析公司内网域名
外网域名:
- 通过代理服务器的DNS解析
- 或本地DNS解析后通过代理访问
7. 最佳实践与配置优化
7.1 企业环境代理配置模板
1 | # 企业环境Clash配置模板 |
7.2 配置文件管理
配置文件位置:
- macOS:
~/.config/clash/ - Windows:
%USERPROFILE%/.config/clash/
常用文件:
config.yaml:基础配置文件xxx.yaml:订阅配置文件
7.3 故障排查步骤
确认网络连通性:
1
2ping 网关地址
ping 公网地址检查DNS解析:
1
nslookup 域名
检查Clash规则:
- 查看配置文件规则顺序
- 确认规则语法正确
- 测试流量走向:
- 使用Clash Dashboard查看实时流量
- 检查日志文件
8. 高级配置技巧
8.1 规则优化
使用no-resolve参数:
1 | # 避免不必要的DNS解析 |
进程名规则:
1 | # 针对特定应用的规则 |
8.2 代理组配置
负载均衡组:
1 | proxy-groups: |
故障转移组:
1 | proxy-groups: |
9. 安全考虑
9.1 企业网络安全
- 确保代理服务器的可信度
- 避免在代理配置中暴露敏感信息
- 定期更新代理规则和服务器列表
9.2 隐私保护
- 了解代理服务器的日志政策
- 使用加密协议(如Shadowsocks、V2Ray)
- 避免在代理环境下传输敏感数据
10. 常见问题与解决方案
10.1 无法访问内网服务
原因:域名被代理劫持
解决:添加域名直连规则
10.2 代理规则不生效
原因:规则顺序错误或语法错误
解决:检查规则语法,调整规则顺序
10.3 DNS解析异常
原因:DNS被代理服务器接管
解决:配置本地DNS或使用no-resolve参数
11. 总结
通过这次问题的解决,我们学到了:
- 网络代理的本质是流量转发,理解其工作原理对配置至关重要
- 规则顺序是Clash配置的核心,必须carefully设计
- 域名解析是网络访问的第一步,代理会影响DNS解析路径
- 企业网络环境需要特殊的代理配置策略
- 故障排查需要系统性的方法和工具
这个案例很好地展示了现代网络环境的复杂性,以及正确理解和配置网络代理的重要性。在企业环境中工作时,合理的代理配置不仅能提升工作效率,还能确保网络访问的稳定性和安全性。
本文档基于实际问题解决经验编写,涵盖了网络代理配置的核心概念和实践技巧。