iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
16
Security

從 0 開始的 Web Security系列 第 5

Day 5 路由處理與交換原則

昨天文章講到了 AS 與 AS 之間的角色關係
而今天文章將來講這些角色關係之間的路由關係

路由器轉送原則

首先,當路由器收到一個封包之後,會先看看 L3 的目的地(Dst. IP)是不是自己
如果是的話,就會把這個封包接起來自己處理
如果不是的話,就會看這個目的地 IP 在路由表中有沒有符合的路徑可以走
如果沒有的符合的話,就會出現 Destination Unreachable 這個 ICMP 錯誤
通常你網路有問題的時候 ping 就會看到這個錯誤

路由器轉送封包也是有一定原則的
會先以路由表裡 Mask 最長的為優先
這個專有名詞叫 Longest Prefix Match,也有人縮寫為 LPM

Longest Prefix Match

假設路由表裡面有三條紀錄,這邊為了好理解把 Mask 拆出來再寫一遍
假設 Distance (Metric) 都為 1 的情況下

Prefix Mask Destination Distance
1.1.0.0/23 23 eth0 1
1.1.0.0/24 24 eth1 1
1.1.1.0/24 24 eth2 1

假設今天路由器收到了一個目的地為 1.1.1.1 的封包,我們來看一下路由表的包含情況

  • 1.1.0.0/23 -> 有包含
  • 1.1.0.0/24 -> 沒有包含
  • 1.1.1.0/24 -> 有包含

有兩條路由包含了這個 IP
但因為有這個原則,會採用 Mask 最大的那一條,也就是1.1.1.0/24
因為 24 > 23
最終將這個收到的封包網 eth2 這個介面丟出去

這樣的規則可以讓路由器或電腦有效的將路由表的大小縮小,最終形成一個字典樹結構
讓我們在上面那張路由表加上一條預設路由,讓沒有 Match 到的封包往預設的接口送
https://ithelp.ithome.com.tw/upload/images/20200920/20129897rCmKo5J3S5.png
就會形成一張這樣的圖
在這個情況下,B 這條路由只有當 C 或 D 其中一條路由失效的時候才會生效
因為 C 與 D 恰好涵蓋了整段 B 所涵蓋了範圍,所以不會使用到

上面都是 Distance 恰好一樣的情況下,那

Distance

讓我們來看一張新的路由表

Prefix Mask Destination Distance
0.0.0.0/0 0 eth0 1
1.1.0.0/24 24 eth1 1
1.1.1.0/24 24 eth1 1
1.1.1.0/24 24 eth2 2

在這個情況下 1.1.1.0/24 有兩組一樣的匹配條件,但目的地與距離都不相同
這時候你的路由器會選擇距離最小的那一組,也就是往 eth1 送
而往 eth2 送的那一組會失效直到往 eth1 的那組失效,所以也可以被當作是備援路由

要記住,Longest Prefix Match 還是會先判斷,如果找到多組一樣的才會看距離

Equal-Cost Multi-Path (ECMP)

那如果如果有多條路由 Prefix 與距離都一樣呢?
這時候路由器就會平均的往這幾條路由的目的地送

路由輸入/輸出

我們知道了路由器怎麼根據路由表來轉送封包的了
那路由器怎麼有這些路由表的呢?
這就是由其他 AS 的路由器所互相交換的了

一般來說,我們可以查詢 whois 的方式,查到 AS 跟其他 AS 的輸入輸出規則
但這東西通常都會被忘記更新,而且還有其他的一些過濾規則,所以基本上都是參考用的
像是查詢筆者個人的 AS
whois AS207468
就可以看到以下的資訊
https://ithelp.ithome.com.tw/upload/images/20200920/20129897gIXCdqoEaM.png
其中 import 與 export 就是路由輸出的規則
像這裡說從 AS206499 AS205591 AS 202409 AS31142 接收他們給的所有路由
(路由是誰發的不重要)
然後輸出給他們 AS-SEADOG007 這個 AS-SET 裡面的路由
當我們去查詢 AS-SEADOG007 這個 AS-SET,我們可以看到裡面包含了兩個 AS
https://ithelp.ithome.com.tw/upload/images/20200920/20129897ydl6gF143m.png
也就是說,向上面那四個 AS 輸出由這個 AS-SET 所發出的路由(AS Origin == AS131668 or AS207468)

當然,這個是有寫出來的一些路由收發政策

實例

首先 我們有 AS1 AS2 AS3 AS4 AS5 五個 AS
https://ithelp.ithome.com.tw/upload/images/20200920/20129897wUoguYSJkv.png
為了簡化情況,AS 3 與 AS 4 是 Transit Provider
每個 AS 都有一段 N.N.N.0/24 的網段
而且他們希望每個人都能連接的到
以下會是各個 AS 的Policy

  • AS 1
    • import: from AS3 accept ANY
    • export: to AS3 announce AS1
  • AS 2
    • import: from AS3 accept ANY
    • export: to AS3 announce AS2
  • AS 3
    • import: from AS1 accept AS1
    • export: to AS1 announce ANY
    • import: from AS2 accept AS2
    • export: to AS2 announce ANY
  • AS 4
    • import: from AS2 accept AS2
    • export: to AS2 announce ANY
    • import: from AS5 accept AS5
    • export: to AS5 announce ANY
  • AS 5
    • import: from AS4 accept ANY
    • export: to AS4 announce AS5

根據這些 Policy 以下是每個 AS 所收到的路由表與收發情況

AS 1

  • 發出給 AS3
    • 1.1.1.0/24 Origin AS1
  • 從 AS3 收到
    • 2.2.2.0/24 Origin AS2
    • 3.3.3.0/24 Origin AS3
    • 4.4.4.0/24 Origin AS4
    • 5.5.5.0/24 Origin AS5
  • 路由表
Prefix Origin Next-hop Status
2.2.2.0/24 AS2 AS3 Active
3.3.3.0/24 AS3 AS3 Active
4.4.4.0/24 AS4 AS3 Active
5.5.5.0/24 AS5 AS3 Active

AS 2

  • 發出給 AS3
    • 2.2.2.0/24 Origin AS2
  • 發出給 AS4
    • 2.2.2.0/24 Origin AS2
  • 從 AS3 收到
    • 1.1.1.0/24 Origin AS1
    • 3.3.3.0/24 Origin AS3
    • 4.4.4.0/24 Origin AS4
    • 5.5.5.0/24 Origin AS5
  • 從 AS4 收到
    • 1.1.1.0/24 Origin AS1
    • 3.3.3.0/24 Origin AS3
    • 4.4.4.0/24 Origin AS4
    • 5.5.5.0/24 Origin AS5
  • 路由表
Prefix Origin Next-hop Status
1.1.1.0/24 AS1 AS3 Active
1.1.1.0/24 AS1 AS4
3.3.3.0/24 AS3 AS3 Active
3.3.3.0/24 AS3 AS4
4.4.4.0/24 AS4 AS3
4.4.4.0/24 AS4 AS4 Active
5.5.5.0/24 AS5 AS3
5.5.5.0/24 AS5 AS4 Active

這邊有多筆重複的路由,因為 AS 2 連接了兩個上游,但有些狀態不是 Active
不是 Active 的原因在後面介紹 BGP 的章節會講到

AS 3

  • 發出給 AS1
    • 2.2.2.0/24 Origin AS2
    • 3.3.3.0/24 Origin AS3
    • 4.4.4.0/24 Origin AS4
    • 5.5.5.0/24 Origin AS5
  • 發出給 AS2
    • 1.1.1.0/24 Origin AS1
    • 3.3.3.0/24 Origin AS3
    • 4.4.4.0/24 Origin AS4
    • 5.5.5.0/24 Origin AS5
  • 發出給 AS4
    • 1.1.1.0/24 Origin AS1
    • 2.2.2.0/24 Origin AS2
    • 3.3.3.0/24 Origin AS3
  • 從 AS1 收到
    • 1.1.1.0/24 Origin AS1
  • 從 AS2 收到
    • 2.2.2.0/24 Origin AS2
  • 從 AS4 收到
    • 2.2.2.0/24 Origin AS2
    • 4.4.4.0/24 Origin AS4
    • 5.5.5.0/24 Origin AS5
  • 路由表
Prefix Origin Next-hop Status
1.1.1.0/24 AS1 AS1 Active
2.2.2.0/24 AS2 AS2 Active
2.2.2.0/24 AS2 AS4
4.4.4.0/24 AS4 AS4 Active
5.5.5.0/24 AS5 AS4 Active

AS 4

  • 發出給 AS2
    • 1.1.1.0/24 Origin AS1
    • 3.3.3.0/24 Origin AS3
    • 4.4.4.0/24 Origin AS4
    • 5.5.5.0/24 Origin AS5
  • 發出給 AS3
    • 2.2.2.0/24 Origin AS2
    • 4.4.4.0/24 Origin AS4
    • 5.5.5.0/24 Origin AS5
  • 發出給 AS5
    • 1.1.1.0/24 Origin AS1
    • 2.2.2.0/24 Origin AS2
    • 3.3.3.0/24 Origin AS3
    • 4.4.4.0/24 Origin AS4
  • 從 AS2 收到
    • 2.2.2.0/24 Origin AS2
  • 從 AS3 收到
    • 1.1.1.0/24 Origin AS1
    • 2.2.2.0/24 Origin AS2
    • 3.3.3.0/24 Origin AS3
  • 從 AS5 收到
    • 5.5.5.0/24 Origin AS5
  • 路由表
Prefix Origin Next-hop Status
1.1.1.0/24 AS1 AS3 Active
2.2.2.0/24 AS2 AS2 Active
2.2.2.0/24 AS2 AS3
3.3.3.0/24 AS3 AS3 Active
5.5.5.0/24 AS5 AS5 Active

AS 5

  • 發出給 AS4
    • 5.5.5.0/24 Origin AS5
  • 從 AS4 收到
    • 1.1.1.0/24 Origin AS1
    • 2.2.2.0/24 Origin AS2
    • 3.3.3.0/24 Origin AS3
    • 4.4.4.0/24 Origin AS4
  • 路由表
Prefix Origin Next-hop Status
1.1.1.0/24 AS1 AS4 Active
2.2.2.0/24 AS2 AS4 Active
3.3.3.0/24 AS3 AS4 Active
4.4.4.0/24 AS4 AS4 Active

AS1 (1.1.1.1) -> AS5 (5.5.5.5)

假設今天有一個封包要從 1.1.1.1 走往 5.5.5.5
這時候 AS1 的 Router 查詢了路由表,發現要往 AS3 送
AS3 的路由器接到了包,查了他的路由表,發現要往 AS4 送
AS4 也查了他的路由表,發現要往 AS5 送
封包就這樣不知不覺地被轉到了目的地了
AS1 -> AS3 -> AS4 -> AS5

小結

今天我們看到了 AS 彼此交換路由的原則,也看到了路由器是怎麼依照路由表來轉送封包的,這些背景知識介紹完後,我們終於可以開始進入安全的環節了
明天將會以不同的網路模型來談談可能存在的攻擊面向


上一篇
Day 4 Internet 構成 (2)
下一篇
Day 6 網路模型與攻擊面向
系列文
從 0 開始的 Web Security22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
calee
iT邦新手 5 級 ‧ 2020-10-09 11:39:32

請問as3和as4的policy是不是有少@@還是說可以不用設定他會自己發現鄰居??

我要留言

立即登入留言