如何在多宿主配置中控制源 IP



我在一个刀片上运行了 14 个 Java 进程。每个进程都绑定到代理服务器 (F5) 识别的虚拟 IP,因此当外部客户端调用 F5 时,他的调用重定向到 14 个进程之一。

最重要的是,我的进程(14 个进程之一)执行对在不同刀片上运行的另一个应用程序的调用。

问题是:如何在 TCP 客户端上使用虚拟 IP 运行的 Java 进程上控制传出 TCP 数据包中的源 IP?换句话说,我正在寻找一种方法来将虚拟IP设置为传出TCP数据包中的源地址。(默认情况下,它设置为刀片式服务器的物理 IP)。

您可以使用以下套接字构造函数:

Socket(String remoteHost, int remotePort, InetAddress localAddress, int localPort)

或在创建套接字后使用 Socket.bind()。

见 http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html

暂时忘记语言/库... 您可以定义连接套接字的本地地址和/或本地端口,方法与侦听套接字相同。 您可以将套接字bind()到所需的任何 IP 地址和/或端口。 不绑定与绑定到值相同。

当值为零时,操作系统将为您选择:对于地址,它将绑定到用于发送到目标的接口的地址。 对于端口,它将选取当前未使用的非特权端口 (>1023)。

最新更新