Debian etch:如何纠正错误的 iptables/NAT

Debian etch:如何纠正错误的 iptables/NAT

我在 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

如果我理解正确的话,第二条规则对所有不同于 192.168.1.0/24 的流量进行 NAT。换句话说,所有发往我为其制定了路由规则的局域网的数据包都是从 Debian Etch 的机器 IP 发送的,从而丢失了它们的真实发送者。

我希望这台机器不要对未经过它的流量进行 NAT。我会尽量说得更清楚...它应该只对来自 128.0.0.250(其 IP)和从 192.168.1.250 发出的流量进行 NAT。

我最近在学习 Linux,这有点太多了 :/ 有人可以帮忙吗(也许给出备份配置的指示,以便在出现完全混乱的情况下我可以安全)?

多谢!

答案1

您可以使用以下命令备份当前的 iptables 配置:

iptables-save >iptables-20101117

这将保存当前正在运行的规则,可以使用以下命令恢复:

iptables-restore <iptables-20101117

“iptables -L”命令不会列出有关规则的所有信息,包括接口限制等内容,因此我们可能无法在此处看到完整的情况。我通常会查看“iptables-save”的输出,以确保我看到完整的规则信息。

就规则而言,不应有来自其内部 128 IP 地址并通过 192 接口发出的流量。离开 192 接口的流量应绑定到 192 接口 IP 地址。因此,如果您不想要 MASQUERADE 规则,您可以将其删除。

我通常通过编辑文件并对完整规则集使用 iptables-restore 来更改规则。iptables-restore 是原子的,因此整套新规则会立即应用。

答案2

另外,你可以使用以下命令获得稍微更详细的输出:

iptables –t nat –vnL POSTROUTING

它将显示规则的输入/输出接口。(-n 部分告诉它不要解析端口号/IP 地址,我发现这更容易查看,但这更多的是一种品味......)

至于规则,使用 NAT 时,我尝试坚持基于接口的规则,而不是匹配 IP 地址,因为它在外部 IP 可能发生变化的环境中更为强大。

最常见的出站 NAT 规则是:

iptables -t nat -I POSTROUTING -s <LAN netblock> -o eth0 -j MASQUERADE

这使得来自 LAN 的所有流量,发往更广阔的世界(如果 eth0 是那样的话)都将具有 eth0 的 IP。(已编辑并更正)

但是,如果我没有看错您的请求,听起来您根本不想要任何 NAT。请记住,直接从机器本身发出的流量将始终具有其发出接口的源地址。您不需要任何 NAT 规则。

这里有一个有用的图表:http://www.shorewall.net/NetfilterOverview.html显示数据包通过各个表的流程。

相关内容