iptables由五个表table和五个链chain以及一些规则组成
链 chain:
内置链:每个内置链对应于一个钩子函数
自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调 用自定义链时,才生效
五个内置链chain:
INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
五个表table:filter、nat、mangle、raw、security
filter表:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
nat表:network address translation 地址转换规则表
mangle:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
优先级由高到低的顺序为:
security -->raw-->mangle-->nat-->filter
iptables -A INPUT -s 192.168.48.121 -j REJECT
iptables -A INPUT -s 192.168.48.108 -j DROP
列出具体规则;
iptables -vnL –list-number
为防止添加拒绝策略将本机拒绝,需要先添加本机允许通行
规则具有优先级,一旦符合第一条,后续规则将不在读取
删除具体规则:iptables -D INPUT 1
如果设置的chain没有,默认为accept
iptables -A INPUT -j REJECT
记录访问信息
cat /proc/net/nf_conntrack
新建好的自定义链,需要与已有链关联 ,通过-j WEB_CHAIN参数来关联
如下图,在10.0.0.6满足条件,则不会执行自定义链中的第三条;返回内置链中调用WEB_CHAIN中,接着执行接下来的链,也就是图片中内置链中的第4条。
内核没有端口监听,应用程序才有监听,所以iptables没有监听端口
公司用的vpn内部逻辑就是运用防火墙这里对的关键技术;