具有“任意”子网掩码的 IP 地址的 iptable 规则

具有“任意”子网掩码的 IP 地址的 iptable 规则

我有一个要求添加一个 iptable 规则,假设源 IP 为 10.10.10.20/any 目标 IP any。

iptables -t filter -A FORWARD_0_IN -p all --ipv4 --source 10.10.10.1/any --destination 10.10.10.2/any  -j DROP

上述命令失败并出现错误:iptables v1.8.6 (legacy): 指定了无效掩码“any”

/any意味着所有可能的子网掩码/0 to /32。我想避免为每个子网掩码添加单独的 33 条规则。有什么更好的方法可以实现这一点?

到那时,让我从需求团队那里得到澄清,对/任何的期望是什么。

答案1

我想避免为每个子网掩码添加单独的 33 条规则。

您不太可能需要这样做。而且我认为您不太了解子网掩码的含义或作用。

这是一个非常长的问答:IPv4 子网划分如何工作?

但非常简单:

当您添加没有任何子网掩码或带有 /32 子网掩码的 IPv4 IP 地址时,这意味着“这个特定的 IP 地址”

当您使用 IPv4 IP 地址时任何除此之外的其他子网掩码/32 意味着:“这CIDR 子网范围包含此 IP 地址”

换句话说10.10.10.1/24就是:“包含的 /24 子网范围10.10.10.1
即子网范围从10.10.10.010.10.10.255 ,更常见的是指定为10.10.10.0/24

随后的 10.10.10.1/8意思是:“包括的 /8 范围10.10.10.1
即子网范围从10.0.0.010.255.255.255 ;通常指定为10.0.0.0/810.10.10.1/8等效。

请注意,这样的范围包括10.10.10.1/9,, ....以及所有子网,10.10.10.1/10直到10.10.10.1/1110.10.10.1/32

意思是10.10.10.1/0“包含的 /0 范围10.10.10.1 - 即从0.0.0.0255.255.255.255,换句话说 任何 IPv4 地址

答案2

IP 地址不具有“子网掩码”属性。(在遥远的分类寻址时代,它曾经具有子网掩码,但这个时代早已一去不复返了 — 30 多年前,随着 CIDR 的出现。您应该忘记这一点,假装从未发生过这种情况。此外,即使在分类寻址的情况下,答案的其余部分仍然有效)。

因此,IP 地址只是 32 位数字,仅通过查看 IP 地址,您无法知道它在分配它的系统上配置了什么掩码。掩码仅对该系统有意义 - 它旨在告诉该系统哪些地址可以“立即”访问,哪些地址需要通过网关访问。网络掩码是路由功能;它唯一的作用就是定义某些“连接”类型的路线。

这是无意义的要求“允许具有任何掩码的某些 IP”。


您的要求中的这个符号可能不是掩码,而是端口号?那么它需要指定一个具有端口号概念的 L4 协议(TCP、UDP 等)。或者,这可能是协议本身,这意味着应该允许来自该主机的“任何”IP 协议号。

相关内容