答案1
是的。这对于数据包过滤器来说是一项(很好的)工作。如果该范围与子网可以写为 IP 地址 + 网络掩码。如果您需要至少 20 个地址,我会将其四舍五入到 30,并从 192.168.42.33 开始,因此您将讨论子网 192.168.42.32/27,这意味着主机的地址范围从 0.33 到 0.62 。如果这太多,您可以将其缩小到 /28,这将产生 14 个主机,从 0.33 到 0.47。考虑到这一点,您可以添加
pass on <ifname> inet proto tcp from 192.168.42.32/27 to port ssh
to/etc/pf.conf
在 SSH 服务器上,其中<ifname>
是将接收 SSH 流量的接口的名称(例如em0
)。可以省略,在这种情况下,规则将应用于所有接口。
请做请阅读pf.conf
的手册页,了解有关设置数据包过滤器以及如何配置它的更多详细信息。 OpenBSD 的man
页面通常写得非常好、详尽并且经常包含示例。
答案2
你可以这样做iptables
#allow the hosts
iptables -I INPUT -p tcp --dport 22 -s 192.168.42.40 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -s 192.168.42.41 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -s 192.168.42.42 -j ACCEPT
...# you must specify all of them
iptables -I INPUT -p tcp --dport 22 -s 192.168.42.60 -j ACCEPT
#deny everyone else, note the -A (append) option.
iptables -A INPUT -p tcp --dport 22 -j DROP