69
1 IP 寻寻寻寻寻

IP 寻址与转发

Embed Size (px)

DESCRIPTION

IP 寻址与转发. 内容提要. 快速安全概览 IP 寻址(编址) IP 转发 And an anagram contest!. IP 包头的快速安全分析. 思维模式多于内容 全景思维的工作 …. 聚集于发送攻击. 忽略 ( 暂时 ) 其他人的攻击 : 交通分析( Traffic analysis ) 嗅探负载( Snooping payload ) 拒绝服务( Denial of service ) 主要聚焦于发送端可以利用弱点( Focus mostly on vulnerabilities sender can exploit ). - PowerPoint PPT Presentation

Citation preview

Page 1: IP  寻址与转发

1

IP 寻址与转发

Page 2: IP  寻址与转发

内容提要• 快速安全概览• IP 寻址(编址)• IP 转发

• And an anagram contest!

2

Page 3: IP  寻址与转发

IP 包头的快速安全分析

思维模式多于内容

全景思维的工作… ..

3

Page 4: IP  寻址与转发

聚集于发送攻击• 忽略 ( 暂时 ) 其他人的攻击 :

– 交通分析( Traffic analysis )– 嗅探负载( Snooping payload )– 拒绝服务( Denial of service )

• 主要聚焦于发送端可以利用弱点( Focus mostly on vulnerabilities sender can exploit )

4

Page 5: IP  寻址与转发

IP 包结构

4-bitVersion

4-bitHeaderLength

8-bitType of Service

(TOS)16-bit Total Length (Bytes)

16-bit Identification3-bitFlags 13-bit Fragment Offset

8-bit Time to Live (TTL) 8-bit Protocol 16-bit Header Checksum

32-bit Source IP Address

32-bit Destination IP Address

Options (if any)

Payload

Page 6: IP  寻址与转发

6

IP 地址的完整性( Integrity )• 源地址应该是发送的主机

– 但 , 谁来检查呢 ?– 你可以用任何源来发送包– 检查为何困难 ?

Page 7: IP  寻址与转发

7

IP 地址完整性的含义• 为什么有人使用伪造的源地址 ?

• 发起拒绝服务攻击– 发送过多的包到目标– … 让结点超载 , 或链路导致结点超载– 但 : 受害者通过源地址能确定 / 过滤你

• 通过“哄骗 spoofing” 来躲避( Evade )检测– 把别人的源地址放在包内

o 或 : 使用很多不同的地址,因此不能被过滤

• 或 : 给被哄骗的主机带来麻烦– 伪造的主机被错误的指责– 被哄骗的主机可能会从接收到收到返回交通

Page 8: IP  寻址与转发

8

更多安全( Security Implications )• 版本字段 (4 位 ) …. ?

– 问题 : 无经验的 IPv6 部署意味着有时可连接性超越安全强制

– 如 , 防火墙规则仅对 IPv4 设置

• 头长度 (4 位 ) …. ?– 控制存在于 IP 选项中

o 如 , 源路由让发送者控制通过网络的路径 – 即 , 绕开安全的监控– IP 选项通常在路由的慢通道中处理

o 允许攻击者,使路由随拒绝服务的压力– 防火墙通常配置成在选项中丢弃包 .

Page 9: IP  寻址与转发

9

TOS (服务类型)的安全内含 ? (8 位 )

• 攻击者对他们的包设置 TOS 优先级 ?– 如果正常的流量不设置 TOS, 那么网络更偏爱攻击包 , 极

大地增加了损害

• 如果网络根据 TOS 收费会怎样 …– … 攻击者伪造成受害者的原地址 ?

• 今天 , 网络 TOS 通常不工作– 由于收费非常困难– TOS 目前已经针对区分服务重新定义

o 后面内容讨论

Page 10: IP  寻址与转发

10

包分块的安全含义 ?

• 允许网络入侵监控 / 增强• 如 , 把攻击分布在多个块中

– 包监测无法匹配 “签名 signature”

• 可以通过监控端记住之前的块来处理– 但这加大状态的费用 , 是攻击的另外一个方面

Nasty-atOffset=0

tack-bytesOffset=8

Page 11: IP  寻址与转发

11

更多分块攻击• 如果两个重叠块不一致怎样 ?

• 网络监控如何知道接收端看到的是 USERNAME NICE 还是 USERNAME EVIL?

USERNAMEOffset=0

NICE

Offset=8

EVILOffset=8

Page 12: IP  寻址与转发

12

更多分块攻击• 如果分块超过 IP 数据报的限制会怎样 ?

– 13 位字段最大尺寸 : 0x1FFF = 8191字节偏移转换成最终的数据报 = 8191*8 = 65528数据报的最终长度 = 65528 + 9 = 65537

• 结果 : 核崩溃– 拒绝服务仅使用少数几个包– 在现代操作系统中已经解决

NineBytes

Offset=65528

Page 13: IP  寻址与转发

13

更多的分块攻击

•如果攻击者不在数据报中发送所有分块会怎样 ?

•接收端 ( 或防火墙 ) 不再保留接收到较长时间的– State-holding 攻击

Page 14: IP  寻址与转发

14

TTL 的安全含义 ? (8 位 )

• 允许发现 topology (a la traceroute)

• 可以提供包欺骗的提示– 到达路由器时带有一个与该地址通常的包具有不同的 TTL

o 因为从攻击者到达路由器有不同的跳数–虽然这在路由变化时比较脆弱

•初值对于发送者的操作系统有点不同 . 这加上其他初始设置允许 OS 有手印( fingerprinting … )– 这就允许攻击推断出可能的脆弱点

Page 15: IP  寻址与转发

15

余下的安全含义 ?

• 对 protocol 字段 (8 位 )没有显然的问题– 仅仅只是合并处理– 如果设置不正确 , 下一层将发现包是病态的形式

•坏的 IP checksum 字段 (16 位 )将使得包被网络丢弃– 不是有效的攻击…

Page 16: IP  寻址与转发

16

IP 编址

Page 17: IP  寻址与转发

IP 包结构

4-bitVersion

4-bitHeaderLength

8-bitType of Service

(TOS)16-bit Total Length (Bytes)

16-bit Identification3-bitFlags 13-bit Fragment Offset

8-bit Time to Live (TTL) 8-bit Protocol 16-bit Header Checksum

32-bit Source IP Address

32-bit Destination IP Address

Options (if any)

Payload

Page 18: IP  寻址与转发

地址的用途1. 路由器用其转发包到目标

2. 非常缺乏标识符 ( 暂时忘记此吧 )

聚焦于 : 地址怎样用于路由

18

Page 19: IP  寻址与转发

IP 地址• 今天的设计反映了必要的 hacks

•没有人能从头设计这样一个系统• 本讲最后会讨论一个更好的解决方案• 但此方案对部署有大的修改… .

19

Page 20: IP  寻址与转发

第 2 层编址•典型地使用 MAC 地址•唯一号烧到接口卡中

– 随机位串–没有位置信息

•局域网基于此“ flat” 地址寻路

为什么在 IP 中不使用此方法 ?

20

Page 21: IP  寻址与转发

第 2 层是局部的 , 但第 3 层是全局的 !

•将对所有的网络设备都有一项–必须记录下他们每个的位置– 在其移动时更新表 !

• 两个问题 :– 设备是纯数字–局部信息传播到各处

• 第 2 层 :– 更少设备–局部信息仅在局部共享

21

Page 22: IP  寻址与转发

编址目标 : 可扩展 路由•状态 : 路由状态的限制

–比主机数要少很多

•变动 : 路由表中变化率的限制– 流量 , 不一致性 , 复杂性

对两者都极重要的( 使用单个项来覆盖更多地址 )

22

Page 23: IP  寻址与转发

聚焦为何不简单 ?

• 移动性 : 移动电脑 , 手机等 .

• 多址 : 很多实体有两个或者更多的 ISP

• 由来已久的重命名困难

23

Page 24: IP  寻址与转发

另一编址问题 : 稀少 !

• 地址耗尽 :–需要共享地址– 无法满足每个人

• 一些国家每 100 人一个地址– 极端地共享 !

24

Page 25: IP  寻址与转发

25

设计的问题• 一个地址应该与什么相联系 ?

–电话网是一个含义不清的模型–固话 : 号码反映了位置 ( 很难移动 )–手机 : 号码反映了手机 ( 容易移动 )

• 地址应该有什么样的结构 ? 此结构的含义是什么 ?

• 谁确定哪个人得到全局 Internet 的某个地址 ? 亮是如何做的隐含了什么 ?

Page 26: IP  寻址与转发

26

IP 地址 (IPv4)

•与某个 interface 接口相关联的唯一的 32 位数– 在主机上 , 在路由器上 , … 连接到端口 , 链路等 .–关联可以是长期的,也可以是短期的

• 使用 dotted-quad 记号 , 如 , 12.34.158.5:

00001100 00100010 10011110 00000101

12 34 158 5

Page 27: IP  寻址与转发

例• 此地址是什么 ?

• 怎样表示 68.115.183.7?

27

01010000 00010011 11110000 00110011

01000100 01110011 10110111 00000111

80.19.240.51

Page 28: IP  寻址与转发

28

网络中的路由器

• 路由器将链路和网络连接在一起•必须转发包到目标

host host host

LAN 1

... host host host

LAN 2

...

router router routerWAN WAN

Router

Page 29: IP  寻址与转发

29

路由器发送包到正确的端口包队列的位置依赖于交换机的设计

incoming links outgoing linksNode

Memory

Page 30: IP  寻址与转发

30

转发表起到重要的作用

•表将 IP 地址映射到输出接口•基于目标地址转发包

……

31.2.3.6 11.2.3.5

1

21.2.3.5

1.2.3.4

1.2.3.4 2

Page 31: IP  寻址与转发

31

可扩展挑战•假定主机具有随机地址

– 那么路由器对每一个主机需要有一行–每个路由器中太多状态需要 hold

( 为什么如此多的状态 ?)

host host host

LAN 1

... host host host

LAN 2

...

router router routerWAN WAN

1.2.3.4 5.6.7.8 2.4.6.8 1.2.3.5 5.6.7.9 2.4.6.9

1.2.3.4

1.2.3.5

forwarding table

Page 32: IP  寻址与转发

两个 CS 中的普适技巧•当需要更多机动性时 , 增加…

– 一个非直接层

•当需要更多可扩展性时 , 加入…– 结构上增加分层

32

Page 33: IP  寻址与转发

33

U.S. 邮件系统中层次编址• U.S.邮件地址

– Zip code: 94704–街区 : Center Street–街上的建筑 : 1947–建筑位置 : Suite 600–居住者 : Scott Shenker

• 转发 U.S.邮件– 把邮件递送到邮编所在的邮局–将信件分配给管此街区的邮递员–将信放到建筑 /房间的邮箱中–将信件给合适的人

???

Page 34: IP  寻址与转发

都谁知道些什么 ?

• 有人 US邮政系统中有人知道所有房子在哪里吗 ?

• 分布路由表于层次结构的每一层–每个可管理的水平上

34

Page 35: IP  寻址与转发

35

层次结构• Internet 是一种“互联网 inter-network”

– 用于将网络连接在一起 , 而非主机

•形成了一个自然的两层结构 :– WAN 发送到正确的 LAN ( 即 , 发送到 zip code)– LAN 发送到正确的主机 ( 即 , 发送到房间 )

host host host

LAN 1

... host host host

LAN 2

...

router router routerWAN WAN

LAN = 局域网 Local Area NetworkWAN = 广域网 Wide Area Network

Page 36: IP  寻址与转发

36

层次编址• 前缀是网络地址 : 后缀是主机地址• 12.34.158.0/23 是一个 23 位前缀 带有 29 地址

– Terminology: “Slash 23”

00001100 00100010 10011110 00000101

Network (23 bits) Host (9 bits)

12 34 158 5

Page 37: IP  寻址与转发

37

IP 地址和 23 位子网掩码( Subnet Mask )

00001100 00100010 10011110 00000101

12 34 158 5

11111111 11111111 11111110 00000000

255 255 254 0

Address

Mask

Page 38: IP  寻址与转发

38

改进可扩展性• 对附近的主机,标记成相同的前缀

– 1.2.3.0/24 左边的 LAN– 5.6.7.0/24 右边的 LAN

host host host

LAN 1

... host host host

LAN 2

...

router router routerWAN WAN

1.2.3.4 1.2.3.7 1.2.3.156 5.6.7.8 5.6.7.9 5.6.7.212

1.2.3.0/24

5.6.7.0/24

转发表

Page 39: IP  寻址与转发

39

容易添加新的主机• 不用更新路由器

– 如在右边新加一个主机 5.6.7.213– 不需要增加一个新的转发项

host host host

LAN 1

... host host host

LAN 2

...

router router routerWAN WAN

1.2.3.4 1.2.3.7 1.2.3.156 5.6.7.8 5.6.7.9 5.6.7.212

1.2.3.0/24

5.6.7.0/24

forwarding table

host

5.6.7.213

Page 40: IP  寻址与转发

“Subnet” 术语• 将 LAN 看成“子网 subnets” 的一个特殊情形

–子网是一个区间,其中路由器在 “子网掩码”中不包含地址

– 可以是一个链路 , 或 LAN

•课本对子网有一个操作定义– 从主机、交换机中移走所有接口–留下的区域就是子网

40

Page 41: IP  寻址与转发

Internet 编址的历史• 一直都是 dotted-quad 记法• 一直都是网络 / 主机地址分离 (子网 )

• 但分离的方法却是随着时间而改变的

41

Page 42: IP  寻址与转发

最初的 Internet 地址• 前 8 位 : 网络地址 (/8)

• 后 24 位 : 主机地址

认为 256 个网络已经够多的了 !

42

Page 43: IP  寻址与转发

Nice Features

•传输的路由器查看哪个部分的地址 ?– 网络

• 地址空间的该部分是偏平的– 对于 256 项不需要层次

•余下地址仅与主机网络相关

• 但不提供足够的网络–未预测到泛在的 ethernet

43

Page 44: IP  寻址与转发

44

接下来的设计 : 分类地址

– A 类 : 首字节在 [0..127]间 假定 /8 ( 最高位 = 0)

o 非常大的块 ( 如 MIT拥有 18.0.0.0/8)

– B 类 : 首字节在 [128..191]间 假定 /16 ( 最高位 = 10)

o 较大的块 ( 如 UCB 拥有 128.32.0.0/16)

– C 类 : [192..223] 假定 /24 ( 最高位 = 110)

o 小块 ( 如 , ICIR拥有 192.150.187.0/24)o ( 作者房间过去用 /25)

0******* ******** ******** ********

10****** ******** ******** ********

110***** ******** ******** ********

Page 45: IP  寻址与转发

45

类地址 ( 续 )

– D 类 : [224..239] ( 最高位 1110)

o 多播组( Multicast groups )

– E 类 : [240..255] ( 最高位 11110)

o 保留未来使用

•类地址将产生什么问题 ?–只有三种尺寸– 路由器最终会被太多 C类地址所终结 (/24s)–浪费地址空间

1110**** ******** ******** ********

11110*** ******** ******** ********

Page 46: IP  寻址与转发

今天的编址 : CIDR

• CIDR = 无类域间路由 Classless Interdomain Routing

• 网络和主机地址间的划分是可变的

• 必须对地址和掩码都指定–澄清地址间的边界在哪里– 分类地址使用前几位进行通信– CIDR 需要显式掩码

46

Page 47: IP  寻址与转发

47

CIDR 编址

IP 地址 : 12.4.0.0 IP 掩码 : 255.254.0.0

00001100 00000100 00000000 00000000

11111111 11111110 00000000 00000000

地址

掩码

for hosts Network Prefix

使用两个 32 位数来表示网络 . 网络号 = IP 地址 + 掩码

记着 12.4.0.0/15 或 12.4/15

Page 48: IP  寻址与转发

48

CIDR: 层次地址分配• 前缀是 Internet 可扩展的关键

– 地址以连续块分配 ( 前缀 )– 路由协议和包转发是基于前缀的– 在接近主机的过程中递归地分裂成块

12.0.0.0/8

12.0.0.0/15

12.253.0.0/16

12.2.0.0/1612.3.0.0/16

::

12.3.0.0/2212.3.4.0/24

::

12.3.254.0/23

12.253.0.0/1912.253.32.0/1912.253.64.0/1912.253.64.108/3012.253.96.0/1812.253.128.0/17

:::

:

Page 49: IP  寻址与转发

49

扩展性 : 地址聚集

服务商( Provider )拥有 201.10.0.0/21 (201.10.0.x .. 201.10.7.x)

201.10.0.0/22 201.10.4.0/24 201.10.5.0/24 201.10.6.0/23

Provider

Internet 中余下的路由器只用知道如何到达 201.10.0.0/21. 服务商( provider )可将 IP 包导向

到合适的客户 .

Page 50: IP  寻址与转发

50

聚集不总是可能

201.10.0.0/21

201.10.0.0/22 201.10.4.0/24 201.10.5.0/24 201.10.6.0/23

Provider 1 Provider 2

拥有 201.10.6.0/23 的 Multi-homed 客户有两个服务商 . Internet 的其他部分需要知道如何通过两个服务商都

能到达目标 . /23 路由必须全局可见

Page 51: IP  寻址与转发

51

5 Minute Break

Page 52: IP  寻址与转发

逆序智力题• What anagram of a datagram involves circular

reasoning?

• What is this compound and why is it like “heroin to me” (but with an extra b)?

52

Page 53: IP  寻址与转发

Answers

• What anagram of a datagram involves circular reasoning? PI (anagram of IP)

• What is this compound and why is it like “heroin to me” (but with an extra b).

• Theobromine (psychoactive ingredient of chocolate)About 75% of my food intake

53

Page 54: IP  寻址与转发

54

地址分配与指定

Page 55: IP  寻址与转发

55

获得一块地址• 分配也是层次化的

– 前缀 : 指定给一个机构– 地址 : 由 机构指定给一个结点

• 谁分配前缀 ?– Internet Corporation for Assigned Names and Numbers

o 指定大块地址给区域 Internet注册商o ICANN is politically charged

– 区域 Internet注册商 (RIRs)o E.g., ARIN (American Registry for Internet Numbers)o 对其区间分配地址块o 分配给网络服务提供商 Internet Service Providers和大型机构 ($

$)– 网络服务提供商 Internet Service Providers (ISPs)

o 分配地址给其客户 ( 可能会递归 )• 通常不收费( Often w/o charge )

Page 56: IP  寻址与转发

56

知晓谁拥有某个地址• 地址注册

– 地址分配的公共记录– Internet 服务提供商 (ISPs) 在给其客户分配时应该更新– 但是 , 记录的过时是有名的

• 查询方式– UNIX: “whois –h whois.arin.net 169.229.60.27”– http://www.arin.net/whois/– http://www.geektools.com/whois.php– …

Page 57: IP  寻址与转发

按国家分配的地址

57

Page 58: IP  寻址与转发

地址分配 (ordered sampling)

• USA 1536.19 million 5.52 address/capita• China 331.68 million 0.26• Japan 202.10 million 1.59• S. Korea 112.22 million 2.40• Brazil46.47 million 0.27• Russian 37.01 million 0.25• Taiwan 35.38 million 1.59• India 34.65 million 0.03• Ukraine 9.88 million 0.20• Finland 9.73 million 1.88• Israel5.35 million 0.86• Pakistan 5.17 million 0.03

58

Page 59: IP  寻址与转发

59

政策问题• 对每个地理区域需要多少地址 ?

–每个国家地址一样多 ?– 还是按人口比例 ?– 已经分配的地址怎么办 ?

• 地址空间的可移动性 ?–当改变你的服务商时保留地址块 ?– 优点 : 避免对你的设备重新编号–缺点 : 削弱了地址聚集的有效性

•保持地址注册是全新的 ?– 对合并和获取怎样处理 ?– 地址块分发给客户 ?– 结果是 , 注册通常都是过时的

Page 60: IP  寻址与转发

60

32 位地址够了吗 ?

•独立地址不是那么多– 232 = 4,294,967,296 (只有 40 亿 )– 其中 , 一些 ( 还不少 ) 保留用于特殊的目的–而且 , 地址以大的块来分配

• 而 , 许多设备需要 IP 地址–计算机 , PDA, 路由器 , tanks (酒箱) , 拷箱 , …

• 长期方案 ( 可能 ): 更大的地址空间– IPv6 有 128 位地址 (2128 = 3.403 × 1038)

•短期方案 : 沿 IPv4艰难前行–动态分配地址 Dynamically-assigned addresses (DHCP)– 网络地址转换 Network address translation (NAT)

Page 61: IP  寻址与转发

61

共享一块地址•动态主机配置协议 Dynamic Host Configuration

Protocol (DHCP)– 配置主机的几个方面– 最重要的 : 指定临时地址 (出租 lease)– 使用 DHCP 服务器来分配– 块地址在用户间复用

• DHCP 协议 : –广播一个服务发现消息 (第二层 )– 服务器回应一个地址

host host host...

DHCP server

Page 62: IP  寻址与转发

62

来自 DHCP 服务器的响应• DHCP 从服务器 “提供”消息

– 配置参数 (建议的 IP 地址 , 掩码 , 网关路由器 , DNS 服务器 , ...)

–租约时间 (信息有效的时间 )

• 可能多个服务器响应–同一广播网内有多个服务器–每个可能都会提供一个响应

• 接收提供的其中之一–客户机发送一个 “request” 回应参数– DHCP 服务器响应一个 “ACK” 来确认– … 而其他服务器看到他们没有被选中

Page 63: IP  寻址与转发

63

动态主机配置协议

arrivingclient

DHCP server203.1.2.5

DHCP discover(broadcast)

DHCP offer

DHCP request

DHCP ACK

(broadcast)

Why all the broadcasts?

(broadcast)

(broadcast)

Page 64: IP  寻址与转发

64

软状态 : 更新还是遗忘•租借时间为何必要 ?

–客户端可以释放 IP 地址 (DHCP RELEASE)o 如 , “ipconfig /release” 用 DOS命令行o 如 , clean shutdown of the computer

– 但 , 主机可能不释放地址o 如 , 主机崩溃 (蓝屏死机 !)o 如 , 有 bug 的客户机软件

–并且你不希望永远分配地址

• 性能妥协–短租约时间 : 立即返回不活动的地址– 长租约时间 : 避免由于频繁更新和学习租期而造成的超负荷,从而产生拒绝

Page 65: IP  寻址与转发

65

共享单个地址• 如果仅有单个地址怎样

– 但有多个计算机 ?

• 网络地址转换 Network Address Translation (NAT) 使多个主机共享单个地址– 使用端口号 (传输层的字段 )

•当首次提出时,被认为是结构上很讨厌 , 但它 :– 可能从地址耗尽解救出来–且反映了现代设计的原则 ( 不直接 )

Page 66: IP  寻址与转发

66

网络地址转换 (NAT)

在有 NAT 之前,每台连接到 Internet 的机器拥有唯一 IP地址

1.2.3.4

1.2.3.5

5.6.7.8

LAN

Clients

Server

Internet1.2.3.45.6.7.880 1001

dest addr src addrdst port

src port

5.6.7.8 1.2.3.4 80 1001

Page 67: IP  寻址与转发

67

NAT ( 续 )• 指定在同一 NAT 之后的机器的地址

– 通常以地址块的形式 192.168.0.0/16

• 使用端口号复用单个地址

192.2.3.4

192.2.3.5

5.6.7.8

Clients

Server

Internet

NAT

1.2.3.4

5.6.7.8 192.2.3.4 80 1001

192.2.3.4:1001 1.2.3.4:2000

5.6.7.8 1.2.3.4 80 2000

1.2.3.45.6.7.880 2000

5.6.7.8 192.2.3.480 1001

Page 68: IP  寻址与转发

68

NAT ( 续 )

192.2.3.4

192.2.3.5

5.6.7.8

Clients

Server

Internet

NAT

1.2.3.4

192.2.3.4:1001 1.2.3.4:2000

5.6.7.8 1.2.3.4 80 2001

1.2.3.45.6.7.880 2001

5.6.7.8 192.2.3.580 1001

192.2.3.5:1001 1.2.3.4:2001

5.6.7.8 192.2.3.5 80 1001

• 指定在同一 NAT 之后的机器的地址– 通常以地址块的形式 192.168.0.0/16

• 使用端口号复用单个地址

Page 69: IP  寻址与转发

NAT: “ 中间盒子 Middlebox” 的早期示例•盒子插入到网络中来提供功能

– NATs, Firewalls,….

•与结构不匹配 , 违背端到端( E2E )原则

• 但是是一个非常巧的插入功能方式,使得 :– 不需要端主机改变或合作– 由操作者控制 ( 如 , 安全 )

• 一个有趣的结构挑战 :– 如何将中间盒子与结构协调 69