我有一个在两个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
完成。