一、查看现有的规则
iptables -L -v -n #同理iptables -t nat /mangle/raw/filter -L -v -n
二、基本语法
iptables [选项] <链> <操作> [匹配条件] [目标动作]
常用选项
-A:表示追加规则到指定链(Append)。-I:表示插入规则到指定链(Insert)。-D:表示删除指定链中的规则(Delete)。-L:表示列出指定链的规则(List)。-F:表示清空指定链的规则(Flush)。-t:指定表(Table),默认是filter表。常见的表包括filter、nat、mangle、raw等。
常见链
INPUT:处理进入本地的流量。OUTPUT:处理从本地发出的流量。FORWARD:处理经过本地的流量(如路由转发的流量)。PREROUTING:在路由决策前处理到达的数据包(用于NAT)。POSTROUTING:在路由决策后处理离开的数据包(用于NAT)。
匹配条件
-i <接口>:匹配输入接口(如-i eth0)。-o <接口>:匹配输出接口(如-o eth0)。-s <地址>:匹配源地址(如-s 192.168.1.0/24)。-d <地址>:匹配目标地址(如-d 192.168.2.0/24)。-p <协议>:匹配协议(如-p tcp、-p udp、-p icmp)。
目标动作(-j 选项指定)
ACCEPT:允许数据包通过。DROP:丢弃数据包,不发送任何响应。REJECT:拒绝数据包,并发送响应信息。LOG:记录数据包信息到日志。DNAT:目标地址转换,用于PREROUTING链(如-j DNAT --to-destination 192.168.2.2)。SNAT:源地址转换,用于POSTROUTING链(如-j SNAT --to-source 192.168.1.1)。MASQUERADE:特殊的SNAT,用于动态IP地址(如-j MASQUERADE)。
三、示例
允许特定接口之间的流量转发、
iptables -A FORWARD -i lan0 -o wrtnet -j ACCEPT
禁用NAT(删除现有NAT规则)
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
添加NAT规则以将流量重定向到特定地址
iptables -t nat -A PREROUTING -d 192.168.2.2 -i eth0 -j DNAT --to-destination 192.168.2.2
四、更多…
#允许lan-wan,允许内网已建立的连接
iptables -A FORWARD -i lan0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o lan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#快捷保存规则
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
#删除对应自定义链表规则
iptables -D DOCKER-USER -i eth0 -o docker0 -j REJECT