更正设置iptables白名单的语法

我是一个初学者系统pipe理员,并想知道一些基本的东西。 我正在尝试为我的服务器设置CloudFlare。 有一些IP列入白名单,CloudFlarebuild议在terminal上使用以下命令来执行此操作:

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

列入白名单的IP将被replace为$ 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的时候做了一些修改,给人的印象是" "不需要,所以混乱。 对不起noob问题。

如果您正在扩展像$ip这样的shellvariables,则非常希望使用引号来避免错误和shell转义安全性问题。 如果是显示的string,那么这是可选的。

引号本身不是发送给iptables的参数的一部分; 在linux上,它们被shell使用,以避免在空白处分割参数(这在args不是string向量的窗口中不起作用)。

如果你的IP列表(白名单或黑名单)非常长,可以考虑使用ipset,这比加载,卸载和执行要快得多。