这是一个路由问题。 我想在以下configuration中设置一个IP块(1.1.1.0/24):
/(eth1)-- (Main (1.1.1.3-1.1.1.253) Router (1.1.1.1) --(eth0)(Load balancer or Router) (1.1.1.2) \(eth2)-- (Alt (1.1.1.3-1.1.1.253)
使用负载均衡器或路由器(1.1.1.2)将所有stream量转到1.1.1.0/24,并将端口1-50000通过eth1转发到主服务器。 但是对于来自50001-65535的请求将该数据包转发给eth2。
最棘手的部分是networkingMain和networkingAlt都需要有相同的IP地址。
这个想法是主要IP(1.1.1.12)中的服务器和具有相同IP(1.1.1.12)的Alt服务器都可以运行,并向networking外发出请求(比如使用端口3115和端口53115)到相同的目标(如networking服务器)。 该Web服务器将看到两个请求来自相同的IP地址,只是从两个不同的端口,并会回应两个,这些数据包将返回,两个服务器(3115会去每个服务器主要networking,53115响应将去到Altnetworking上的服务器)。
两台服务器都需要运行,而不知道其他的存在。
实际上,在最好的情况下,我甚至不希望需要根据端口进行拆分。 理想情况下,你只需要Alt和Main。 如果请求进来,这不是一个响应,它被路由到eth1(主)(所以大多数stream量)。 服务器Alt虽然可以提出请求,并且会从1.1.1.12中显示出来,因为这是ALT中计算机的IP。 它将被路由回到eth2,即对eth1的1.1.1.12的响应。 我并不认为这种情况是可能的,这就是为什么我认为基于港口的隔离是最好的办法。
您描述的两种情况都可以在Linux上使用IPTables来实现,但configuration将非常粗糙。
真正的问题是,为什么您需要设备背后的networking与设备前面的networking处于相同的IP范围? 您最好在设备后面运行不同的IP范围,并在设备中进行IP地址转换。 这样,您可以将所有设备放在设备后面的单个networking中,并根据目标端口将stream量导向不同的机器,或者将连接是否回复到现有连接。