当前位置: 代码网 > it编程>编程语言>Java > 解决java.net.UnknownHostException 问题小结

解决java.net.UnknownHostException 问题小结

2026年07月29日 • Java •我要评论
一、故障现象描述环境信息内网服务器:192.168.2.199跳板机:192.168.2.202(具备公网网卡 eno4)内网服务器通过跳板机访问外网报错信息java 控制台抛出:java.net.u

一、故障现象描述

环境信息

  • 内网服务器:192.168.2.199
  • 跳板机:192.168.2.202(具备公网网卡 eno4)
  • 内网服务器通过跳板机访问外网

报错信息

java 控制台抛出:

java.net.unknownhostexception: api.weixin.qq.com: 域名解析暂时失败

测试现象

  1. 执行 nslookup api.weixin.qq.com
    connection timed out; no servers could be reached
  2. ping 公网 dns(如 119.29.29.29)无回显
  3. 跳板机访问外网正常

二、核心原因分析

查看路由表(ip route)发现:
内网服务器默认网关指向跳板机:

default via 192.168.2.202 dev enp2s0f1

故障根源

  1. 链路中断
    内网服务器将数据包转发至跳板机,但跳板机未开启地址伪装(masquerade/snat)。
  2. ip 无法回程
    外网服务器收到内网私有 ip 请求包,无回程路由,无法响应。
  3. 规则失效
    原有转发规则在修改 iptables 或系统重启后被覆盖/丢失。

三、解决方案:开启 nat 地址转换

步骤一:开启跳板机内核转发功能

允许 linux 系统转发数据包。

# 尝试执行
sysctl net.ipv4.ip_forward
# 返回结果不为1 临时开启
sysctl -w net.ipv4.ip_forward=1
# 永久开启
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

步骤二:配置 iptables 出口 nat 规则

方案 a:允许整个内网网段上网(推荐)

# -s 指定内网网段,-o 指定公网网卡
iptables -t nat -a postrouting -s 192.168.2.0/24 -o eno4 -j masquerade

方案 b:仅允许指定服务器上网(精细化控制)

# 仅允许 192.168.2.199 访问外网
iptables -t nat -a postrouting -s 192.168.2.199/32 -o eno4 -j masquerade

步骤三:持久化 iptables 规则

防止重启失效。

# centos / rhel
iptables-save > /etc/sysconfig/iptables
# ubuntu / debian
iptables-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,使外网回包能正常返回跳板机,再转发至内网服务器。

五、验证结果

  1. 内网服务器执行 ping 114.114.114.114 —— 网络连通
  2. 内网服务器执行 nslookup api.weixin.qq.com —— 域名解析正常
  3. 重启 java 应用,业务功能恢复正常

到此这篇关于解决java.net.unknownhostexception 问题小结的文章就介绍到这了,更多相关java.net.unknownhostexception 问题内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

赞 (0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com