iptables禁用国外IP

iptables官网

iptables封禁国外IP–博客园–good
iptables结合ipset禁用国外IP访问服务器
iptables禁用国外IP–周一自动更新ip库
iptables封禁国外IP的办法–csdn–凌晨两点更新
iptables封禁国外IP的办法–51cto–复制了ip库
腾讯文档–宝塔面板封禁办法
另外的IP库


使用iptable设置规则报错iptables: Index of insertion too big.

[root]# iptables -I INPUT 5 -m set ! --match-set china src -j DROP
iptables: Index of insertion too big.

这个错误提示说明你指定的插入位置超出了现有规则的范围。你可以使用 iptables -L --line-numbers 命令来查看当前规则列表及其对应的编号

[root]#iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination   

根据你提供的 iptables 规则列表,可以看出 INPUT、FORWARD 和 OUTPUT 链中都没有任何规则。这意味着当前没有任何防火墙规则设置,并且默认策略是接受所有流量。

如果你的 iptables 规则列表中没有任何规则,那么你可以使用以下命令来在 INPUT 链中插入新规则:

sudo iptables -I INPUT -m set ! --match-set china src -j DROP

这将在 INPUT 链的最开始插入一个新规则,该规则使用 set 模块来匹配不属于 china IP 集合的源地址,并将匹配的数据包丢弃。

请注意,iptables 规则的顺序非常重要,因为它们按照顺序逐条匹配。确保在插入规则之前,已经考虑到了现有规则的影响。

如果你仍然遇到 Index of insertion too big 错误,请尝试使用 iptables -L --line-numbers 命令检查 INPUT 链中已有的规则数量,然后将插入位置设置为现有规则数量加一。

遍历 cn.zone 文件中的每一行

for i in $(cat cn.zone); do
# 将每个 IP 地址添加到 ipset “china” 中
echo “ipset add china $i” >> ipset_result.sh
done

为生成的脚本添加执行权限

chmod +x ipset_result.sh
这个脚本的目的是为了将 cn.zone 中的每个IP地址逐一添加到 “china” 这个 ipset 中。ipset add china $i 这个命令会将每个IP地址 $i 添加到名为 “china” 的 ipset 中。生成的命令将会写入到 ipset_result.sh 脚本中。

ipset create china hash:net hashsize 10000 maxelem 1000000
sh ipset_result.sh
ChatGPT
你的脚本和命令的目的是创建一个名为 “china” 的 ipset,并将 cn.zone 文件中的 IP 地址添加到这个 ipset 中。下面是步骤:

创建 ipset “china”:

bash
Copy code
ipset create china hash:net hashsize 10000 maxelem 1000000
这个命令将创建一个 hash:net 类型的 ipset,命名为 “china”,并指定了 hash 表的大小和元素的最大数量。

执行生成的脚本 ipset_result.sh:

bash
Copy code
sh ipset_result.sh
这个脚本会执行一系列的 ipset add 命令,将 cn.zone 文件中的 IP 地址逐一添加到 “china” ipset 中。

确保在执行脚本之前,你已经检查了 cn.zone 文件,其中包含了正确的 IP 地址列表。而且,确保你了解这些操作可能对你的网络安全产生的影响。如果是在生产环境中,请确保你有适当的备份和回滚计划。

ipset save china > /etc/ipset.conf
ipset restore < /etc/ipset.conf
ChatGPT
你的这两个命令用于将当前的 “china” ipset 保存到文件 /etc/ipset.conf 中,并在需要的时候从这个文件中还原 ipset。这可以是在系统重启后恢复 ipset 状态,或者在需要时手动进行还原。

将当前 “china” ipset 保存到文件:

bash
Copy code
ipset save china > /etc/ipset.conf
这个命令将 “china” ipset 的内容保存到 /etc/ipset.conf 文件中。

从文件中还原 ipset:

bash
Copy code
ipset restore < /etc/ipset.conf
这个命令从 /etc/ipset.conf 文件中还原 “china” ipset 的内容。

这样的操作可以在系统重启后保持 ipset 的状态,确保在重启后你的防火墙规则仍然有效。如果你需要定期执行这些操作,你可能希望将这两个命令添加到系统启动脚本中,以确保在每次启动时都会还原 “china” ipset。

ipset list china
ipset list china | wc -l
ChatGPT
以下是查看 “china” ipset 的命令:

bash
Copy code
ipset list china
这个命令将显示 “china” ipset 中当前存在的 IP 地址列表。

bash
Copy code
ipset list china | wc -l
这个命令将显示 “china” ipset 中 IP 地址的数量。wc -l 用于统计行数,这里用于统计 IP 地址的数量。

chmod +x /etc/rc.d/rc.local
echo “ipset restore < /etc/ipset.conf” >> /etc/rc.d/rc.local
ChatGPT
/etc/rc.d/rc.local 是一个启动时自动运行的脚本文件,用于在系统启动时执行自定义命令。你的命令将在启动时还原 “china” ipset 中的规则。

bash
Copy code
chmod +x /etc/rc.d/rc.local
echo “ipset restore < /etc/ipset.conf” >> /etc/rc.d/rc.local
这两个命令的作用是:

chmod +x /etc/rc.d/rc.local:给 /etc/rc.d/rc.local 文件添加执行权限,确保它在系统启动时能够被执行。
echo “ipset restore < /etc/ipset.conf” >> /etc/rc.d/rc.local:将命令 “ipset restore < /etc/ipset.conf” 添加到 /etc/rc.d/rc.local 文件的末尾。这样,在每次系统启动时,该命令都会被执行,从 /etc/ipset.conf 文件中还原 “china” ipset 中的规则。
请确保 /etc/rc.d/rc.local 文件中已经包含了正确的 shebang(#!/bin/bash 或类似的),以确保脚本在执行时能够使用正确的解释器。最好检查一下 /etc/rc.d/rc.local 文件中的其他内容,确保你的命令添加在文件的正确位置。

iptables -I INPUT 5 -m set ! --match-set china src -j DROP
ChatGPT
这个 iptables 命令用于在输入规则中插入一条规则,将不在 “china” ipset 中的源 IP 地址的流量拒绝。具体而言,它使用 -m set 模块和 --match-set 选项来匹配不在 “china” ipset 中的源 IP 地址,并将这些流量通过 -j DROP 拒绝。

bash
Copy code
iptables -I INPUT 5 -m set ! --match-set china src -j DROP
-I INPUT 5:在 INPUT 链的规则序号 5 之前插入新规则。这个位置可以根据实际需求进行调整。
-m set:使用 set 模块,允许匹配集合中的 IP 地址。
–! match-set china src:匹配源 IP 地址不在 “china” ipset 中的流量。
-j DROP:拒绝匹配的流量。
请确保在添加此规则之前,“china” ipset 已经正确地配置和加载,并且确保你了解这个规则可能对系统安全性产生的影响。如果你在远程服务器上执行这些命令,请确保你有其他可行的方式来访问服务器,以防止因为规则配置错误而失去连接。


iptables-save > /etc/sysconfig/iptables # 持久化Iptables规则

chmod +x /etc/rc.d/rc.local
echo “/usr/sbin/iptables-restore < /etc/sysconfig/iptables” >> /etc/rc.d/rc.local
ChatGPT
你的这些命令是用于将 iptables 规则保存到文件并在系统启动时加载这些规则,确保防火墙规则在系统重启后仍然有效。

iptables-save > /etc/sysconfig/iptables:将当前的 iptables 规则保存到 /etc/sysconfig/iptables 文件中。这个文件通常在一些 Linux 发行版中用于存储 iptables 规则。

chmod +x /etc/rc.d/rc.local:给 /etc/rc.d/rc.local 文件添加执行权限,以确保它在系统启动时能够被执行。

echo “/usr/sbin/iptables-restore < /etc/sysconfig/iptables” >> /etc/rc.d/rc.local:将命令 /usr/sbin/iptables-restore < /etc/sysconfig/iptables 添加到 /etc/rc.d/rc.local 文件的末尾。这样,在每次系统启动时,该命令都会被执行,从 /etc/sysconfig/iptables 文件中加载 iptables 规则。

确保 /etc/sysconfig/iptables 文件中包含了你希望应用的正确规则,以及 /etc/rc.d/rc.local 文件的其他部分没有引起冲突。此外,要注意 /etc/rc.d/rc.local 文件是否已经在系统中被正确启用,不同的系统有不同的启动脚本机制。

如果你的系统使用 systemd,你可能还需要考虑使用 systemctl enable rc-local.service 命令来启用 /etc/rc.d/rc.local 服务。

你可能感兴趣的:(tcp/ip,服务器,网络协议)