![如何在 iptables 中确认 IP 范围已被阻止?](https://linux22.com/image/919404/%E5%A6%82%E4%BD%95%E5%9C%A8%20iptables%20%E4%B8%AD%E7%A1%AE%E8%AE%A4%20IP%20%E8%8C%83%E5%9B%B4%E5%B7%B2%E8%A2%AB%E9%98%BB%E6%AD%A2%EF%BC%9F.png)
在 Ubuntu 19 上,我使用这个脚本GitHub - 使用 iptables + ipset + ipdeny.com 封锁国家。
我已经安装了它,并且为了测试我将它配置为获取两个 IP 列表,并且当我从 shell 运行它时,没有出现任何错误/var/log/ipset-country.log
。
当我尝试使用列出被阻止的 IP 范围时
iptables -L INPUT -v -n
我懂了
Chain INPUT (policy DROP 59 packets, 2873 bytes)
pkts bytes target prot opt in out source destination
407K 137M ufw-before-logging-input all -- * * 0.0.0.0/0 0.0.0.0/0
407K 137M ufw-before-input all -- * * 0.0.0.0/0 0.0.0.0/0
33086 1783K ufw-after-input all -- * * 0.0.0.0/0 0.0.0.0/0
32577 1759K ufw-after-logging-input all -- * * 0.0.0.0/0 0.0.0.0/0
32577 1759K ufw-reject-input all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 LOGIPS tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set ipv4-falkland_islands src
0 0 LOGIPS tcp -- * * 0.0.0.0/0 0.0.0.0/0 match-set ipv4-ethiopia src
32577 1759K ufw-track-input all -- * * 0.0.0.0/0 0.0.0.0/0
它似乎没有显示两个 IPv4 IP 集的 IP 范围;相反,我看到了0.0.0.0/0
。
我如何确定这两个 IP 列表是否被正确导入?
如何列出当前被阻止的 IP 范围?
答案1
最后,如果运行正常,您应该会看到国家/地区阻止规则的数据包和字节数不为零。示例:
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
...
60848 3326067 DROP all -- enp4s0 * 0.0.0.0/0 0.0.0.0/0 match-set china src
1265 57566 DROP all -- enp4s0 * 0.0.0.0/0 0.0.0.0/0 match-set hongkong src
26865 1085462 DROP all -- enp4s0 * 0.0.0.0/0 0.0.0.0/0 match-set romania src
193511 7816920 DROP all -- enp4s0 * 0.0.0.0/0 0.0.0.0/0 match-set russia src
33149 1358726 DROP all -- enp4s0 * 0.0.0.0/0 0.0.0.0/0 match-set ukraine src
要列出任何集合的内容,请执行sudo ipset list SETNAME
。例如:
doug@DOUG-64:~$ sudo ipset list romania | head -15
Name: romania
Type: hash:net
Revision: 6
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 65600
References: 1
Members:
193.104.73.0/24
45.131.104.0/22
89.45.66.0/24
91.240.94.0/24
176.223.66.0/24
185.248.136.0/22
46.175.152.0/22
176.116.32.0/20
答案2
如果显示的规则是您想要的,则表明您的防火墙已启动。
打开命令行终端(选择应用程序>附件>终端),或使用 ssh 登录到远程服务器,然后输入以下命令阻止 ip 地址,如下所示:
# /sbin/iptables -A INPUT -s 65.55.44.100 -j DROP
要查看被阻止的 IP 地址,请输入:
# iptables -L INPUT -v -n
或者
# iptables -L INPUT -v -n | less
任务:检查被禁止的 IP 的 Linux 使用如下 grep 命令来验证 IP 地址 1.2.3.4 是否被阻止:
# iptables -L INPUT -v -n | grep "1.2.3.4"
如何删除或解除对 IP 地址 1.2.3.4 的阻止?使用以下语法在 Linux 下删除或解除对 IP 地址的阻止,输入:
# iptables -D INPUT -s 1.2.3.4 -j DROP
最后,确保保存防火墙:
# service iptables save