0

我的问题是一种通过发送 IP 来识别终端的协议。我想使用某种实现该协议的代理来管理多个终端与该服务器的连接。

所以我有终端A,它由服务器通过IP 1.2.3.4 识别,终端B 由服务器使用IP 5.6.7.8 识别。现在代理将位于具有终端 A 和 B 的本地网络中。

终端 A 想访问服务器时,会查询代理,代理需要使用 IP 1.2.3.4 代表终端 A 向服务器发送请求 当终端 B 想访问服务器时,它会查询代理并代理需要使用 IP 5.6.7.8 代表终端 A 向服务器发送请求

甚至有可能用Java解决这个问题,还是我必须在路由器上做网络巫术来实现这个?

编辑:说清楚。我知道什么是网络代理以及路由器的作用。如果需要,我还知道如何在网络级别使用高级网络巫术解决我的问题。我想知道的是我的猜测是否使用 Java 无法解决问题是正确的。所以底线问题是:我是否可以使用 Java 使用已分配特定 IP 的特定网络接口发送流量,或者我是否必须依靠操作系统来路由我的流量(在这种情况下,高级网络需要巫毒教)?

Edit2:如果网络流量的路由可以在 java 中完成,我只想快速指向哪里查看。我自己的谷歌搜索没有返回任何有用的结果。

4

1 回答 1

1

1)您已经有了一些使用 java 进行 tcp Tunelling 的实现。下面是一些例子:

2) 即使使用这些现有的实现,您仍然可以通过使用 java.net.Socket 转发到达代理的数据包来拥有自己的东西。

3)我仍然认为更好的选择是使用 java.lang.Runtime.exec() 和socat linux 命令的特定实现。socat 与 Netcat 类似,但具有安全性和 chrooting 支持,可在各种协议上工作,并通过文件、管道、设备、TCP 套接字、Unix 套接字、SOCKS4 客户端、代理 CONNECT 或 SSL 等。重定向所有端口 80 连接到 IP 202.54.1.5:

$ socat TCP-LISTEN:80,fork TCP:202.54.1.5:80
于 2013-05-22T12:05:49.713 回答