iptables 使用教程
安装
首先更新 apt 软件包索引,然后安装 iptables 和 iptables-persistent:
sudo apt update
sudo apt-get install iptables
sudo apt install iptables-persistent
在安装过程中会提示是否保存当前的 iptables 规则,选择 "是" 来保存当前规则。
保存规则到文件:
sudo iptables-save > /etc/iptables/rules.v4
清空规则:
sudo iptables -F
添加规则
要让特定的网段访问服务器,可以通过添加规则来实现。假设你想允许网段 192.168.1.0/24 访问服务器,可以执行以下命令:
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
如果需要限制端口范围,可以在规则中添加 -p 参数指定协议和 -m multiport --sports 参数指定端口范围,例如:
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp -m multiport --sports 80,443 -j ACCEPT
添加单个 IP 地址的规则:
sudo iptables -A INPUT -s 192.168.0.100 -j ACCEPT
删除规则
要删除已添加的规则,可以使用 -D 参数,例如:
sudo iptables -D INPUT -s 192.168.0.100 -j ACCEPT
开放端口
针对特定 IP 地址开放端口 3306,可以使用如下命令:
sudo iptables -I INPUT -s 192.168.1.109 -p tcp --dport 3306 -j ACCEPT
保存设置
最后,保存设置以确保规则在系统重启后生效:
sudo iptables-save > /etc/iptables/rules.v4
注意事项
- iptables 按照规则顺序执行匹配。
- 封禁 IP 地址的命令为 sudo iptables -I INPUT -s <IP 地址> -j DROP。
- 解封 IP 地址的命令为 sudo iptables -D INPUT -s <IP 地址> -j DROP。
常用选项及功能
选项 | 功能 |
---|---|
-A | 追加防火墙规则,默认最后一行 |
-D | 删除防火墙规则 |
-I | 插入防火墙规则,默认第一行 |
-F | 清空防火墙规则 |
-L | 列出添加的防火墙规则 |
-R | 替换防火墙规则 |
查询规则
查看规则列表
sudo iptables -t filter -L
sudo iptables -t raw -L
sudo iptables -t mangle -L
sudo iptables -t nat -L
显示特定表中的链规则
sudo iptables -t filter -L INPUT
显示特定表中的链的具体规则
sudo iptables -t filter -vL INPUT
显示解析后的 IP 地址
sudo iptables -t filter -nvL INPUT
显示带编号的规则
sudo iptables --line -t filter -nvL INPUT
通过以上步骤,你可以设置 iptables 规则来控制特定网段和 IP 地址访问服务器。请根据实际需求调整网段、端口等参数。
查看当前配置:
sudo iptables -t filter -nvL INPUT
参考实例
局域网可以访问
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
外网网段可以访问
sudo iptables -A INPUT -s 10.147.17.0/24 -j ACCEPT
localhost可以访问
sudo iptables -A INPUT -s 127.0.0.1/8 -j ACCEPT
其他都拒绝
sudo iptables -A INPUT -p tcp -j DROP
现在要加新的网段用 -I参数(因为顺序执行的原因,-I会添加到第一行,-A添加到最后一行)
sudo iptables -I INPUT -s 101.20.150.0/24 -j ACCEPT
删除上面添加的配置
sudo iptables -D INPUT -s 101.20.150.0/24 -j ACCEPT
取消拒绝访问配置
sudo iptables -D INPUT -p tcp -j DROP
保存配置,可能需要创建/etc/iptables文件夹
su root
iptables-save > /etc/iptables/rules.v4
清空配置
sudo iptables -F