iptables/netfilter学习


iptables是一个配置Linux内核防火墙的命令行工具,它基于内核的netfilter机制。新版本的内
核(3.13+)也提供了nftables,用于取代iptables。

netfilter

netfilter是Linux内核的包过滤框架,它提供了一系列的钩子(Hook)供其他模块控制包的流
动。这些钩子包括

  • NF_IP_PRE_ROUTING :刚刚通过数据链路层解包进入网络层的数据包通过此钩子,它在路
    由之前处理
  • NF_IP_LOCAL_IN :经过路由查找后,送往本机(目的地址在本地)的包会通过此钩子
  • NF_IP_FORWARD :不是本地产生的并且目的地不是本地的包(即转发的包)会通过此钩子
  • NF_IP_LOCAL_OUT :所有本地生成的发往其他机器的包会通过该钩子
  • NF_IP_POST_ROUTING :在包就要离开本机之前会通过该钩子,它在路由之后处理

iptables

filter表

主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG)。filter 表对应的内核模块为iptable_filter,包含三个规则链:

  • INPUT链:INPUT针对那些目的地是本地的包;
  • FORWARD链:FORWARD过滤所有不是本地产生的并且目的地不是本地(即本机只是负责转发)的包;
  • OUTPUT链:OUTPUT是用来过滤所有本地生成的包;

nat表

主要用于修改数据包的IP地址、端口号等信息(网络地址转换,如SNAT、DNAT、MASQUERADE、REDIRECT)。属于一个流的包(因为包 的大小限制导致数据可能会被分成多个数据包)只会经过这个表一次。如果第一个包被允许做NAT或Masqueraded,那么余下的包都会自动地被做相同的操作,也就是说,余下的包不会再通过这个表。表对应的内核模块为 iptable_nat,包含三个链:

  • PREROUTING链:作用是在包刚刚到达防火墙时改变它的目的地址;
  • OUTPUT链:改变本地产生的包的目的地址;
  • POSTROUTING链:在包就要离开防火墙之前改变其源地址;
    (centos7中还有INPUT,centos6中没有)

mangle表

主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。

包含五个规则链:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。

raw表

是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理。在匹配数据包时,raw表的规则要优先于其他表。
包含两条规则链——OUTPUT、PREROUTING
在这里插入图片描述

iptables示例

查看规则列表

iptables -nvL

允许22端口

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允许来自192.168.0.4的包

iptables -A INPUT -s 192.168.0.4 -j ACCEPT

允许现有连接或与现有连接关联的包

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

NAT

iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I OUTPUT -d 55.55.55.55/32 -j DNAT --to-destination 10.0.0.30
iptables -t nat -I PREROUTING -d 55.55.55.55/32 -j DNAT --to-destination 10.0.0.30
iptables -t nat -I POSTROUTING -s 10.0.0.30/32 -j SNAT --to-source 55.55.55.55\

参考资料

1、https://www.cnblogs.com/yyxianren/p/10910176.html
2、https://www.digitalocean.com/community/tutorials/a-deep-dive-into-iptables-and-netfilter-architecture

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值