一、查看现有的规则
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