这两者有什么区别或者它们本质上是同一件事吗?
iptables -t filter -A FORWARD -s $EXTERNALNET -d $INTERNALNET -p tcp --dport 22 -j ACCEPT
iptables -t filter -A FORWARD -s $INTERNALNET -d $EXTERNALNET -p tcp --sport 22 -j ACCEPT
答案1
第一条规则接受从 转发到$EXTERNALNET
的流量,$INTERNALNET
并使用目的地端口 22/tcp。
第二条规则接受从 转发到$INTERNALNET
的流量$EXTERNALNET
,并使用来源端口 22/tcp。
在正确配置状态防火墙(如 iptables)时,不需要基于源端口允许流量的规则,因为有效建立的 TCP 流的两个方向都是允许的。否则,可能会导致安全漏洞——在这种情况下,只要源端口为 22/tcp,就会允许所有出站流量。
对于无状态配置,给出的示例可能是可以实现的最佳示例。
答案2
-s 是源,-d 是目的地,因此这些规则与任一方向的流量有关。
$INTERNALNET 和 $EXTERNALNET 是变量,可能是子网或网络范围。我假设这是从你在某处得到的 bash 脚本中获取的?
答案3
--dport 22 ACCEPT
该指令告诉防火墙允许发往端口 22 的流量通过到您的服务器。
--sport 22 ACCEPT
该指令告诉防火墙允许从外部机器的端口 22 发送的流量通过到您的服务器。