Docker前传之linux iptables

如果要深入了解docker的网络配置,那就得先了解iptables。本文接下来会从0到1的说说iptables。

什么是iptables

iptables是linux自带的一款开源的内核级基于数据包过滤的防火墙。利用iptables可以实现诸如数据包过滤、转发等功能。

基本概念

iptables包含表,表中包含链,链中包含规则。(规则指的是一条条用于过滤数据包的语句)
iptables共有四个表五个链,简称四表五链。
四表指的是filter, nat, mangle, raw。其中前2个是用的最多的,后面2个用的较少,raw可以说基本不怎么使用。
五链指的是INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING。(注意,链名用大写。)

下表列出了三个常用表中包含的链:


表和链的关系.png

下面介绍常用的filter表和nat表。

filter表

过滤数据包,用于本机防火墙,这是默认表。
包含的三个链,
INPUT 链:用于过滤所有目标地址是本机的数据包
OUTPUT 链:用于过滤所有本机产生的数据包
FORWARD链:用于过滤所有路过本机的数据包

nat表

网络地址转换(Network Address Translation)。
包含的三个动作,
DNAT:改变数据包的目的地址使包能重路由到某台机器,使公网能够访问局域网内的服务器
SNAT: 改变数据包的源地址,使局域网能访问公网
MASQUERADE:假如当前系统用的是ADSL动态拨号方式,那么每次拨号,出口IP都会改变,SNAT就无法使用。而MASQUERADE作用就是将IP伪装成为封包出去的那块装置上的IP,MASQUERADE会自动读取ip地址然后做SNAT出去。
包含的三个链,
PREROUTING链:数据包到达防火墙时改变包的目的地址。
OUTPUT链:改变本地产生数据包的目标地址。
POSTROUTING:在数据包离开防火墙时改变数据包的源地址。

原理浅析

如下图,当请求主机的某个服务时,需要经过iptables中的匹配规则,由上到下层层过滤。


工作原理.png

下图描述了一个数据包在linux内核的处理流程。


数据包处理.png

对于收到的每个数据包,都从A点进来,经过路由判决(分析数据包的目的地址),如果是发送给本机的就经过B点,然后传递给进程处理;否则就经过C点,然后顺着E点将该包转发出去。
对于发送的每个数据包,也有一个路由判决,以确定该包是从哪个接口出去,然后经过D点,最后也是顺着E点将该包发送出去。
图中ABCDE五个点就是上面提到的五个链,如下图:


五链.png

再详细点,在上图中添加表,那就变为下图:
表和链.png

从该图可以总结出:

  1. 四表其实是对链进一步划分出了4类,且每类在执行上有着不同的优先级。对于一个数据包,四个表中的规则处理的优先级:raw>mangle>nat>filter。
  2. 真正让防火墙起作用的是规则,而五表其实是5个hook点,规则在这5个点执行。

为了精简,将该图中不太常用的mangle表去掉,剩下的表和链也是最常用的,如下图:


表和链.png

上图中,上面的弧线所在的路径,常用来配置主机防火墙,而下面的从左到右的直线,是用来做nat的,docker默认的网络配置即通过该路径。

总结一下iptables的用途:
利用filter表作为主机防火墙;
利用nat表的POSTROUTING链,使局域网内的机器上网;
利用nat表的PREROUTING链,将外部socket映射为内部socket;

下一节中将描述docker默认的nat网络配置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容