iptables自定义链用法

自定义链用法

实验架构

此实验实际上防火墙两边都需要是公网IP,并且在此实验中,防火墙充当一个路由器,只是添加了一些访问控制规则;外网用户访问内网的nginx服务;

1、vim /etc/sysctl.conf
net.ipv4.ip_forward = 1   #防火墙开启路由器转发功能

2、sysctl -p

防火墙添加iptables规则

防火墙在此实验中只是起到了转发作用,所以报文都不是发送到防火墙本机的,规则需要在filter表的FORWARD链上添加

1、iptables -A FORWARD -j REJECT  
#首先添加拒绝转发所有的报文,防止外网访问内网
2、iptables -I FORWARD 1 -m state --state ESTABLISHED,RELATED -j ACCEPT #在forward链上插入规则,允许防火墙转发已经建立连接或与已有连接相关的连接的报文 3、iptables -I FORWARD 2 -d 192.168.39.100 -p tcp --dport 80 -j ACCEPT #允许防火墙转发访问192.168.39.100服务器TCP80端口的请求;这样在外网访问内网80端口时,第一次建立连接后,客户端已经与服务端80端口建立一次连接,响应报文就可以匹配第一条规则,允许转发已经建立连接的报文

将现有防火墙规则添加至自定义链中

把自定义规则添加到自定义链中,然后再把自定义链,链接到系统自带的5个链中;
关联自定义链类似于脚本中的函数引用,先定义好函数,然后再引用函数;
自定义链好处是把之前的多条规则整合成一条规则(实际规则数量并没有变,只是显示的更清晰一些),并且修改规则只需要修改自定义链即可;

1、iptables -E TO_LAN   
#创建一个名为TO_LAN的自定义链
2、iptables -A TO_LAN -d 192.168.39.100 -p tcp --dport 80 -j ACCEPT #将此规则先从FORWARD链中删除,然后再把该规则添加到TO_LAN自定义链中 3、iptables -I FORWARD 2 -j TO_LAN #自定义链要想引用,需要把自定义链添关联到指定链中;即把自定义链插入成FORWARD链的第2条规则,这样就可以引用自定义链

修改自定义链名称

iptables -E old_name new_name

删除自定义链

1、iptables -D FORWARD 2  #删除自定义链时,先从引用自定义链的相关链中删除所引用的自定义链

2、iptables -F TO_LAN     #然后清空自定义链中的所有规则

3、iptables -X TO_LAN     #删除自定义空链;如果自定义链被引用或者自定义链中有规则,则无法删除自定义链

猜你喜欢

转载自www.cnblogs.com/dongzhanyi123/p/12967345.html
今日推荐