一次“在家连不上公司内网服务”的排障实战记录

📖 背景

新项目要开发一个后台评估模块,同事用AI跑了一版基础代码,我的任务是启动服务、调试Bug、修复问题

项目用的是微服务架构,依赖一个配置中心来拉取数据库地址、账号密码等关键配置。启动脚本里有一个前置检查,必须能连上配置中心才能继续启动。


💥 事故现场

在我的个人电脑上,用公司的VPN连入内网,执行团队标准的启动脚本时,报了这个错:

text

复制代码
BLOCK: xxx node endpoint is not reachable: http://xxx.xxx.com/get_server_nodes

现象

  • 脚本连一个内网域名失败了

  • 报错直接终止了脚本,服务压根没启动

  • 整个启动流程还没走到应用启动那一步就停了


🔍 排障过程(按时间线)

第一步:验证网络是否真的不通

我先验证了VPN本身是否正常,用了一个内网数据库域名来做对照测试:

powershell

复制代码
Test-NetConnection -ComputerName xxx.db.xxx.com -Port 5000

结果:

text

复制代码
ComputerName     : xxx.db.xxx.com
RemoteAddress    : 10.xx.xx.xxx
RemotePort       : 5000
TcpTestSucceeded : True

网络是通的:数据库能连上,说明VPN本身没问题。


第二步:尝试解析报错的配置中心域名

既然数据库能通,我单独测了一下配置中心这个域名:

bash

复制代码
curl -v http://xxx.xxx.com/get_server_nodes

结果:

text

复制代码
* Could not resolve host: xxx.xxx.com
curl: (6) Could not resolve host

DNS解析失败:电脑根本不认识这个域名是什么IP。


第三步:确认DNS问题

nslookup 确认一下当前用的是哪个DNS:

bash

复制代码
nslookup xxx.xxx.com

返回显示DNS服务器不是公司内网的,而是我本地的公共DNS(比如路由器或运营商的)。

问题初步定位

VPN连上了(网络通了),但DNS解析请求没有走VPN通道,还是走的本地的DNS服务器,所以解析不了内网域名。


第四步:对比公司环境 vs 在家环境

为什么同样的脚本,在公司能跑,在家跑不了

环境 网络 DNS服务器 内网域名解析
公司(办公室) 公司WiFi 公司内网DNS(自动下发) ✅ 能解析
家(VPN) VPN连入 本地DNS(路由器/运营商) ❌ 不能解析

根本原因

  • 公司的VPN使用了分裂隧道模式 (Split Tunneling):只有访问内网IP的流量走VPN,DNS解析请求还是走的本地DNS

  • 本地DNS服务器里没有注册公司的内网域名,所以解析失败。


✅ 解决方案

方案一:配置hosts文件(临时绕过DNS)

这是最快的解法。找一位在公司内网的同事,让他帮忙解析一下这个域名:

bash

复制代码
ping xxx.xxx.com

拿到内网IP(类似 10.xx.xx.xxx),然后配到本地的 hosts 文件中:

WindowsC:\Windows\System32\drivers\etc\hosts

添加一行:

text

复制代码
10.xx.xx.xxx xxx.xxx.com

保存后重新 curl 测试:

bash

复制代码
curl -v http://xxx.xxx.com/get_server_nodes

这次如果返回了 502 Bad Gateway 或其他响应,说明域名解析问题已经解决。剩下的就是配置中心服务本身的问题了。

优点 :5分钟搞定,立即见效

缺点:如果内网IP变了,需要更新hosts


方案二:配置VPN为"全隧道模式"(根治方案)

在VPN客户端中,将VPN模式从分裂隧道 切换为全隧道,让所有网络请求(包括DNS解析)都走VPN通道。

优点 :一劳永逸,所有内网域名都能解析

缺点:VPN可能不支持此配置,或者需要管理员权限


方案三:手动修改网络DNS为内网DNS(根治方案)

将电脑的DNS服务器地址手动设置为公司的内网DNS服务器地址(需要向IT或运维获取)。

优点 :一劳永逸

缺点:如果VPN不转发DNS流量,改了也没用,需要配合全隧道模式使用


方案四:本地配置文件,彻底绕过配置中心(终极备用方案)

如果环境问题长期解决不了,可以让应用完全不依赖配置中心,从本地的 application-local.yml 读取配置,然后用 -Dspring-boot.run.profiles=local 启动。

优点 :完全不依赖内网环境,本地想怎么跑怎么跑

缺点:需要自己维护一套完整配置,且可能和团队配置脱节


📝 知识沉淀

核心结论

"VPN连上了" ≠ "所有网络流量都走了VPN"

特别是DNS解析请求,很可能还是走的本地网络,导致内网域名解析失败。

排查方法论

遇到类似问题时的标准排查路径:

text

复制代码
1. ping 域名
   ├── 能通 → DNS没问题,检查端口/服务状态
   └── 不通 ↓

2. ping IP
   ├── 能通 → DNS解析有问题
   │         └── 解决方案:配hosts / 换DNS / 配置VPN
   └── 不通 → VPN网络本身有问题
             └── 解决方案:检查VPN连接状态、路由表

关键检测命令

目的 命令 说明
测网络连通性 ping 域名或IP 最基础的连通性测试
测指定端口 Test-NetConnection -Port 端口(Win) nc -zv 地址 端口(Mac/Linux) 确认端口是否开放,服务是否存活
查看当前DNS nslookup 域名 确认DNS解析结果和使用的DNS服务器
查看路由表 route print(Win) netstat -rn(Mac/Linux) 确认哪些网段走了VPN
测试HTTP接口 curl -v 地址 看完整请求响应,确认是DNS问题还是服务问题

为什么公司电脑能跑,家里不行?

场景 DNS服务器 能否解析内网域名
公司内网 DHCP自动下发公司DNS ✅ 能
家用VPN(分裂隧道) 本地DNS(运营商/路由器) ❌ 不能
家用VPN(全隧道) VPN下发的公司DNS ✅ 能

🚀 后续进展

配置完hosts后,配置中心域名解析问题解决。继续往前走时又遇到了502 Bad Gateway(配置中心服务本身不可用),这是服务端的问题,需要联系运维或确认测试环境状态。

但这已经是另一个层面的问题了------DNS这一关,我们已经彻底闯过去了。


💡 一句话总结

排障的本质是分层------网络层通不通?DNS层能不能解析?服务层活不活?每层独立排查,就不会被卡住。

相关推荐
广州灵眸科技有限公司33 分钟前
从手动三步到上电即连:4G模组systemd开机自连方案
linux·运维·服务器·开发语言·网络·人工智能·php
埃科光电1 小时前
16K万兆网口彩色线阵相机:四倍带宽 高速真彩检测新方案
网络·图像处理·数码相机·计算机视觉·制造·相机
运维全栈笔记2 小时前
Windows 安装 WSL2 并运行 Ubuntu 24.04 指南
linux·网络·windows·ubuntu
qq_452396232 小时前
第十篇:《eBPF 可观测性:零侵扰的深度内核追踪》
服务器·网络·php
迪康Defender2 小时前
政企内网终端安全建设:资产‑管控‑防护‑审计闭环能力拆解
运维·网络·安全·web安全·终端安全管理
晓天衡宇•评测社区3 小时前
Seedance 2.5 登顶图生视频榜单,Wan 3.0 在游戏与教育场景进入前列
前端·javascript·网络
charliejohn3 小时前
计算机考研 408 网络 以太网、ARP、NAT、DHCP概念
网络·计算机网络
商业白皮书3 小时前
企业大模型应用可获得哪些安全防护能力?Amazon Bedrock Guardrails 从内容过滤到规则验证搭建 AI 安全护栏
网络·人工智能·安全
CCYe、4 小时前
企业AI网关中的密钥生命周期:从一把Key走天下到自动轮换
网络·人工智能·安全
数据知道6 小时前
YARA 规则编写实战——从样本到检测规则
网络·安全·网络安全