设置 iptables 白名单的正确语法

设置 iptables 白名单的正确语法

我是一名初级系统管理员,想了解一些基本知识。我正在尝试为我的服务器设置 CloudFlare。有一些 IP 需要列入白名单,CloudFlare 建议在终端上使用以下命令来执行此操作:

iptables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT

其中白名单 IP替换为 $ip。我的问题是语法问题。该命令是否应该

iptables -I INPUT -p tcp -m multiport --dports http,https -s "103.21.244.0/22" -j ACCEPT

或者应该省略" ",即:

iptables -I INPUT -p tcp -m multiport --dports http,https -s 103.21.244.0/22 -j ACCEPT

或者说这无所谓?

我最近对 ​​iptables 进行了一些调整,感觉不需要" ",因此造成了混淆。抱歉,我问了个菜鸟问题。

答案1

如果您要扩展 shell 变量(如)$ip,则引号非常可取,以避免错误和 shell 转义安全问题。如果它是显式字符串(如您所展示的),则它是可选的。

引号本身不是发送给 iptables 的参数的一部分;在 Linux 上,它们被 Shell 使用,以避免在空格上拆分参数(这在 Windows 中不起作用,因为 Windows 中的参数不是字符串向量)。

如果您的 IP 列表(白名单或黑名单)很长,请考虑使用 ipset,它的加载、卸载和执行速度比长链规则要快得多。

相关内容