iptabl

PREROUTING:路由选择前,修改IP数据包的目的IP地址,DNAT-目标地址转换
POSTROUTING:路由选择后,修改IP数据包的源IP地址,SNAT-源IP地址转换
INPUT FORWARD OUTPUT:这3个链不修改IP数据包
ipatbles 5张表的功能
filter表:包过滤,使用3条链:INPUT,FORWARD,OUTPUT
nat表:地址转换,主要实现源地址或目的地址的转换,使用3条链:PREROUTING,OUTPUT,POSTROUTING
mangle表:修改数据包的相关内容,如TTL,TOS字段等,其主要作用是给数据包打标记,以便于做如策略路由的操作
raw表:连接跟踪处理,可以选择不追踪某些数据包,默认系统的所有数据包会被跟踪
security表:强制访问MAC
iptables [-t table] CMD [option] [chain] <rules> -j <target>
- table(表):指定使用的表名,如果不指定,则filter为默认表
- CMD(操作命令):添加、删除、更新链规则等各种指令
- chain(链):指定链名称,如INPUT、OUTPUT等
- rules(匹配条件):ip、端口、tcp/udp协议、接口-(物理接口、逻辑接口)等
- target(目标):即动作,ALLOW、DROP等
CMD命令选项:增删改查
操作选项:
-A:规则链末尾添加规则,常用的添加规则的方式
-I:指定的规则号位置插入一条规则
-R:替换掉指定的规则号规则
-D:删除指定的规则号规则
rules规则定制的五元组:
-s:源IP
-d: 目的IP
-p: 协议类型
--sport: 源端口
--dport: 目的端口
--match -m: 拓展用法
	conntrack: 
		NEW,RELATED,ESTABLISHED
	multiport:
		--sports源端口范围
		--dports目的端口范围(80.808,8099,443)
		--ports不区分源目端口,匹配即执行动作
	iprange:
		--src-range from [-to] && [!] --src-range from [-to]
		--dst-range from [-to] && [!] --dst-range from [-to]

[root@localhost ~]# systemctl status firewalld.service
[root@localhost ~]# systemctl mask firewalld.service  //掩盖firewalld服务,unmask取消掩盖
[root@localhost ~]# yum -y install iptables-services
[root@localhost ~]# iptables -L  查看规则信息
清除防火墙规则
[root@localhost ~]# iptables -t [table] -FXZ  //-F清除指定链及表中的所有规则,若没有指定链,则清除所有链的所有规则,-X删除用户自定义链,-Z包,字节计算器全部清零
[root@localhost ~]# iptables -nvL --line-numbers  
	-L:列出链中的规则
	-v:显示详细信息,包括每条规则的匹配包数量和匹配字节数 
	-n:只显示 IP 地址和端口号码,不显示域名和服务名称
	--line-numbers:显示策略所在的行号
[root@localhost ~]# iptables -t nat -nvL
[root@localhost ~]# iptables -D INPUT 2  删除INPUT链中的第二条规则
```

示例1:


iptables -A INPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT


示例2:


iptables -A INPUT -p tcp -m multiport --dport 22,80,8080 -j ACCEPT


示例3:


iptables -A OUTPUT -p tcp -m multiport --sport 22,80,8080 -j ACCEPT


示例4:


iptables -I INPUT -d 172.16.0.7 -p tcp -m multiport --dports 22,80,139,445,3306 -m iprange --src-range 172.16.0.61-172.16.0.70 -j REJECT


示例5:


#显示filter策略列表及行号
iptables -vnL --line-numbers
#删除策略 
iptables  -D INPUT -s 172.17.0.7 -j DROP
iptables  -D INPUT 1


示例6:


#本机禁止被ping通,但可以ping其他主机,使用ICMP协议的8号类型
iptables -A INPUT -p icmp --icmp-type 8 -j DROP


示例7:


#保存iptables配置规则到文件
iptables-save > /opt/script/iptables.rules
#从文件恢复iptables配置规则
iptables-restore </opt/script/iptables.rules
(可以写入 /etc/rc.local做开机自动导入)


示例8:


#SNAT地址伪装,先开启服务器的ipv4转发功能。这里建议开启2-3台服务器做实验,NAT服务器配置上网卡,目的服务器开启抓包功能即可。
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.1.0/24  -o ens33 -j MASQUERADE