iptables 和 snatting 到不同的网络

iptables 和 snatting 到不同的网络
                linuxbox (p.q.r.t)
                    |
                    |
 INTERNAL  ------ ABCD ----- INTERNET
(p.q.r.s)                  (m.n.o.k)

ABCD 有 3 个接口连接到 linuxbox、INTERNAL N/W、INTERNET。

Linuxbox 有一个私有地址(pqrt)。目前我正在从 linuxbox 抓取数据包到 ABCD 的 INTERNET。

我对来自 linuxbox 的 FTP 有一点怀疑,因为我必须支持从 linuxbox 到内部网络以及互联网的 ftp。

我如何在 ABCD 中的 iptables 中制定一条规则,使其能够确定 ftp 服务器的目标 ip 地址是在内部网络 (INTERNAL N/W) 内还是在互联网 (INTERNET) 中,并相应地进行 natting。

答案1

如果 linuxbox (pqrt) 和 INTERNAL (pqrs) 位于同一子网,那么您不应该访问 ABCD,因为在您描述的场景中,它实际上充当了伪装路由器。我必须假设在 ABCD 上启用了转发,否则您将无法从那里访问互联网,我还必须假设已设置正确的路由,否则您的内部客户端将无法获得流量。

womble 所说的是正确的,但如果按照应有的方式连接,则 ftp 应该可以工作,如果不行,则问题可能不在于 ABCD。您可以为特定流量添加 iptables 日志记录,以查看问题是否出在 ABCD,如下所示:

iptables -A INPUT -p tcp -m tcp --destination-port 21 -j LOG --log-level 7 --log-prefix "FTP Testing"

当然,如果您的网络上有大量 FTP 流量,您可以限制记录流量的主机。完成后请关闭此功能,因为它会很快填满日志。

答案2

如果您希望某台机器位于不同的网络段,则应将其放在单独的 IP 子网中 - 这样正常路由就可以正常工作。如果真的如果无法做到,您可以使用一种称为“代理 ARP”的技术,其中网关盒(“ABCD”)可以假装是网络上的其他机器,并代表彼此响应 ARP 请求。我不是但是,除非您真的知道自己在做什么,否则不推荐这样做,而您应该只创建单独的子网(这并不意味着您没有足够的 RFC1918 空间来玩)。

答案3

您需要设置的NAT规则是POSTROUTING规则(snat)。

POSTROUTING 意味着在生根之后,因此您只能匹配去往 INTERNET 的数据包,因为您的路由表已经决定了这一点。

类似的想法:

iptables -t nat -I POSTROUTING -o nameOfABCDInterfaceGoingToInternet -p tcp 等...

答案4

如果 ABCD 是专用路由器/交换机设备,那么它应该可以正常工作。只需将内部网络服务器插入备用端口即可。但是,如果 ABCD 是具有多个 NIC 的服务器(从您的问题来看是这样),那么您必须将 NIC 连接在一起。

您将不再拥有两个 NIC,而只有一个桥接设备,它将充当单个“NIC”。所有内容都将显示在 pqr0/24 网络中。您的防火墙规则应该更新以反映新设备(桥接器)。如果您需要限制 INTERNAL 和 linuxbox 中的计算机之间的流量,那么您需要编写这些规则。请记住,FTP 具有您需要考虑非常不同的协议方案。至于与 INTERNET 通信,您只需要更改那些已在 linuxbox 上运行的规则以反映新设备。

顺便说一句,您不应该选择自己的 pqr0 网络号。已经有一个专门分配给此类用途的范围。/16 网络是 192.168.xx,似乎您应该使用它。阅读它。/16 网络允许 2^16 = 65,536(减去路由器和广播地址的 2)。192.168.1/8 允许大约 256 个主机。应该有一条规则丢弃以下数据包RFC1918源地址。

相关内容