我在Debian Etch机器上遇到了一个问题。对于黑暗和暴风雨的原因,它在eth0上的IP很奇怪,但是我们必须保持这样的状态。
它的ifconfig:
eth0 Link encap:Ethernet inet addr:128.0.0.250 Mask:255.255.0.0 eth1 Link encap:Ethernet inet addr:192.168.1.250 Mask:255.255.255.0
用命令:
iptables –t nat –L POSTROUTING
我得到:
target prot opt source destination ACCEPT 0 -- 128.0.0.2 anywhere MASQUERADE 0 -- !192.168.1.0/24 anywhere
第二个规则,如果我理解正确的话,所有的stream量都不同于192.168.1.0/24。 换句话说,所有发往我拥有路由规则的lan的数据包都从Debian Etch的机器ip发送,失去了真正的发送者。
我希望这台机器不要通过NAT的stream量不通过它。 我会尽量做得更清楚…它应该只有来自128.0.0.250(它的IP),从192.168.1.250出去的NATstream量。
我最近在学习linux,这有点太多了:/任何人都可以帮忙(也许指示备份configuration,所以我可以安全的情况下,一塌糊涂)?
非常感谢!
您可以使用以下命令备份当前的iptablesconfiguration:
iptables-save >iptables-20101117
这将保存当前运行的规则,可以通过以下方式进行恢复:
iptables-restore <iptables-20101117
“iptables -L”命令没有列出所有关于规则的信息,包括接口限制等,所以我们可能在这里看不到全图。 我通常看看“iptables-save”的输出,以确保我看到完整的规则信息。
就规则而言,不应该从内部128个IP地址stream出192stream量。 stream量离开192接口应该绑定到192接口的IP地址。 所以,如果你不想要MASQUERADE规则,你可以删除它。
我通常通过编辑文件并在整个规则集上使用iptables-restore来更改规则。 iptables-restore是primefaces性的,所以整套新规则一次性得到应用。
另外,你可以得到一个稍微更详细的输出:
iptables –t nat –vnL POSTROUTING
这将显示规则的input/输出接口。 (-n部分告诉它不要parsing端口号/ IP地址,我发现这些端口号/ IP地址更容易理解,但这更像是一种有趣的事情)
至于规则,在NAT中,我试图坚持使用基于接口的规则,而不是匹配IP地址,因为在外部IP可能发生变化的环境中它更加稳健。
最常见的出站NAT规则是:
iptables -t nat -I POSTROUTING -s <LAN netblock> -o eth0 -j MASQUERADE
这使得来自局域网的所有stream量都能stream向更广阔的世界(如果eth0是这样的话)将拥有eth0的IP。 (更正编辑)
但是,如果我正确地读取了您的请求,听起来就像您根本不需要任何NAT。 请记住直接来自机器本身的stream量总是会有一个接口的源地址。 你不需要任何NAT规则。
这里是一个有用的图表: http : //www.shorewall.net/NetfilterOverview.html显示通过各种表的数据包的stream量。