标签:封装 input inpu ica png 内核空间 ons 高级 top
一、回顾
1、iptables/netfilter
a、netfilter:raw,mangle,nat,filter
PREROUTING --> INPUT
PREROUTING --> FORWARD --> POSTROUTING
OUTPUT --> POSTROUTING
b、filter:INPUT,FORWARD,OUTPUT
c、nat:PREROUTING,INPUT,OUTPUT,POSTROUTING
2、iptables:
a、[-t table] COMMAND [chain] rule-specification
-m matchname [per-match-options]
-t targetname [per-target-options]
[options]
b、匹配条件
(1)、基本匹配条件:-s,-d,-p,-m,-i,-o
(2)、扩展匹配条件:
1)、隐式扩展:
-p tcp:--dport,--sport,--tcp-flags,--syn
-p udp:--dport,--sport
-p icmp:--icmp-type
2)、显示扩展
multiport:--sports,--dports
iprange:--src-range,--dst-range
time:--timestart,--timestop,--weekdays,--monthdays,--datestart,--datestop
string:--algo {bm|kmp},--string
connlimit:--connlimit-upto,--connlimit-above
limit:--limit,--limit-burst
state:--state
NEW,ESTABLISHED,RELATED,INVALID,UNTRACKED
c、target
(1)、-j:
ACCEPT/DROP
REJECT:--reject-with
LOG:--log-level,--log-prefix
自定义链:
RETURN
d、iptables-save/iptables-restore
二、iptables(3)
1、接下来我们来讲网络防火墙功能,我们Linux何种情况下可以作为网络防火墙来工作呢?想象一个场景,我们说过对于任何一个局域网来说我们都需要网关设备,假如我们一个局域网中有很多客户端主机,假如我们这儿有一个网关设备,我们任何非本地网络通信的报文都要经由他来负责转发的。这个设备可能是一个硬件的路由器。我们路由器在报文路由时源mac和目标mac都会进行修改,而我们的源IP和目标IP是不会改变的。
2、我们linux做网关设备一般是这样的。首先我们需要开启默认转发功能。然后我们需要有两张网卡,一张网卡作为内部网关,另一张网卡接入外部网络。
3、假如我们现在有一个主机有三个网卡。一块连接内网。一块连接A网络。一块连接B网络。假如我们内网一客户端 172.16.0.67发一报文,只要到网关就表示非本地通信了,我们前提是打开我们主机的核心转发功能,打开核心转发后报文就在本地内核中转了一圈,因为他不与本地进程通信因此他不会到达我们的用户空间,他只是在内核空间中走了一遭。然后他会根据我们的路由条目转发至某一个相应网段的接口或IP。
4、对linux主机来讲有内核空间有用户空间,用户空间当中有进程。一个报文来了先进入PREROUTING链,然后判断目标地址是不是自己,如果是就拆开IP封装然后就看到目标端口了,看看谁监听了这个端口,然后就把报文交给这个进程,这样就到达了INPUT链了,但如果目标IP不是自己的话那么就会到达FORWARD链,这个链完了以后就看要从本机的哪个网卡出去,确定好网卡后就扔到这个网卡的队列中去了,在扔到网卡队列之前会经过最后一个链POSTROUTING,因此这就是转发的报文。并且我们网关来讲他的转发既要承左启右又要承右启左,即我们报文不仅要进来还要回来
a、假如我们本机有两块网卡,中间有个FORWARD,假如报文是从左往右来的,很显然此时PREROUTING,FORWARD,POSTROUTING是自左向右的。不过如果响应报文再回来的话就不一样了,PREROUTING,FORWARD,POSTROUTING就是自右向左了,因此我们的链与网卡没有关系,他和报文流经的阶段有关系。
b、我们说过,我们的filter功能不能在PREROUTING上做,他只有三个链,INPUT,OUT,FORWARD。不过我们发现无论请求的还是响应的都在FORWARD链上。但是他的方向是不一样的。我们的请求的目标IP源IP在响应的时候又是反过来的。如果我们要构建规则设定访问需求的话就需要根据报文走向来完成设置。
三、相应演示
1、规划,现在我们有一台主机有两块网卡,我们把172.16.0这个网络当外网,我们再设置一个网络192.168.10.0网络作为内网。
a、内网
主机地址:192.168.10.2
网关:192.168.10.254
b、
Linux学习99 Linux防火墙iptables高级实战演练
标签:封装 input inpu ica png 内核空间 ons 高级 top
原文地址:https://www.cnblogs.com/Presley-lpc/p/13053765.html