iptables 规则适用于入站,但不适用于出站

iptables 规则适用于入站,但不适用于出站

我有 5 个 Windows 工作站(不同版本)连接到一个非托管交换机,然后该交换机连接到运行 Samba 的 NAS,然后将数据推送到我们的存储集群。由于多种原因,这一直是个问题,因此我将 NAS 转变为固件,以允许流量直接到达我们的存储集群。除了所有这些......我得到了这个工作,但我不明白为什么它正在发挥作用,这确实困扰着我。这就是我所做的。

如果重要的话,这是一台 RHEL 6 服务器。我不确定目前正在运行哪个版本的 iptables...我不在我的工作计算机上查看它。

接口 em1 连接 DMZ,接口 em2 为专用网络。

如果我设置这些规则,一切都会过去,但它也会让工作站访问开放互联网,这是不合规的。

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth2 -j ACCEPT
iptables -A FORWARD -o eth2 -j ACCEPT

因此,我将其设置为仅允许与我需要的服务进行出站连接。

-A FORWARD -i em2 -j ACCEPT
-A FORWARD -d <DNS> -o em2 -p udp -m multiport --ports 53 -j ACCEPT
-A FORWARD -d <DNS> -o em2 -p udp -m multiport --ports 53 -j ACCEPT
-A FORWARD -d <FreeIPA> -p tcp -m multiport --ports 88 -j ACCEPT
-A FORWARD -d <FreeIPA> -p tcp -m multiport --ports 88 -j ACCEPT
-A FORWARD -d <FreeIPA> -p tcp -m multiport --ports 88 -j ACCEPT
-A FORWARD -o em2 -p tcp -m multiport --ports 137,138,139,445 -m iprange --dst-range <STORAGE> -j ACCEPT
-A FORWARD -o em2 -p udp -m multiport --ports 137,138,139,445 -m iprange --dst-range <STORAGE> -j ACCEPT
-A FORWARD -d <NTP> -o em2 -p udp -m multiport --ports 123 -j ACCEPT
-A FORWARD -p icmp -j ACCEPT

这无法连接,但如果我翻转它们,一切正常!

-A FORWARD -o em2 -j ACCEPT
-A FORWARD -d <DNS> -i em2 -p udp -m multiport --ports 53 -j ACCEPT
-A FORWARD -d <DNS> -i em2 -p udp -m multiport --ports 53 -j ACCEPT
-A FORWARD -d <FreeIPA> -p tcp -m multiport --ports 88 -j ACCEPT
-A FORWARD -d <FreeIPA> -p tcp -m multiport --ports 88 -j ACCEPT
-A FORWARD -d <FreeIPA> -p tcp -m multiport --ports 88 -j ACCEPT
-A FORWARD -i em2 -p tcp -m multiport --ports 137,138,139,445 -m iprange --dst-range <STORAGE> -j ACCEPT
-A FORWARD -i em2 -p udp -m multiport --ports 137,138,139,445 -m iprange --dst-range <STORAGE> -j ACCEPT
-A FORWARD -d <NTP> -i em2 -p udp -m multiport --ports 123 -j ACCEPT
-A FORWARD -p icmp -j ACCEPT

看来这有效是因为--端口将 53、88 等与入站流量的源端口相匹配。我不知道为什么出站规则与目标端口不匹配。当我使用--dports代替--端口,它不起作用,这就是我转而使用的原因--端口。所以我迷路了...有人可以向我解释一下吗?我觉得自己像个白痴。

相关内容