Linux作为三个networking之间的路由器(一个是Internet)

我有一个在两个networkingXX3.0和XX4.0之间路由的Linux机器,我希望它能够将这些networking连接到Internet。

我在这里阅读了@凯文的伟大的答案,为了能够这样做,我必须使用NAT,这意味着iptables,我的服务器现在不使用iptables,所以我需要find正确的命令,以便使。

我的networking可以这样描述: Internet <-(eth0) Linux Router <-[1](eth1) 192.168.3.0 <--[2](eth2) 192.168.4.0 eth2直接连接到路由器。

两个本地networking可以相互通话,但是没有人可以ping通公共IP地址。 我试图嗅探路由器中的数据包,当我在.3.xnetworking中的一台计算机上发出ping命令到一个公共IP地址时,但据我所知,有一个问题,似乎用eth0 int的无尽的ARP请求关于谁有3.x IP地址。 似乎我必须在路由器上启用类似于NAT的行为。 我做了一个search,我没有find正确的命令,我需要与iptables问题,虽然我已经尝试了这里和这里提到的命令。 我不得不在两个本地networking之间进行路由而不使用iptables,因为我不需要它,所以我宁愿不要使用它,除非没有它,否则无法做NAT(在这种情况下,我更喜欢使用iptable任何其他程序)。

总结一下这个问题:1,我需要能够让所有的三个networking都能够互相交stream。 2.我更喜欢不使用iptables(如果可能的话)或任何其他添加的程序。 就这样。

谢谢。

两个本地networking可以互相通信意味着您已启用ip_forward。 如果本地networking无法ping公网IP地址,则需要进行伪装。

你能ping这个linux的公共IP地址? 如果没有,那么一定有其他问题。 也许,你需要在桥接模式下设置你的路由器(这只是一个猜测)。

我假设你的linux机器可以ping公网ip,在eth0上configuration公网ip。 所以你的内部networking机器不能通过私有IP地址到Internet上去,所以你需要做NAT。 尝试使用iptables,因为它非常简单。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

如果你的系统上没有安装iptables。 必须默认安装一些防火墙。 你正在使用哪个发行版?

私人IP地址不适用于Internet,无法路由。 他们只能在本地使用。

要启用Internet访问,您需要启用IP转发,这似乎是从您的描述中完成的。 其次,你需要使用NAT。 大多数时候,你的ISP为你做NAT。 这可以根据连接types和分配的IP进行更改。

对于这个工具,我不认为有比iptables更好的工具在Linux下做。

经过一些研究,并从你的peopole推荐,我来简要说明iptable是做NAT(masqurating)的最好方法,所以我做了如下:

#刷新所有当前的iptables设置:

$>iptables -F$>iptables -t nat -F

然后尝试在本地networking之间进行ping操作,它应该使用iptables的默认值,以防万一不能input:

$>iptables -P INPUT ACCEPT

$>iptables -P FORWARD ACCEPT

$>iptables -P OUTPUT ACCEPT

然后从@Sachin Divekar发出上面的命令(将ethXreplace为Internet连接的接口):

$>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

testing,它应该工作。 那么你应该保存这个设置:

$>iptables-save > /etc/sysconfig/iptables

完成。