java.net.UnknownHostException 问题解决

发布时间:2026/5/18 6:52:06

java.net.UnknownHostException 问题解决 内网服务器无法解析域名 api.weixin.qq.com一、故障现象描述环境信息内网服务器192.168.2.199跳板机192.168.2.202具备公网网卡eno4内网服务器通过跳板机访问外网报错信息Java 控制台抛出java.net.UnknownHostException: api.weixin.qq.com: 域名解析暂时失败测试现象执行nslookup api.weixin.qq.comconnection timed out; no servers could be reachedPing 公网 DNS如119.29.29.29无回显跳板机访问外网正常二、核心原因分析查看路由表ip route发现内网服务器默认网关指向跳板机default via 192.168.2.202 dev enp2s0f1故障根源链路中断内网服务器将数据包转发至跳板机但跳板机未开启地址伪装MASQUERADE/SNAT。IP 无法回程外网服务器收到内网私有 IP 请求包无回程路由无法响应。规则失效原有转发规则在修改iptables或系统重启后被覆盖/丢失。三、解决方案开启 NAT 地址转换步骤一开启跳板机内核转发功能允许 Linux 系统转发数据包。# 尝试执行sysctlnet.ipv4.ip_forward# 返回结果不为1 临时开启sysctl-wnet.ipv4.ip_forward1# 永久开启echonet.ipv4.ip_forward 1/etc/sysctl.confsysctl-p步骤二配置 iptables 出口 NAT 规则方案 A允许整个内网网段上网推荐# -s 指定内网网段-o 指定公网网卡iptables-tnat-APOSTROUTING-s192.168.2.0/24-oeno4-jMASQUERADE方案 B仅允许指定服务器上网精细化控制# 仅允许 192.168.2.199 访问外网iptables-tnat-APOSTROUTING-s192.168.2.199/32-oeno4-jMASQUERADE步骤三持久化 iptables 规则防止重启失效。# CentOS / RHELiptables-save/etc/sysconfig/iptables# Ubuntu / Debianiptables-save/etc/iptables/rules.v4四、技术知识点科普CIDR 子网说明/24子网掩码255.255.255.0覆盖192.168.2.0 ~ 192.168.2.255整个网段。/32子网掩码255.255.255.255精确匹配单个 IP 地址。MASQUERADE地址伪装动态 SNAT将内网源 IP 临时替换为跳板机公网 IP使外网回包能正常返回跳板机再转发至内网服务器。五、验证结果内网服务器执行ping 114.114.114.114—— 网络连通内网服务器执行nslookup api.weixin.qq.com—— 域名解析正常重启 Java 应用业务功能恢复正常

相关新闻