iptables:每个物理接口的服务

我有一个虚拟机,我试图configuration(不成功)每个物理设备一个服务 – 即ssh打开只在eth0,HTTP只在eth1和ftp只在eth2。 无论物理设备configuration如何,都必须发生这种情况,例如,如果eth0,eth1和eth2全都在同一子网上使用DHCP,并且eth0在一个上,eth1在另一个上使用DHCP,则必须工作。

第一个尝试是使用设备(-i eth0)过滤掉iptables中的stream量,然而事实certificate,由于内核在s1和eth2上运行ssh将会变得开放(数据包在接口上被不同的IP接受)。 切换到使用IP筛选(-s xyzq)无法正常工作,因为每次DHCP信息更改时都需要更新表。

我对如何实现这一目标有任何build议,我已经尝试过NAT到具有静态IP,网桥等的虚拟接口,但都没有成功。

UPDATE1:我没有提到,但通过使用IP(-s xyzq)并将arp_filter设置为2(RFC3704松散反向path),我得到每个设备一个服务,但是我需要保持防火墙与设备的实际IP同步这已被certificate是非常挑剔的。

您的模型打开了大量的路由和configuration问题。 具有不同的DNS条目,每个服务都parsing到相同的IP地址将是更可行的方法。 像smtp.example.com,ftp.example.com,ssh.example.com和其他所有DNS名称都返回相同的IP地址是很常见的。

这些服务都使用不同的端口,允许它们在相同的界面上运行。 iptables可以通过服务来防火墙,如果需要的话可以是目的地址。 地址可以在相同的接口或不同的接口上。 我还没有find一个解决scheme,允许DHCP为一个接口提供多个地址。