iptables“未找到主机/网络”,带有感叹号 IP 地址

Art*_*Mat 5 ip iptables

我正在尝试添加一条iptables规则,以便丢弃除来自特定 IP 的数据包之外的所有传入数据包。按照手册,我尝试运行它:

    > iptables -t filter -I INPUT -s !12.34.56.78 -p tcp -j DROP
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

    iptables v1.4.12.1: host/network `!12.34.56.78' not found
Run Code Online (Sandbox Code Playgroud)

手册页说 for-s / --src / --source参数... A "!" argument before the address specification inverts the sense of the address. ...

我对这个感叹号遇到的第一个问题是 shell 将其扩展为历史命令。该解决方案set +H已应用,似乎不再是问题了。

为什么不接受感叹号来指定手册中所说的倒置地址?

PS:当然,我尝试过在 和 IP 之间使用空格!,但不被接受。

编辑
在接受答案之前,也许任何人都可以帮助回答:为什么参数的顺序应该而不是! -s {IP}-s !{IP}手册所说的那样?只是一个新版本iptables改变了这个语法,同时保留了旧的手册页?或者它是否可以以某种方式配置?

Dan*_* t. 3

!和 IP 地址之间需要有一个空格

 iptables -t filter -I INPUT -s ! 12.34.56.78 -p tcp -j DROP
Run Code Online (Sandbox Code Playgroud)

Using intrapositioned negation (如果您收到类似--option !的消息 这) is deprecated in favor of extrapositioned (!--选项这个).

然后放置 ! 在“-s”选项之前,如 -

 iptables -t filter -I INPUT ! -s 12.34.56.78 -p tcp -j DROP
Run Code Online (Sandbox Code Playgroud)