在Ubuntu中,iptables是一个用于配置Linux内核防火墙(netfilter)规则的工具。它允许系统管理员定义规则来过滤流量和NAT。iptables规则被组织成不同的表(tables),每个表包含几个预定义的链(chains)。这些链对应于网络数据包处理的不同点。
以下是一些基本的iptables链:
INPUT: 处理进入本机的数据包。FORWARD: 处理通过本机转发的数据包。OUTPUT: 处理从本机发出的数据包。PREROUTING: 在路由决策之前处理进入的数据包(用于DNAT)。POSTROUTING: 在路由决策之后处理出去的数据包(用于SNAT)。要管理这些链,你可以使用iptables命令。以下是一些常用的命令示例:
查看所有规则:
sudo iptables -L
查看特定链的规则:
sudo iptables -L INPUT
添加新规则:
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
插入规则到链的顶部:
sudo iptables -I INPUT 1 -s 192.168.1.100 -j ACCEPT
删除规则:
sudo iptables -D INPUT 1
sudo iptables -D INPUT -s 192.168.1.100 -j ACCEPT
清空所有链:
sudo iptables -F
设置默认策略:
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
请注意,修改iptables规则可能会影响系统的网络连接和安全性。在进行更改之前,请确保你了解每个命令的作用,并且已经做好了相应的备份。如果你不熟悉iptables,建议先在测试环境中练习。
此外,Ubuntu 18.04及更高版本默认使用nftables作为新的防火墙管理工具,它是iptables的继任者。如果你使用的是较新的Ubuntu版本,可能需要使用nftables来管理防火墙规则。