linux网络——iptables与网关

概述

最近做关WiFi家庭网关项目,接触到很多新的知识,本文对linux的iptables、网关中的NAT转换、DMZ、端口映射和端口触发等概念进行总结

linux iptables

linux iptables是linux2.6内核以后使用的一套网络工具,对其进行合理的配置,可实现防火墙、NAT转换等网关功能

好,那么iptables怎么配置,这些配置是如何实现的呢

iptables配置方法

应用层的iptables是一个可执行程序,iptabltes- h可看到命令帮助,这里首先要说明一下iptables中的3个层次递进的概念:表(table)、链(chain)和规则(target),iptables应用程序命令就是对某个表的某个链的某个规则操作

iptables默认有4张表,nat、filter、mangle和raw,项目中使用了nat和filter,所以这里只说nat和filter

每个表都有几条默认的链,nat默认有PREROUTING、INPUT、OUTPUT、POSTROUTING4个链,filter默认有INPUT、FORWARD、OUTPUT3个链,表不可增减,但是表中的链可自定义增加或删除

命令格式 : iptables -t [table] -[opt] [chain] -j ...
命令的格式变化太多,且无需记住所有命令,关键是实际中如何使用,常用哪些,后续再说

iptables内核实现

这里不会分析源码,只注重大局和框架,上图最方便

这里写图片描述

上图表示的是网络数据从网卡驱动接收程序中跳转到协议层后,都经历了哪些东东,这些过程属于linux的net子系统,与设备无关

所有报文都经过这个图,从PREROUTING这里,报文的mac已经被剥离,即从以后是三层处理,主要关注报文的ip地址,先抛开这些点是干嘛的,理一理数据报的流向

PREROUTING点表示还未进行路由之前,经过路由后,报文的流向无非是两个结果,要么该报文是发往本机的,即上面一条路,要么是发往其他设备的,走下面一条路

如果是发往本机,则经过IUPUT点,到达Localhost,即发往上层协议处理,处理之后,还会经过一个路由,判断发往哪里

如果是发往其他设备,则经过FORWARD点进行转发

最后所有数据报都会经过POSTROUTING点,出设备

这些点和iptables中的表和链是什么关系?此即彼

iptables在内核中的实现是通过netfilter完成的,本质上是在这些预先设置好的点上添加各种内核钩子函数,当程序执行到这些点上时,按照iptables应用程序配置的规则进行处理,是接收、丢弃、转发,还是NAT转换…,iptables和内核通信通过netlink完成,当然出于某些特殊需求,你也可以自己添加钩子函数,怎么添加,看/linux-2.6-xxx/net/netfilter/下的几个源码自然会了

NAT转换

NAT转换是干嘛?转换ip地址,为什么要转换?一是地址不够了,二是保护内网

地址不够的问题就要涉及到网络地址划分了,不展开说,地址分为A、B、C、D、E五类,所有地址中选取一些地址作为私有地址,只用于内网,它们是

10.0.0.0 ~ 10.255.255.255

172.16.0.0 ~ 172.31.255.255

192.168.0.0 ~ 192.168.255.255

怎么保护,外网不可访问内网,内网可以访问外网

iptables的表nat专门用于设置和处理NAT转换的规则,内网访问外网资源时,将源ip地址转换为一个外网地址,该过程叫SNAT,iptables设置后,也可以让外网访问内网部分资源,将目的ip地址转换为一个内网地址,该过程叫DNAT,说白了,核心在于对网络结构的理解,对iptables进行配置,以控制数据流的走向

DMZ

DMZ是干嘛的,官话是位于外网和防火墙之间的一个区域,可放置一些私人服务器资源,供外网访问,上图来理解

这里写图片描述

上图中,共有三个区域,外网、DMZ和内网,一般用户家中如果不放置私人服务器等东东,没有DMZ

外网在网关左侧,DMZ和内网在网关右侧,表明DMZ和内网都是私有地址,内网包括用户会使用的PC、手机等设备,这些设备必须与外网严格隔离,不可被外网入侵,DMZ区域放置一些可以被外网访问的服务器

一般的规则是:外网可访问DMZ,不可访问内网,DMZ不可访问外网和内网,内网可访问外网和DMZ

但是规则都是人定的,关键在于iptables的配置,怎么玩都行其实


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wei.Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值