• 沒有找到結果。

第五章 結論

A.2 DNS-ALG之實作原理

在 NAT-PT 的網路架構中,IPv6 網路上的主機藉由 IPv6 DNS 伺服器與 IPv6 網路 上其他的主機建立連線,IPv4 網路上的主機使用 IPv4 DNS 伺服器與 IPv4 網路上其他 的主機建立連線。但是當 IPv6 主機要與 IPv4 主機建立連線之前,會先向 IPv6 DNS 伺 服器查詢 IPv4 主機的位址,由於在 IPv6 DNS 伺服器與 IPv4 DNS 伺服器之間並沒有傳 遞(Forwarder)關係,因此就無法遞迴式(Recursive)查詢到 IPv4 使用者的位址。除 此之外,即使 IPv6 與 IPv4 DNS 伺服器互相設定傳遞關係,由於 IPv4 DNS 伺服器回傳 給 IPv6 DNS 伺服器是 IPv4 位址,IPv6 主機仍然無法以 IPv4 位址在 IPv6 網路中建立 連線。

為了讓 IPv6 與 IPv4 網路的主機可以雙向查詢並且正確建立連線,首先在 NAT-PT 上設定 IPv6 DNS 伺服器的 Public IPv4 位址靜態對應(Static Mapping),讓 IPv4 伺服 器可以將 DNS 封包送到此 Public IPv4 位址,然後透過 NAT-PT 的轉換之後傳遞給 IPv6

址作轉換。

DNS-ALG 模組針對 DNS 通訊協定的封包進行分析。DNS-ALG 模組內部包括 DNS 解析(DNS Parser)單元(圖 A-6○a )、IP 位址字串處理單元(圖 A-6○b )以及封包長

/* Definition of DNS Message */

struct DNSMessage {

DNSHeader * header; /* Header Section */

DNSEntry * qdENT; /* point of question Entry */

DNSRR * anRR; /* point of answer RR */

DNSRR * nsRR; /* point of authority RR */

DNSRR * arRR; /* point of additional RR */

}

圖 A-7 DNS 通訊協定資料結構的型態定義圖

Question Entries

ARCount

arRR1 arRR2 arRR3

nsRR1 nsRR2 nsRR3

anRR1 anRR2 anRR3

qdENT1 qdENT2 qdENT3

Question Entries

Answer RRs

ARCount

arRR1 arRR2 arRR3

nsRR1 nsRR2 nsRR3

anRR1 anRR2 anRR3

qdENT1 qdENT2 qdENT3

圖 A-8 DNS 通訊協定資料結構的型態關係圖

IP 位址字串處理單元針對 DNS 訊息內的 IP 位址,進行轉換的工作。底下對 Question Entries 以及其他 RRs(包括 Answer RRs、Authority RRs 以及 Additional RRs)分別說 明轉換演算法。

IP 位址字串處理單元針對於 DNS 訊息內的 Question Entries 進行分析工作。若類別

(Class)欄位為 Internet(值等於 1),且型態(Type)欄位的值為 A(值等於 1),

表示這是一個 DNS IPv4 正查訊息,IP 位址字串處理單元要將型態欄位的值由 A 轉換

IP 位址字串處理單元針對於 DNS 訊息內的 Answer RRs, Authority RRs, Additional

IPv6 位址;若型態欄位的值為 AAAA,表示這是一個 DNS IPv6 訊息,IP 位址字串處 理單元要者將型態欄位的值由 AAAA 轉換為 A,並且將 RR 資料內的 IPv6 址轉換為 IPv4 位址(如表 A-2 所示)。

表 A-1 Question Entries 轉換演算法

Field

If QClass==IN(1) If QClass==IN(1) and QType==PTR(12)

QType

A(1)轉換 AAAA(28)

No Modification

QName No

Modification IPv4 octets with preceding string “IN-ADDR.ARPA”

(e.g., 100.100.113.140.IN-ADDR.ARPA.)

轉換

IPv6 octets with preceding string “IP6.NET”

(e.g., 4.6.4.6.1.7.c.8.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.0.0.0.6.3.e.f.f.3.IP6.NET.)

表 A-2 Answer RRs, Authority RRs, Additional RRs 轉換演算法

Field

Type A(1)轉換 AAAA(28)

RData 4-bytes IPv4 address(e.g., 140.113.100.100)

轉換

16-bytes IPv6 address(e.g., 3ffe:3600:1::8c74:6060)

封包長度修正單元負責兩個工作。第一,針對 IP 位址資訊已轉換完成的 RRs 進行 RR 資料長度欄位的修正;第二,當 DNS 訊息中名稱欄位內的 IP 位址經過轉換之後,

IP 位址的字串長度會改變,若其他的 Query Entries 或 RRs 中有名稱欄位採用訊息壓縮 模式,則會影響到位移指標所指的位置,因此必須根據 IP 位址的改變長度,再去重新 計算位移指標的值。最後,封包長度修正單元會將 DNS 訊息轉換完成後的資料長度資 訊,透過 ALG Dispatcher 傳遞給 SIIT 模組,來對 IP 標頭中的資料長度欄位進行修正。