java的http客户端通过vpn访问服务失败

在Java后端应用中,通过HTTP访问远程ES-Server时遇到TimeoutConnecting异常。问题排查发现网络连接、telnet和浏览器访问均正常,但在Java环境中请求超时。设置JVM启动参数-Djava.net.preferIPv4Stack=true后,使用IPv4协议栈,服务访问恢复正常。经确认,客户VPN网络仅支持IPv4通信协议栈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

java后端需要调用远程es-server服务查询相关信息,本地环境与客户es服务通过VPN(深信服easy connect)进行访问。浏览器中访问正常,telnet远程登陆也是正常的。但是后端应用启动后,通过http访问远程es-server时候,一直报java.net.ConnectException: Timeout connecting 异常,详情:
Caused by: java.net.ConnectException: Timeout connecting to *****
	at org.apache.http.nio.pool.RouteSpecificPool.timeout(RouteSpecificPool.java:169)
	at org.apache.http.nio.pool.AbstractNIOConnPool.requestTimeout(AbstractNIOConnPool.java:632)
	at org.apache.http.nio.pool.AbstractNIOConnPool$InternalSessionRequestCallback.timeout(AbstractNIOConnPool.java:898)
	at org.apache.http.impl.nio.reactor.SessionRequestImpl.timeout(SessionRequestImpl.java:198)
	at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processTimeouts(DefaultConnectingIOReactor.java:213)
	at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:158)
	at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:351)
	at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:221)
	at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64)
	... 1 common frames omitted

排查:

  • 我本机网络正常,发送、接受请求都没有问题。
  • telnet ip+port 正常,直接在我本机的浏览器上访问地址+参数访问对方es服务,能够正常拿到返回数据,问题是在java环境中,使用http方式请求超时
  • 我用于网络请求的代码不通过vpn,在内网中直接访问其他服务正常返回
  • 请求es运维人员在目标服务器中抓包并没有接受到本机客户端发送的请求信息

解决:

  • 通过以上排查,确定在vpn网络条件下,本地是与远程es服务是联通的
  • 查看VPN网络链接状态,显示的虚拟网络IP为IPV4地址类型,尝试设置jvm启动参数:-Djava.net.preferIPv4Stack=true,仅使用IPV4协议栈,es服务访问正常

备注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mister-big

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值