规则链(Chain):PREROUTING
FORWARD
POSTROUTING
INPUT
OUTPUT
规则表:raw
nat
filter
mangle
语法
iptables的条件:
1.协议:tcp udp icmp
-p protocol 小写的p
-p icmp --icmp-type 8 ping请求报文
-p icmp --icmp-type 0 ping响应报文
2.端口号:
-p tcp --sport
-p tcp --dport
-p udp --sport
-p udp --dport
-p tcp --sport 20:80
iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
3.ip地址
-s source
-d destination
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
4.mac地址
5.状态
6.其他
-i in-interface
-o out-interface
iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT
ens33接口上不接收tcp三次握手的第一个包--》不允许新的连接产生了
[root@localhost ~]# iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP
[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 20,21,25,110,1250:1280 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.1.20-192.168.1.99 -j DROP
常见的数据包处理方式
ACCEPT:放行数据包
DROP:丢弃数据包
REJECT:拒绝数据包,给一个回复
LOG:记录日志信息,并传递给下一条规则处理 --》相当于抓包
用户自定义链名:传递给自定义链内的规则进行处理
SNAT:修改数据包的源地址信息
DNAT:修改数据包的目标地址信息
MASQUERADE 实现snat功能,不需要经常换公网ip地址
自定义链
[root@web-server ~]# iptables -t filter -N sanchuang 新建链
[root@web-server ~]# iptables -t filter -A sanchuang -p tcp --dport 22 -j ACCEPT 增加规则
[root@web-server ~]# iptables -A INPUT -p tcp --dport 22 -j sanchuang 通过INPUT链给sanchuang链导流,然后会根据sanchuang链里的规则进行匹配