【问题标题】:Java Socket with VPN connection带有 VPN 连接的 Java 套接字
【发布时间】:2012-05-23 08:46:15
【问题描述】:

我有一个 Java Socket 服务器在给定 192.168.* 地址的机器上监听。我有一个客户端 Java 解决方案连接到 Socket 服务器并使用 BufferedOutputStream 发送命令并捕获 BufferedInputStream 上的响应。

当我在本地网络上时,这一切都很好。

当我使用 VPN 时,我获得了 10* IPA,但该解决方案不起作用。听说需要路由10网,但是VPN服务器不会为我做这一切吗?

我可以通过我的 10 Net VPN 连接访问所有 192.168* 资源,所以我看不出这怎么可能是路由问题。

知道为什么来自 10 Net VPN 的 Java Socket 解决方案无法获取发送命令或接收响应吗?

提前致谢。

【问题讨论】:

  • 这确实是一个路由问题。问题在于我选择的端口以及路由一组有限端口的事实。我通过使用为我的客户端-服务器解决方案路由的端口 80 确定地发现了这一点。由于我的堆栈溢出声誉不够高,我无法发布自己的答案。
  • BruceChidester 干得好。友情提示,您能否自行发布该问题的答案,然后接受该答案,以便我们关闭此问题?此外,如果他们解决了您的问题,您需要接受之前问题的答案。

标签: java sockets networking network-programming network-protocols


【解决方案1】:

虽然你的问题解决了,但我还是觉得你的回答有些误解,想补充一下。

您有一台 192.... 机器,您的服务器正在其上侦听某个端口(例如 4055)。现在您希望该网络之外的客户端能够访问该服务器并交换数据。

如果您的客户端在同一个网络上,您不需要任何路由,您只需要服务器允许端口 4055 上的传入连接。通常传入连接(来自本地主机的除外)会被防火墙(例如 Linux 上的 iptables)阻止,您必须为此在防火墙配置中添加规则

但如果您的客户端位于不同的子网并且需要路由,您需要路由器上的规则,即需要告知您的路由器从(客户端的)ip x 收到的每个数据包路由器端口 (y) 上的端口应转发到您的服务器端口 4055。这称为端口转发。

即使您的路由器能够转发某些端口,也必须明确告知哪些流量需要从哪个 ip/端口转发到哪个 ip 在哪个端口监听

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 2016-07-31
    • 2013-06-12
    • 1970-01-01
    • 2013-02-02
    • 2015-03-14
    • 1970-01-01
    • 2020-04-07
    相关资源
    最近更新 更多