如何使用“ ipset”阻止来自一个国家的IP地址

先前我们已经了解了如何使用GeoIP来限制或允许特定的国家/地区,但是在本文中,我们将研究如何使用带有IPTables的ipset模块来阻止较大的IP范围。 IPset是基于命令行的实用程序,用于管理称为IP的基础并驻留在Linux内核中。 IP Set可以在路径中存储IP地址,网络端口号(TCP / UDP),MAC地址,接口名称或它们的组合,在组合写入和拨号时提供闪电般的速度。 它是Linux中的一个关联的Iptables防火墙应用程序,它使我们可以设置规则来快速轻松地阻止一组IP地址。 在这里,我们将看到如何将ipset模块与IPTables一起使用以及如何在Linux机器上阻止大范围的IP地址。

更新我们的系统

首先,我们需要在Linux机器上升级软件包,以便我们拥有最新的软件包。 为了更新我们的系统,我们需要确保我们以sudo或超级用户身份登录。 为了登录sudo,我们将运行以下命令:

$ sudo -s

进入后,让我们继续更新和升级我们的系统。

基于Debian的系统

# apt update && apt upgrade

基于Redhat的系统

# yum update

安装IPset

大多数Linux发行版(如Ubuntu,Debian)都预先安装了ipset。 但是某些发行版(如Centos)尚未预安装,我们必须在其上安装。 我们可以根据您使用的发行版运行以下命令来安装ipset。

基于Debian的系统

# apt install ipset

基于Redhat的系统

# yum install ipset

创建IP集

现在我们已经在机器上安装了ipset,我们将继续创建IP集。 在这里,我们必须创建一个ipset,其中包含我们准备阻止或限制的网络子网。 因此,首先我们需要获取准备添加到IP集中的子网列表。 为了获得最新的子网,我们将使用最受欢迎的网站之一https://www.countryipblocks.net。 在这里可以从https://www.countryipblocks.net/country_selection.php获取子网列表。 在这里,我们选择了中国的几个子网作为测试目的。

1.0.1.0/24
1.0.2.0/23
1.0.8.0/21
1.0.32.0/19
1.1.0.0/24
1.1.2.0/23
1.10.8.0/23
1.202.0.0/15
5.10.68.240/29
5.10.70.40/30
5.10.72.16/29

这是我们将在本文中阻止的子网的示例,但是在现实世界中,我们将拥有大量的子网。 因此,我们将使用任何脚本/编程语言并按如下所示创建命令列表。

# ipset create countryblock nethash
# ipset add countryblock 1.0.1.0/24
# ipset add countryblock 1.0.2.0/23
# ipset add countryblock 1.0.8.0/21
# ipset add countryblock 1.1.0.0/24
# ipset add countryblock 1.1.2.0/23
# ipset add countryblock 1.10.8.0/23
# ipset add countryblock 1.202.0.0/15
# ipset add countryblock 5.10.68.240/29
# ipset add countryblock 5.10.70.40/30
# ipset add countryblock 5.10.72.16/29

IP拨号应用

现在我们的IP集已准备就绪,我们将使用IPTables中的ipset模块将这些IP集应用为阻止状态。

# iptables -A INPUT -m set --match-set countryblock src -j DROP

上面的命令阻止来自IP子网在上面生成的称为countryblock的集合中定义的范围的流量。 因此,其中列出的所有IP地址都将被阻止。

这样,我们可以使用IPTables中的ipset模块阻止某些块。 我们可以创建不同国家/地区的IP集,以便我们可以根据需要应用它们。 当我们需要阻止来自特定国家或地区的某些流量时,这种方法非常有效,而且还可以根据需要允许IP范围。 它们有大量的防火墙模块和iptables,但是这一模块非常简单,快速且易于使用。 因此,如果您有任何问题,建议或反馈,请在下面的评论框中写下。

Sidebar