使用RJ-45电缆和iptables连接两台服务器(不带交换机!)

我有两台服务器,server_1连接到eth0的INTERNET(服务器场的)端口。 没有开关。 他们使用来自(server_1)eth1 – >(server_2)eth0的电缆连接:

ifconfig of (server_1): eth0 inet addr:199.203.51.24, eth0:1 inet addr:212.235.19.200, eth1 inet addr:10.0.0.1 ifconfig of (server_2): eth0 inet addr:10.0.0.2 

我想通过server_1连接server_2到internet,并从(server_1)eth0的gatway获得静态IP地址。

尝试使用iptables在(server_2)像这样:

 iptables -t nat -A POSTROUTING -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.0.0.2 -j SNAT --to-source 212.235.19.203 iptables -t nat -A PREROUTING -d 212.235.19.203 -j DNAT --to-destination 10.0.0.2 

而掩蔽IP是212.235.19.203。 这只适用于世界的工作,但! 里面server_2试图ping 212.235.19.203不工作!

你的iptables规则有多种方式。 首先,你的POSTROUTING链有两个规则,但是第一个匹配每个数据包,所以第二个规则是不会被使用的。

其次,你的SNATMASQUERADE规则只适用于eth0上的数据包。

但是由于212.235.19.203只分配给一台机器,所以最好不要使用NAT。

另一种解决scheme是,让当前分配的主机10.0.0.2实际上已将212.235.19.203分配给物理networking接口(networking掩码为255.255.255.255 )。 网关需要一个静态路由,指示212.235.19.203/32eth1本地连接。 另外,你可以打开eth0上的proxy_arp

有了这种组合,你将IP地址真正路由到预定的主机,这将使一切工作更好。 您可以避免使用该IP的NAT规则,如果您想要防火墙,仍然可以在FORWARDING链中过滤stream量。

我想你已经尝试了iptables(server_1)而不是(server_2),正如你所说的那样。

这里的问题是(server_2)不知道它必须回答目的地是212.235.19.203的数据包。

一个可行的解决scheme是在(server_2)中使用以下内容:

 iptables -t nat -I PREROUTING -d 212.235.19.203 -j REDIRECT