iptables封多个IP

本文介绍了两种批量封锁特定IP范围的方法。方法一使用for循环配合iptables命令逐个封锁从192.168.0.30到192.168.0.60的所有IP地址;方法二是通过安装并配置iptables的iprange模块,实现一次性封锁整个IP段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法1:
# for ((i=30;i<=60;i++));do iptables -A INPUT -s 192.168.0.$i -j DROP;done

方法2:
先给 netfilter 打个补丁,名字叫 iprange 的模块,具体参考我的一篇文章,然后
# iptables -A INPUT -m iprange --src-range 192.168.0.30-192.168.0.60 -j DROP

#http://linux.chinaunix.net/bbs/viewthread.php?tid=591721

<think>好的,我现在需要帮助用户解决如何使用iptables配置规则,允许特定IP访问的问题。首先,我需要回顾一下用户提供的引用内容,看看有没有相关的例子或者命令可以参考。 用户给出的引用有三个:引用1是关于允许UDP端口53的流量,引用2是关于限制443端口只允许特定IP,引用3是关于允许指定IP访问SSH端口22。这些例子都使用了类似的iptables命令结构,即使用-A INPUT来添加规则,-s指定源IP,-p指定协议,--dport指定目标端口,-j ACCEPT或DROP来处理动作。 用户的问题是放行特定IP,所以核心步骤应该是添加允许特定IP的规则,然后拒绝其他IP的访问。根据引用中的例子,比如引用3中的命令:iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT,这允许指定IP访问22端口。然后可能需要在后面添加一条拒绝所有其他IP访问该端口的规则,如引用2中的例子:iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 443 -j DROP。不过需要注意的是,iptables规则是按顺序执行的,所以必须先允许特定IP,再拒绝其他,否则可能会出错。 另外,用户可能需要同时处理多个端口的情况,或者多个IP的情况。比如允许多个IP访问某个端口,可以用多个-A INPUT命令,每个对应一个IP。或者使用IP范围/CIDR表示法,如引用3中的例子允许单个IP,而引用2中的例子使用了0.0.0.0/0表示所有IP。 还需要注意防火墙规则的持久化,因为默认情况下iptables规则重启后会失效。可能需要安装iptables-persistent或使用iptables-save等命令保存规则。 现在需要将这些步骤整理成一个清晰的回答,先给出基本命令结构,再举例说明,然后提到多个IP和端口的情况,最后提醒规则顺序和持久化的问题。 需要确保回答中的命令正确,比如INPUT链的正确使用,-A是追加到链的末尾,但如果之前有拒绝规则,可能需要调整顺序,或者使用-I来插入到前面。不过根据用户提供的引用,他们使用的是-A,所以可能需要用户注意规则的顺序,或者在允许规则之后添加拒绝规则。 总结步骤应该是: 1. 允许特定IP访问指定端口(如22端口) 2. 拒绝其他所有IP访问该端口 3. 如果有多个IP或端口,重复步骤1 4. 保存规则 在回答中需要强调规则的顺序,先允许再拒绝,否则拒绝规则会先生效,导致允许规则被跳过。例如,在引用2的例子中,先添加允许特定IP,然后添加拒绝所有IP到443端口的规则。 另外,用户可能需要知道如何查看现有规则(iptables -L -n),以及如何删除规则(使用-D选项)。 最后,生成相关问题,比如如何限制多个IP,如何持久化规则,或者如何同时允许多个端口等。</think>### 如何配置iptables允许特定IP访问? #### **步骤1:允许特定IP访问指定端口** 使用以下命令格式添加规则,允许指定IP访问服务器的特定端口: ```bash iptables -A INPUT -s <允许的IP地址> -p <协议类型> --dport <目标端口> -j ACCEPT ``` - **参数说明**: - `-A INPUT`:将规则追加到INPUT链末尾。 - `-s <IP>`:源IP地址,支持单个IP(如`192.168.1.100`)或CIDR格式(如`192.168.1.0/24`)。 - `-p <协议>`:协议类型,如`tcp`或`udp`。 - `--dport <端口>`:目标端口号(如`22`、`80`)。 - `-j ACCEPT`:允许匹配的流量通过。 **示例**:允许IP `192.168.1.100` 访问SSH端口(22): ```bash iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT [^3] ``` --- #### **步骤2:拒绝其他IP访问该端口** 在允许特定IP后,需添加拒绝规则以阻止其他IP访问: ```bash iptables -A INPUT -p <协议类型> --dport <目标端口> -j DROP ``` **示例**:拒绝所有IP访问SSH端口(22): ```bash iptables -A INPUT -p tcp --dport 22 -j DROP [^2] ``` --- #### **步骤3:处理多个IP或端口** - **允许多个IP**:重复执行步骤1,为每个IP添加规则。 ```bash iptables -A INPUT -s 192.168.1.101 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s 192.168.1.102 -p tcp --dport 22 -j ACCEPT ``` - **允许多个端口**:使用`--dport`指定端口范围(如`1000:2000`)或逗号分隔列表(如`80,443`): ```bash iptables -A INPUT -s 192.168.1.100 -p tcp --dport 80,443 -j ACCEPT ``` --- #### **步骤4:保存规则(重要)** 临时规则重启后会失效,需持久化保存: - **Debian/Ubuntu**: ```bash apt install iptables-persistent -y && iptables-save > /etc/iptables/rules.v4 ``` - **CentOS/RHEL**: ```bash service iptables save ``` --- #### **注意事项** 1. **规则顺序**:iptables按顺序匹配规则,需先允许再拒绝,否则允许规则可能失效[^2]。 2. **查看规则**:使用`iptables -L -n --line-numbers`查看当前规则及编号。 3. **删除规则**:通过编号删除错误规则(如删除INPUT链的第3条): ```bash iptables -D INPUT 3 ``` --- ### 示例场景 **需求**:仅允许IP `10.0.0.5` 和 `10.0.0.6` 访问MySQL端口(3306): ```bash # 允许IP 10.0.0.5 iptables -A INPUT -s 10.0.0.5 -p tcp --dport 3306 -j ACCEPT # 允许IP 10.0.0.6 iptables -A INPUT -s 10.0.0.6 -p tcp --dport 3306 -j ACCEPT # 拒绝其他IP iptables -A INPUT -p tcp --dport 3306 -j DROP # 保存规则 iptables-save > /etc/iptables/rules.v4 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值