我对 IPtables 有疑问。
让我们从我书中的这个例子开始:
您将为接受 EMSTP(端口 465)和 IMAP(端口 993)连接(具有暴露于 Internet 的网络接口 eth1 和暴露于公司网络的另一个网络接口 eth2)的邮件服务器设置什么规则?
我尝试这样回应:
Iptable -A FORWARD -p EMSTP, IMAP -s all -i eth1 -m multiport 465,993 state –state NEW, ESTABILISHED -j ACCEPT
Iptable -A FORWARD -p EMSTP, IMAP -s all -i eth2 -m multiport 465,993 state –state NEW, ESTABILISHED -j ACCEPT
- 我考虑了FORWARD,因为没有指定流量是INPUT还是OUTPUT...所以我使用了通用的输入/输出(FORWARD如果我可以在这种模式下使用)
- 协议已指定(所以我认为没有问题)
- 我使用了两个规则,因为我使用了不同的接口,但我认为可以在相同的规则中完成所有操作,只需在同一规则中添加另一个 -i 即可。
- 对于网络,我认为一个是(互联网),另一个是本地网络(我真的不知道“公司”是什么意思)
我的问题是我的回答是否良好以及是否强制使用这种类型的格式。
我交换规则的顺序有什么变化?
在这种情况下,广告示例:
Iptable -A FORWARD -j ACCEPT -i eth1 -p EMSTP, IMAP -s all -m multiport 465,993 state –state NEW, ESTABILISHED
只需交换跳转和界面(-j 和 -i)
有人可以帮忙理解吗?
答案1
首先,一些提醒:
-p
参数是针对 TCP、UDP、ICMP 等特定协议,而不是 IMAP 等更高级别的协议。OUTPUT 和 INPUT 链用于从机器发出和传入机器的数据包。如果您想过滤转发的数据包(当您的计算机充当网关时),您必须使用FORWARD链。要区分 IN 和 OUT,请使用输入或输出接口以及源和目标 IP
ESTABILISHED
--> 错字!!! :)
现在,让我们看看您的问题:
您将为接受 EMSTP(端口 465)和 IMAP(端口 993)连接(具有暴露于 Internet 的网络接口 eth1 和暴露于公司网络的另一个网络接口 eth2)的邮件服务器设置什么规则?
这个问题太广泛了,因为它说:
- 该机器是邮件服务器。
- 它有两个接口
- 它必须接受邮件相关协议的连接。
但并不是说两个网络(互联网/企业)都必须接受连接。无论如何,我们假设情况确实如此。
iptables
与判别式一起使用:-i
用于匹配传入该接口的数据包。由于您希望每个接口都接受流量,因此只需删除-i
.前面提到,-p
就是指定传输协议。邮件以 TCP 方式工作,因此请使用 ̀ -p tcp`。
因此,您的第一个响应将起作用(减去拼写错误和一些语法错误,这个想法是可以的)。您的最后一个不会导致它允许来自互联网(eth1)的数据包通过您的服务器并进入您的公司网络。