iptables常用参数
- -A:将规则添加到当前链的末尾。
- -D:从当前链中删除规则。
- -I:将规则插入到当前链中指定的位置。
- -R:替换当前链中的规则。
- -L:列出当前链中的规则。
- -F:清空当前链中的所有规则。
- -N:创建一个新的链。
- -X:删除一个链。
- -P:设置链的默认策略。
- -s:源地址。
- -d:目标地址。
- -p:协议。
- -m:模块。
- -j:跳转目标。
iptables常用模块
- ip:IP数据包匹配模块。
- tcp:TCP数据包匹配模块。
- udp:UDP数据包匹配模块。
- icmp:ICMP数据包匹配模块。
- state:连接状态匹配模块。
- conntrack:连接跟踪模块。
- quota2:流量控制模块。
iptables常用跳转目标
- ACCEPT:接受数据包。
- DROP:丢弃数据包。
- REJECT:拒绝数据包。
- QUEUE:将数据包排队。
- RETURN:返回到上一个链。
- GOTO:跳转到另一个链。
iptables示例
以下是一个iptables示例,该示例将阻止所有来自192.168.1.0/24网络的数据包:
iptables -A INPUT -s 192.168.1.0/24 -j DROP
以下是一个iptables示例,该示例将允许所有来自192.168.1.0/24网络的TCP数据包:
iptables -A INPUT -s 192.168.1.0/24 -p tcp -j ACCEPT
以下是一个iptables示例,该示例将重定向所有来自192.168.1.0/24网络的UDP数据包到端口8080:
iptables -A INPUT -s 192.168.1.0/24 -p udp -j REDIRECT --to-port 8080
iptables注意事项
- iptables规则的顺序很重要。规则的顺序决定了iptables如何处理数据包。
- iptables规则可以被禁用或启用。
- iptables规则可以被临时或永久地添加到防火墙中。
- iptables规则可以被IPv4或IPv6数据包匹配。
- iptables规则可以被内核模块加载或卸载。
示例
- 允许特定端口的入站连接
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
这将允许所有传入的 TCP 连接到端口 80 (HTTP 请求的常见端口)。
- 阻止特定端口的出站连接
iptables -I OUTPUT -p tcp --dport 25 -j DROP
这将阻止所有到端口 25 (SMTP 邮件服务器的常见端口) 的出站 TCP 连接。
- 将流量重定向到另一个端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
这将将所有传入的 TCP 连接到端口 8080 重定向到端口 80。
- 创建防火墙规则链
iptables -N my_chain
iptables -A INPUT -p tcp --dport 80 -j my_chain
这将创建一个名为“my_chain”的新防火墙规则链,并将所有传入的 TCP 连接到端口 80 重定向到该链。
- 将防火墙规则链添加到现有表
iptables -t nat -A POSTROUTING -j my_chain
这将将“my_chain”链添加到“POSTROUTING”表。
- 从防火墙规则链中删除规则
iptables -D my_chain -p tcp --dport 80 -j DROP
这将从“my_chain”链中删除阻止到端口 80 的所有 TCP 连接的规则。
- 清除整个防火墙规则链
iptables -F my_chain
这将从“my_chain”链中删除所有规则。
- 删除防火墙规则链
iptables -X my_chain
这将删除名为“my_chain”的防火墙规则链。
- 保存防火墙规则
iptables-save > /etc/iptables.rules
这将把当前的防火墙规则保存到文件 /etc/iptables.rules 中。
- 恢复防火墙规则
iptables-restore < /etc/iptables.rules
这将从文件 /etc/iptables.rules 中恢复防火墙规则。