一、普通NAT過程:
采用網絡地址轉換的方法,可以在使用較少合法IP地址的情況下,讓多臺主機同時接入Internet。這樣在現在依然使用IPv4的情況下,節省大量的寶貴地址。同時,因為在外部網絡看來,內部機器時不可見的,這樣就為網絡增加了一定的安全性。
當發生NAT的時候,主機的數據(IP/端口號/MAC)要替換成網關主機的IP/端口號/MAC。并建立形如下面的一張表------NAT表 ,源IP地址和端口號存儲在映射表中,它專門用來跟蹤所有的進入和外出包。
當攜帶有目的端口號的數據報到達網關主機時,網關主機查NAT表,網關就知道需要把數據包轉發給內部主機10.41.221.6,而不是10.41.221.7。
NAT好象是工作在網絡層和傳輸層兩層,因為在NAT過程中既涉及了IP地址也涉及了端口號,而且NAT打破了網絡的獨立性 ,因為在網絡設計之初就是使網絡的層與層之間相互獨立,而NAT打破了這種和諧!
一般的資料都認為NAT替換端口號時是隨機選擇的端口號,但是,實際實驗中沒有捕捉到一個跟原主機不同的端口,好像始終是一致的,也許我捕捉的時間短,沒抓到。有個MVP和CCNA認為MAC沒有被替換,實驗表明MAC被替換了,MAC是由來完成基本連接用的。
默認情況下,NAT 路由器轉換 IP 地址和 TCP/UDP 端口。如果 IP 地址和端口信息只存在于 IP 和 TCP/UDP 標頭中,則應用程序協議可以得到正確的轉換。
有些程序和協議(如 FTP)將 IP 或 TCP/UDP 端口信息存儲在它們自己的標頭中。為讓這些協議或程序能夠通過 NAT 路由器工作,必須有一個打開數據包以轉換包含在有效負載中的地址或端口信息的方法。做到這一點需要使用 NAT 編輯器。
Windows 2000 Server 有用于下列協議的 NAT 編輯器:
FTP
ICMP
PPTP
Windows 2000 Server 中不包括用于下列協議的 NAT 編輯器:
SNMP
LDAP
IPSec
Microsoft COM
RPC
H.323
連接的設備可以全面的支持Internet協議,例如超文本傳輸協議Hypertext Transfer Protocol,簡稱HTTP)、簡單郵件傳輸協議(Simple Mail Transfer Protocol,簡稱SMTP)、Internet控制報文協議(Internet Control Message Protocol,簡稱ICMP)、文件傳輸協議(File Transfer Protocol,簡稱FTP)、和點到點隧道協議(Point-to-Point Tunneling Protocol,簡稱PPTP)。那些不能通過NAT與系統配合的協議,可以使用插件來輔助工作。
NAT 與 IPSec 不兼容
如果在兩個終結點之間有任何網絡地址轉換 (NAT),則 IPSec 不起作用。IPSec 將終結點地址作為有效負載的一部分嵌入。在將數據包發送到電纜上之前進行數據包校驗和計算時,IPSec 也使用源地址。NAT 可更改出站數據包的源地址,目標在計算自己的校驗和時使用頭中的地址。如果數據包中攜帶的用初始來源計算的校驗和與用目標計算的校驗和不符,則目標可丟棄這些數據包。不能將 IPSec 用于任何類型的 NAT 設備。
關于DNS代理服務
DNS代理
通過為網絡客戶端提供DNS服務器的地址,DHCP服務器自動進行Windows CE名字解析。因為一般的家用網絡沒有DHCP服務器,網關設備在不進行Internet連接的情況下,可以充當DNS服務器。在許多情況下,Internet和公司DNS服務器的地址直到有連接的時候才知道。在這種情況下,可以使用AutoDial建立連接。一旦建立了連接,網關將所有的名字解析請求轉發到適當的DNS服務器。如果DNS解析失敗,代理將試圖使用配置中的下一個DNS服務器。
當網絡上有DNS服務器時,DNS代理仍然是有用的。一般情況下,現有的DNS 服務器被配置成把所有的Internet名字解析請求轉發到帶有靜態Internet地址的DNS服務器。如果DNS服務器改變了地址,這個操作將會失敗。也可以把現有的DNS服務器配置成將所有的名字解析請求轉發到DNS代理,它可以動態的處理任務。如果代理沒有找到客戶端請求中指定的DNS服務器的IP地址,它將試圖使用配置中的下一個服務器。
二、奇妙的實驗
ADSL---NAT(2000)----PC
NAT外網IP:219.154.214.150
NAT內網IP:10.41.221.2 255.255.255.0
PC:10.41.222.6 255.255.255.0 DG10.41.221.2
如果直接用這樣的設置,PC不能上網,不能PING10.41.221.2
但是,我用SNIFFER抓包發現,當PC請求時,NAT還是做了轉發,而且得到了應答。發現了有趣的事:這個應答被轉發,目的地址換成了10.41.222.6,是在外網卡上捕捉到的。
忽然突發奇想:如果這個報文被PC得到是不是就可以建立連接呢?繼續做實驗,把網絡結構改一下:
ADSL----HUB----NAT、PC、
NAT(2000)和PC都接HUB,其中NAT的內部和外部網卡都接HUB,這里注意,我沒有捆綁TCP/IP中的NETBIOS。
在PC上繼續試圖上網,不行,有點喪氣,不過,仔細分析報文,發現問題出在:目的MAC不一致導致的!精神頭又來了,立即修改PC的MAC為局端的MAC,重新啟動計算機,用瀏覽器打開網頁沒有任何問題,上MSN也沒有問題,有意思吧。此時PING10.41.221.2不能得到回應,這個好理解。
顯然發送報文走網關經過NAT后可以得到回音,而回應的報文再次被發送出去的時時候,同時被PC接受,通訊就建立了。
有點沒想通的是:如果不設置PC的網關,居然MSN依然在線,可以正常使用,而此時網頁卻無法打開了,顯然MSN使用了獨特的通訊方式。