如何从 Ubuntu Server 22.04 解除对我 IP 的阻止?

如何从 Ubuntu Server 22.04 解除对我 IP 的阻止?

iptables -L -v以下是Ubuntu 22.04的输出:

https://pastebin.ubuntu.com/p/47ysNrXCcN/

Chain DENYIN (1 references)
 pkts bytes target     prot opt in     out     source               destination                                                                                                              
  276 14576 DROP       all  --  !lo    any     sylnat-27.147.226.250.link3.net                                                                                                               anywhere

Chain DENYOUT (1 references)
 pkts bytes target     prot opt in     out     source               destination                                                                                                              
    0     0 LOGDROPOUT  all  --  any    !lo     anywhere             sylnat-27.1

如果我写:

iptables -D INPUT -s sylnat-27.147.226.250.link3.net -j DROP

输出为: iptables v1.8.7 (nf_tables): host/network sylnat-27.147.226.250.link3.net' not found

如果我写:

iptables -D INPUT -s 27.147.226.250 -j DROP

输出为:iptables: Bad rule (does a matching rule exist in that chain?)

答案1

下面我写的内容永远不足以让你了解你需要的一切ipatebles... 因此,请阅读手册了解选项并在互联网上研究相关概念。

看起来您不知道自己在做什么,因为您似乎不知道系统上实际存在什么规则,而且您似乎不知道规则和规则链之间的区别......因此,我建议您删除所有现有的用户规则并从干净状态正确开始。

您的系统有两个非空的规则链,我建议您将其删除,以达到您真正了解和控制的干净状态......请看此演示:

$ sudo iptables -N MY_CHAIN
$ sudo iptables -A MY_CHAIN ! -i lo ! -o lo -j REJECT
$ sudo iptables -A INPUT -j MY_CHAIN
$ sudo iptables -A OUTPUT -j MY_CHAIN

...这将阻止(拒绝数据包loopback)除系统上某些重要应用程序正常工作所需的接口之外的所有接口上的所有入站和出站流量。

规则嵌套在链中:

$ sudo iptables -vL MY_CHAIN
Chain MY_CHAIN (2 references)
 pkts bytes target     prot opt in     out     source               destination         
 1457  142K REJECT     all  --  !lo    !lo     anywhere             anywhere             reject-with icmp-port-unreachable

...(2 references)意味着有两个规则引用了该链... 您需要先找到它们并删除它们,然后才能删除该链... 使用以下命令找到它们:

$ sudo iptables -S | grep MY_CHAIN
-N MY_CHAIN
-A INPUT -j MY_CHAIN
-A OUTPUT -j MY_CHAIN
-A MY_CHAIN ! -i lo ! -o lo -j REJECT --reject-with icmp-port-unreachable

...删除两条规则:

$ sudo iptables -D INPUT -j MY_CHAIN
$ sudo iptables -D OUTPUT -j MY_CHAIN

...确认链现在是空的:

$ sudo iptables -vL MY_CHAIN
Chain MY_CHAIN (0 references)
 pkts bytes target     prot opt in     out     source               destination         
 4740  434K REJECT     all  --  !lo    !lo     anywhere             anywhere             reject-with icmp-port-unreachable

... 从内核表中清除链条:

$ sudo iptables -F MY_CHAIN

...删除现在为空的链:

$ sudo iptables -X MY_CHAIN

对系统拥有的两个用户链执行此操作。

现在决定你想要什么...你似乎想要允许来自和到你的IP的连接27.147.226.250并阻止除接口之外的其余部分loopback...如果这就是你想要的,那么可以通过多种方式来实现...然而,我将演示一种我认为简单易懂的方法...那就是:

$ sudo iptables -A INPUT -s 27.147.226.250 -j ACCEPT
$ sudo iptables -A OUTPUT -d 27.147.226.250 -j ACCEPT
$ sudo iptables -A INPUT ! -i lo -j REJECT
$ sudo iptables -A OUTPUT ! -o lo -j REJECT

请注意,规则的顺序很重要,因为规则是从第一个开始按顺序进行评估的,因此您必须先允许您的 IP 的流量,然后再阻止所有流量。

相关内容