Outline
Introduction
IP Address & MAC Address
TCP/UDP/ICMP
IP Gateway, Network Mask, TTL
Routing Protocol
Network Address Translation (NAT)
Domain Name System (DNS)
Dynamic Host Configuration Protocol (DHCP) / Asymmetric Digital Subscriber Line (ADSL)
HyperText Transfer Protocol (HTTP) Protocol
Virtual Private Network (VPN)
Gateway
LAN 對 WAN 之出入口 一般而言,Gateway就如同區域網路的出口,若有資 料要傳送到Internet上,均需透過它,再經過中間的 Router轉送到其他Router上,最後再到達目的端。
主要的功能是連接不同的網路架構,而且必須視 架構不同而轉換不同的通訊網路協定層級
用來連接不同的通訊協定網路,例如:TCP/IP,X.25,Systems Network
Architecture (SNA)等,Gateway必須將 所接收的 Packet,轉換成目的位址之網路所能 瞭解的資料格式(訊息格式轉換,位址轉換,以
X.25 一種專用於資料終端設備與封包交換網路間的CCITT 協定
CCITT: Consultative Committee for International Telegraph and Telephone 國際電報電話諮詢委員會
SNA IBM 主機系統所使用的通信協定
舉例說明
如下圖,ADSL ATU-R做為其他電腦上網的Gateway
假設PC1要傳送Packet到Gateway之流程: 藉由PC1上Gateway的設定:藉ARP 找到Gateway 之 MAC Address
由PC1 之Netmask,決定哪些目的IP 需要送到Gateway 轉出去
CYUT NC
簡單驗證實驗
ADSL ATU-R 當Gateway
PC 1 是使用Windows2000作業系統執行以 下的指令歩驟:1. arp –a
2. ping 168.95.1.1 3. arp –a
4. route print
執行結果說明
arp -a執行結果說明
ping 168.95.1.1執行結果說明
arp -a執行結果說明
route printCYUT NC
Routing Table的意義
Routing Table
當Router 設備接收到 Packet 之後,它會依 照 Packet 的目的地 IP(Destination IP Address)決定要對 Packet 做怎樣的動作 諸如從某個網路介面轉送、忽略或是傳回不予轉送的 訊息;而做這些決策的依據,就是 Routing Table。
Routing Table可能以不同資料結構存在於所 有具有Layer 3網路以上功能的設備中,包含 PC、Firewall、Router,甚至有網路功能的 PDA。Linux Host Routing Table範例 (ip route)
例如以下是一 Linux Host 的 RoutingTable,使用 /sbin/ip route (使用mask bit方式列) 命令,或使用 /sbin/route命令 如下頁。
[root@gr /]# /sbin/ip route
61.218.155.224/28 dev eth1 scope link src 61.218.155.226 192.168.2.0/24 dev eth0 scope link src 192.168.2.254 192.168.0.0/24 dev eth0 scope link src 192.168.0.10 192.168.254.0/24 dev eth0 scope link src 192.168.254.254 10.0.0.0/16 dev eth0 scope link src 10.0.0.10
172.16.0.0/16 dev eth0 scope link src 172.16.0.10
127.0.0.0/8 dev lo scope link
default via 61.218.155.225 dev eth1
Linux Host Routing Table範例(route)
[root@gr /]# /sbin/route Kernel IP routing table
Destination Gateway Genmask Metric Iface NAT
61.218.155.224 * 255.255.255.240 0 eth1
192.168.2.0 * 255.255.255.0 0 eth0
192.168.0.0 * 255.255.255.0 0 eth0
192.168.254.0 * 255.255.255.0 0 eth0
10.0.0.0 * 255.255.0.0 0 eth1
172.16.0.0 * 255.255.0.0 0 eth0 127.0.0.0 * 255.0.0.0 0 lo default 61.218.155.225 0.0.0.0 0 eth1
Routing Table Entry
一般Routing Table Entry 搜尋規則是根據IP Packet之目的地IP (Destination IP) ,於Routing Table中以
Longest Prefix Length Longest Prefix Length Match
Match
為原則進行查詢 即當比對時從最前面比對過來符合長度最長的選擇法
Default為0.0.0.0 / 0,即任意 0.0.0.0 / 0
IP 皆符合條件。若合乎該Entry 的條件,則依照其指定的規 則轉送 Packet
Routing Table Entry
若一Packet 進入其網路核心之 Destination IP 為 61.218.155.236 ,與第一個 Entry 的 61.218.155.224/28 從頭開始比對有28 bits相同,因此符合條件。目的地 IP 二進位
00111101 11011010 10011011 1110 1100
目的地IP 61.218.155.236
與以下 Routing Table entry 比對,決定從何介面送出
Longest Prefix Length Match
Routing Table Entry
61.218.155.236 00111101 11011010 10011011 1110 1100
√
√
√
16
Longest Prefix Length Match
Routing Table Entry
此Routing Table Entry 告訴當網路核心進 行 Routing Decision 時,目的地IP的前 28 bits 若是與 61.218.155.224 前面的28bits 相同,則經由介面 eth1 送出
scope link
是說明符合條件的 IP,與其直接 相連,其 Destination MAC 可藉由 ARP 得 知,src 61.218.155.226 則是說明eth1 介面使用IP 為 61.218.155.226
結論:合乎條件共有 1,2,5 等三個,但是 Entry 1 是 match 最長的第一筆記錄 28bits,因此由 Entry 1 的網路介面即 eth1 送
Static & Dynamic Routing
Static Routing 由系統管理員因網路所需,設置固定的路徑表,稱為 靜態(static)路徑表
一般在系統安裝時就根據網路的配置情況預先設定
Dynamic Routing Router根據網絡系統的運行情況而自動調整的路徑表
路由器根據Routing Protocol提供的功能,自動學習和 記憶網路運行情況,在需要時自動計算數據傳輸的最 佳路徑。
TCP/IP中重要的routing protocol Routing Information Protocol (RIP), Open Shortest Path First (OSPF), Border Gateway Protocol (BGP) (Chapter 5)
ifconfig 與Static Route Entry
ifconfig指令除了設定ip及netmask之外,還 會自動新增一筆對應的static route entryRouting的選擇
Routing Table 與 Routing Protocol
Router與Router之間交
換Route資訊,進而更
新Routing Table
Router的設計可分為 Fast Path: 需要快速查詢Routing Table並決策Packet 如何轉送,故需使用硬體晶片或Network Procerssor 設計加速Routing Table查詢。
Slow Path: 速度不需太快,可用一般CPU處理Routing Protocol。
Gateway 和Router
Gateway 較廣義的名詞,用來連接不同的網路,甚至不同的通 訊協定,從第三層到第七層OSI皆有可能
Gateway可以是Router、防火牆、Proxy,所以說 Gateway 不一定是指Router
Router 是指尋找、決定最佳的傳輸路徑,並根據這些路徑建 立Routing Table轉送 Packet或者是過濾 Packet的網 路裝置
CYUT NC
Application Gateway
VoIP Gateway連接PSTN與Internet
可轉換應用層的應用稱為 ApplicationGateway,有些則稱為Application Level Gateway (ALG)
e-mail Application Gateway
Application Gateway代理telnet與ftp
Application Gateway代理telnet與ftp
可設計成分散伺服器的負擔平衡的設備
Default Gateway
Default Gateway
當兩台電腦在不同網域互傳 Packet 時 電腦會先查詢自己的Routing Table,找出往另一台電 腦的路由
如果另一台電腦的網域不在自己的Routing Table內,
就會送往Default Gateway,由Default Gateway負責 轉送 Packet
一般固接式的ADSL都是設定ADSL ATU-R 做 為Default GatewayDefault Gateway的三種設定
由ISP 配發,指定Default Gateway,如固接 專線或固接ADSL,用戶端必須自行設定Default Gateway
使用DHCP (Dynamic Host Configuration Protocol, RFC 1541, RFC 2131) 自動取得Default Gateway,如Cable Modem
使用PPP (The Point-to-Point Protocol, RFC 1661) 取得Default Gateway,例如:Modem 撥接;或撥接計時制ADSL使用PPPoE (PPP over Ethernet)取得 (事實上也使用
PPP)
藉由 ip route 設定default gateway
藉由PPPoE設定Default Gateway
實驗架構圖
PC3原Default Gateway為 192.168.10.254PC1還沒有執行PPPoE上網撥接程式
抓取封包觀察
192.168.10.101 連線遠端的 61.219.36.250PC1還沒有執行PPPoE上網撥接程式
查詢Routing Table
原始的 Default Gateway為 192.168.10.254PC1執行PPPoE上網撥接程式後
經由 PPP 取得網路IP、Gateway與DNS 等 設定後,並更動 Routing Table,將Default Gateway 設為由 PPP取得的 Gateway IPPC1執行PPPoE上網撥接程式後
抓取封包觀察
上網撥接程式,同時使用Ethereal 擷取 Packet
PC1執行PPPoE上網撥接程式後
查詢Routing Table
Default Gateway 已改變為PPP取得之Gateway IP
CYUT NC
Linux Router
Linux Router
使用一般PC加上 Linux,經過適當的設定並結 合Routing Protocol 即可成為一小型的Router使用
若更進一步於硬體Routing與Packet處理方面 加強,如使用Intel IXP系列 NetworkProcessor 或 IBM PowerNP系列,這些硬 體結合 Linux 可以設計為一商業用之Router
Linux router open Source
網路上有許多的Open Source程式碼,但是當 使用時,多少需要加以修正與增加功能,甚至改 變原始程式以配合硬體 [1] Linux Router Project, http://www.linuxrouter.org/
[2] Free Cisco, http://www.freesco.org/
[3] IBM PowerNP, http://www.ibm.com
[4] Intel IXP系列 Network Processor,
http://www.intel.com
[5] Linux Routing Protocol, http://www.zebra.org
Linux Router實例
原本PC 1 與 PC 4 之間無法使用HTTP溝通
經由Linux 遶送使PC 1 與 PC 4 之間可經 HTTP溝通若兩個Hub連接在一起,
但仍無法使PC1與PC4通
訊,因為他們在不同網域
利用NetGuru實作
192.168.1.2 255.255.255.0 Default Gateway:
192.168.1.254 192.168.1.1
255.255.255.0 Default Gateway:
192.168.1.254
192.168.2.1 255.255.255.0 Default Gateway:
192.168.2.254
192.168.2.2 255.255.255.0 Default Gateway:
192.168.2.254 eth0:192.168.1.254
255.255.255.0 Default Gateway:
192.168.3.254
eth2:192.168.2.254 255.255.255.0
Default Gateway:
192.168.3.254
NetGuru架構圖
設定 Host A eth0
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
ip route add default via 192.168.0.254設定Host B eth0
ifconfig eth0 192.168.0.254 netmask 255.255.255.0完成此命令除了設定介面 IP 與Network Mask 外,
ifconfig 還幫您自動設了一靜態Route 的Entry
192.168.0.0/24 dev eth0 scope link src 192.168.1.254
相當於執行了ip route add 192.168.1.254/24 dev eth0
設定Host B eth2
ifconfig eth2 192.168.2.254 netmask 255.255.255.0完成此命令除了設定eth1介面 IP 與Network Mask 外,
ifconfig 也還幫您自動設了一靜態Route 的Entry
192.168.2.0/24 dev eth2 scope link src 192.168.2.254
相當於執行了ip route add 192.168.2.254/24 dev eth2
設定Host C eth2
ifconfig eth2 192.168.2.3 netmask 255.255.255.0
ip route add default via 192.168.2.254CYUT NC
Linux Proxy ARP
概說
Proxy 一詞可以用在各種場合,我們可想像其 為代理人,當您想與某方完成一任務時,可以透 過代理人間接幫您完成,但除了完成任務之外,此代理人還可以幫助加速、掃毒或紀錄等
如最常用的即是WEB Proxy,也就是常用的瀏 覽器Proxy 設定中使用的Proxy Server。最 有名的 WEB Proxy 即為 squid(http://www.squid-cache.org/)
Proxy ARP
Proxy是代理來源端向目的端提出請求,對於來 源端而言,所面對的是Proxy,而目的端所回應 的,也是以為來自Proxy ,但事實的來源主機 卻是在Proxy後面。
Proxy ARP主要是針為ARP的協定,來源端送 出ARP的廣播時,Proxy ARP必須知道(記錄) 它另一端的主機情形,而代理回應,並將該MAC Address的資料轉送至另一端。例如:撥接伺服器便代理兩端電腦的功能Proxy ARP 。
範例說明
PC 1 與 PC 4 必須透過 Proxy ARP 才能溝通
PC 4 的 MAC Address 為 Linux eth0 的 MAC Address, 而對PC 4的 ARP Request回應 PC 1 的 MAC Address 為 Linux eth2
利用NetGuru實作
NetGuru架構圖
NetGuru內部 Host B
NetGuru內部 Host B
下達Proxy ARP 指令
arp –i eth1 –Ds 192.168.1.1 eth1 netmask 255.255.255.255 pub
arp –i eth0 –Ds 192.168.1.10 eth0 netmask 255.255.255.255 pubNetGuru內部 Host A
NetGuru內部 Host C
NetGuru內部 Host B 抓取eth0的封包
NetGuru內部 Host B 抓取eth1的封包
CYUT NC
實驗導引
實驗 5.1 Routing設定與TTL觀察
實驗 5.1 Routing設定與TTL觀察
實驗目的
了解如何設定Gateway
了解routing相關概念
了解default route的意義
了解TTL相關概念
觀察route與TTL的變化第一次routing架構圖
Step 1: 實驗環境設定
停用與實驗無關的網卡
Host A: ifconfig eth1 down
ifconfig eth2 down
Host B: ifconfig eth1 down
Host C: ifconfig eth0 down
ifconfig eth1 down
Step 2:設定Host B為Host A的 default gateway
Host A:
Host B:啟用ip forward功能 echo “1” > /proc/sys/net/ipv4/ip_forward
復習:何謂default gatewayStep 3: 連線測試
Host B: 開啟Ethereal,interface選eth0,以觀察連線測試之封 包
Host C: 開啟Ethereal,interface選eth2,以觀察連線測試之封 包
Host A: ping 192.168.2.3
觀察是否有回應,並探討其原因
復習
Step 4: 問題排除
設定Host C回到192.168.0.0/24的路徑 ip route add default via 192.168.2.2
上面做法是使ICMP request和reply的路徑相 同,然而ICMP request和reply的路徑不一定 相同,如接下來的步驟所示第二次routing架構圖
Step 5: 實驗環境設定
Host A的eth1回復預設值: ifconfig eth1 192.168.1.1 netmask 255.255.255.0
Host B: 沿用之前步驟的設定值不需更改
Host C的eth1回復預設值: ifconfig eth1 192.168.1.3 netmask 255.255.255.0
Step 6:設定路徑
設定Host C往192.168.0.0/24的路徑
Host C: ip route add 192.168.0.0/24 via 192.168.1.1
使Host C藉由192.168.1.1直接到達Host A(不經Host B 轉送封包)
Step 7: 連線測試
Host C: 開啟Ethereal,interface選eth2,以觀察連線測試之封 包
Host A: 開啟Ethereal,interface選eth1,以觀察連線測試之封 包
Host A: ping 192.168.2.3,觀察TTL值並探討其原因
traceroute 192.168.2.3
問題與討論
為何在Host C Ethereal所觀察到的ICMP封 包其TTL值為63?
為何在Host A Ethereal所觀察到的ICMP封 包其TTL值為64?
為何ping 192.168.2.3的TTL值為64?ping 回復的TTL值是由哪一主機所決定?
為何Step 4(p.69)所設定Host C到192.168.0.0/24的路徑(default route)在 上步驟(Step 7)的連線測試沒有生效?
發出ICMP request封包的interface是否必 須與接收ICMP reply的interface相同?分析封包行經路徑
ICMP request
ICMP replyStep 8:更改TTL預設值
Host C: echo “260”> /proc/sys/net/ipv4/ip_default_ttl
ping 192.168.0.1
討論其TTL=64的意義,並分析封包行經路徑
Host A: ping 192.168.2.3
討論其TTL=4的意義,並分析封包行經路徑 Hint: TTL的極大值為255