NAT

NAT(Network Address Translation,網路地址轉換)
定義在RFC1631
一種在IP數據包通過路由器或防火牆重寫源IP地址或目的ip位址技術
原理:藉由含IP位址的轉換表NAT mapping table來對應那個封包是屬於那個電腦

用途:
解決ip位址不夠使用,或不想讓外部用戶知道內部ip位址
普遍用在多台主機但只通過一個公有IP地址到網際網路
用在不想部署Proxy伺服器的環境下存取Internet資源的情況

實作:
低速網路可用軟體,而高速網路用硬體設計
常見軟体有:unix slirp,linux IPtable,FreeBSD NATD,MS ics,Win95 Sygate
常見硬體有ip分享器(nat硬體或PAT+hub或switch),router

應用:
基本的private ip轉換成public ip
tcp負載平衡,目的地址轉換NAT可以重定向伺服器的連接到內部其他的伺服器
處理重複的網路位址
讓proxy具有透通性

nat的優點
Increases flexibility when connecting to the Internet(提高連到網路的靈活性),換isp時可不用為需要對外存取的pc指定新ip
Conserves legally registered addresses(保留已註冊的合法ip),使用PAT可讓內部pc對應一個public ip
Reduces address overlap occurrence(減少位置重覆)
Protects network security(保護網路安全),因為內網資訊不會被向外播送

nat的缺點
除錯麻煩:
Certain applications will not function(某些應用無法使用)
 特別是一些通訊協定或應用程式中,涉及到必須在IP的payload中夾帶IP address資訊時
 一般的NAT實作會修改出現在FTP和ICMP通訊協定資料中的IP address, 但其它協定就不一定了
 NAT設備將需要支援一些額外的功能,才可以解決
Causes loss of end-to-end IP traceability(點對點的ip無法追蹤)
 以IP address作為安全檢查的方式將不可行
 要追蹤一個歷經許多個封包地址轉換並跨越許多個NAT節點的封包會變得非常困難
 但是駭客想要窺探得知封包的起始或目的地址將非常難以追蹤
影響速度:
increase delays(增加延遲)
 因為針對每一個封包標頭的IP地址進行轉換,所以會帶來一些交換路徑的延遲
 第一個封包是依process-switched(程序交換)的方式,會透過slow path(緩慢路徑)來傳遞
 ps:如果快取項目存在時,剩餘的封包將會沿著fast-switched path(快速交換的路徑)來傳遞
performance may be a consideration(要考慮效能)
 因NAT用process-switched的方式運作,會耗用效能
 CPU將查看每一個封包來決定是否需要進行地址轉換,並可能修改IP標頭或TCP標頭的內容

……………….
nat可細分如下:

Static NAT
為固定的一對一對應,負載最輕
內部網路主機永久對應到一個對外的IP位址
private IP中的其它機器能利用public IP address來對外當作 server

Dynamic NAT
轉換表動態建立一對一對應,可以給定一個範圍的Pool,Private與合法IP間可以動態指定
內部網路主機在需要與外界溝通時,從一段可用的IP位址中,得到其中之一
private IP的機器無法當server, 讓外面的機器連進來

PAT(Port Address Translation,端口地址轉換)
也稱多重動態位址轉換,復用動態位址轉換,NAPT(network address and port translation),nat overloading
為一public ip對應多private ip方式,可讓內部多台電腦同時使用public ip存取網路上的服務
使用source port number來區別不同private ip的轉換
理論上可支援65536個private ip,但扣除使用中的port,實際只能支援約4000個private ip

PAT可細分:
dynamic PAT
使用IP masquerading(偽裝)的技術
可讓某區域內的多個客戶端priviate ip透過一個public ip存取網路資訊
static PAT
運用port redirection功能讓外部特定port的封包轉到內部特定主機
可讓多部伺服器同時上線,共用一個IP位置

twice NAT
和DNS一起運作,可讓私有網路執行伺服程式

CAT(cable address translation,纜線位址轉換)
含NAPT功能外,並提供覽線供應商和nat設備間的互動功能
允許供應商對NAT設備做設定值的檢驗和網路存取的控制

…………….

nat+ipsec可能方式
1,先ipsec 在nat:ipsec只有tunnel可行
因用transport在用nat改變ipheader會造成checksum檢查錯誤,而tunnel則產生新header給nat改變相關資訊
2,先nat在ipsec:
缺點是IPsec Device可能無法得知NAT後真正的封包來源,建議是將NAT與IPsec建置在同一個設備中