
NAT và PAT
WEDNESDAY, 7. OCTOBER 2009, 08:21:38
NAT là ki n th c h t s c căn b n đ i v i nh ng sinh viên h c chuyênế ứ ế ứ ả ố ớ ữ ọ
nghành v công ngh thông tin, tuy nhiên đ hi u c n k và k l ng về ệ ể ể ặ ẽ ỹ ưỡ ề
k thu t này thì không nhi u b n có th trình bày m t cách hoàn ch nhỹ ậ ề ạ ể ộ ỉ .
Network Address Translation: NAT là k thu t thay đ i các đ a ch m ngỹ ậ ổ ị ỉ ạ
(Network Address) trong m t gói tin (packet) đ gây nh h ng trong quáộ ể ả ưở
trình đ nh h ng đi c a packet cho m t m c đích c th . Đ a ch m ng ị ướ ủ ộ ụ ụ ể ị ỉ ạ ở
đây mu n nói đ n đ a ch IP WAN (Internet Protocol) layer 3, ngoài raố ế ị ỉ ở
còn có th thay đ i s port layer 4 theo mô hình phân l p OSI. Bên c nhể ổ ố ở ớ ạ
đó đ a ch m ng còn đ c phân bi t đ a ch ngu n (source) và đ a chị ỉ ạ ượ ệ ị ỉ ồ ị ỉ
đích (destination). Tùy theo m c đích dùng NAT mà ta thay đ i m t sụ ổ ộ ố
ho c t t c các lo i đ a ch trên, trên cùng m t packet.ặ ấ ả ạ ị ỉ ộ
Đây là lo i hình NAT ph bi n nh t, ta còn hay g i là Des NAT, hay NATạ ổ ế ấ ọ
Inbound. NAT theo ki u này ch thay đ i đ a ch IP đích c a gói tin màể ỉ ổ ị ỉ ủ
không đ ng đ n các thành ph n khác. Đây cũng là ki u đ c s d ngụ ế ầ ể ượ ử ụ
m c đ nh trong các ROUTER ( thi t b đ nh tuy n nói chung ) theo cáchặ ị ế ị ị ế
sau:
•Khi client g i packet request i t i ROUTER, i s có dest IP là Virtual IP c aử ớ ẽ ủ
ROUTER (141.149.65.3), source IP là IP c a client (188.1.1.10). Do ROUTERủ
đ i di n cho t t c nh ng server th c đ ng sau, nên IP c a ROUTERạ ệ ấ ả ữ ự ằ ủ
cũng là đ a ch đ i di n, client s ch liên h v i ROUTER mà không bi tị ỉ ạ ệ ẽ ỉ ệ ớ ế
đ c đ a ch th t c a các server là gì ( tr c khi bi t VIP c a router nóượ ị ỉ ậ ủ ướ ế ủ
ph i nh DNS server d ch t tên mi n sang đ a ch IP ). Đ a ch IP đ i di nả ờ ị ừ ề ị ỉ ị ỉ ạ ệ
c a ROUTER còn là đ a ch IP o (Virtual IP - VIP) ủ ị ỉ ả
•ROUTER s g i repquest i đ n server đ x lý nên nó th c hi n thay destẽ ử ế ể ử ự ệ
IP trong i thành IP c a server (10.10.10.20), source IP v n gi nguyênủ ẫ ữ
(188.1.1.10). Thao tác này g i là Destination NAT ( d ch chuy n IP đích ). ọ ị ể
•Nh có dest IP là IP c a server nên request i s đ c đ nh tuy n ti p đ nờ ủ ẽ ượ ị ế ế ế
server x lý. ử
•Khi server tr l i, packet reply s đi qua l i ROUTER. T i đây packet đ cả ờ ẽ ạ ạ ượ
un-NAT, nghĩa là thay l i đ a ch IP c a server (lúc này tr thành source IP)ạ ị ỉ ủ ở
b ng VIP c a ROUTER. ằ ủ
Reverse NAT
Trong c ch c a ROUTER, các server th t ch đ c c p đ a ch IP privateơ ế ủ ậ ỉ ượ ấ ị ỉ
(vì nhi u lý do, trong đó có s h n ch v s l ng IP public và tính b oề ự ạ ế ề ố ượ ả
m t, ngo i tr m t s tr ng h p đ c bi t cho server k t n i th ng IPậ ạ ừ ộ ố ườ ợ ặ ệ ế ố ẳ
public), nghĩa là không th đi ra Internet đ c. ROUTER đ c publish raể ượ ượ
Internet đ nh n request cho các server bên trong, nên nó th ng có m t,ể ậ ườ ộ
ho c nhi u đ a ch IP public đ các client k t n i t bên ngoài vào, và đ aặ ề ị ỉ ể ế ố ừ ị

ch này cũng là VIP. Khi client mu n s d ng d ch v c a server bênỉ ố ử ụ ị ụ ủ
trong, ROUTER th c hi n vi c chuy n đ i đ a ch dest IP t public sangự ệ ệ ể ổ ị ỉ ừ
private đ đ n đ c server, đó là ki u NAT ta xét trên. Trong tr ng h pể ế ượ ể ở ườ ợ
ng c l i, khi server bên trong mu n kh i t o k t n i v i bên ngoàiượ ạ ố ở ạ ế ố ớ
Internet, ROUTER ph i th c hi n vi c chuy n đ a ch source IP c a packetả ự ệ ệ ể ị ỉ ủ
đi ra t private sang public đ có th l u thông trên Internet. Do cách ho từ ể ể ư ạ
đ ng nh v y nên ki u NAT này còn đ c g i là SourceNAT, hay NATộ ư ậ ể ượ ọ
outbound.
Port-Address Translation (PAT)
Hai tr ng h p trên ta đã xem xét hai ki u thay đ i đ a ch IP, tr ng h pườ ợ ể ổ ị ỉ ườ ợ
th ba này còn đ c g i là “NAT port”, nghĩa là s port TCP/UDP trongứ ượ ọ ố ở
packet s b thay đ i ( đây ta không xét đ n các protocol khác cũng cóẽ ị ổ ở ế
dùng port). PAT cũng là m t ph n t t y u trong các ch c năng chính c aộ ầ ấ ế ứ ủ
ROUTER. Cách ho t đ ng c a nó cũng r t đ n gi n: Khi ta liên k t (bind)ạ ộ ủ ấ ơ ả ế
port 80 c a VIP trên ROUTER đ n port 1000 trên server th t, load balancerủ ế ậ
s th c hi n vi c chuy n đ i và đ y toàn b yêu c u port 80 (dest port)ẽ ự ệ ệ ể ổ ẩ ộ ầ
đ n port 1000 trên server.ế
Nh ng l i ích khi ta th c hi n PAT:ữ ợ ự ệ
- B o m t là ích l i đ u tiên mà ta th y ngay. B ng cách không m nh ngả ậ ợ ầ ấ ằ ở ữ
c ng m c đ nh trên server, ta có th gây khó khăn h n cho vi c t n côngổ ặ ị ể ơ ệ ấ

ác ý. Ch ng h n, ta có th ch y m t Web server trên port 4000, và liên k tẳ ạ ể ạ ộ ế
port 80 c a VIP trên ROUTER đ n port 4000 c a server th t. Lúc b y gi ,ủ ế ủ ậ ấ ờ
k t n công không th khai thác tr c ti p lên port 80 c a server th tẻ ấ ể ự ế ủ ậ
đ c, vì nó không đ c m .ượ ượ ở
- Kh năng co dãn (scalability) PAT cho phép ta ch y cùng m t ng d ngả ạ ộ ứ ụ
trên nhi u port. Tùy theo cách thi t k ng d ng, có th vi c ch y nhi uề ế ế ứ ụ ể ệ ạ ề
b n sao c a nó s làm tăng hi u su t ph c v lên. Ch ng h n ta có thả ủ ẽ ệ ấ ụ ụ ẳ ạ ể
ch y máy ch web IIS trên các port 80, 81, 82 c a m i server th t. Sau đóạ ủ ủ ỗ ậ
ch c n liên k t port 80 c a VIP v i m i port ch y IIS c a server th t. Loadỉ ầ ế ủ ớ ỗ ạ ủ ậ
balancer s phân b l u thông không ch cho các server mà còn gi a cácẽ ổ ư ỉ ữ
port trên t ng server.ừ
- Kh năng qu n tr (manageability) ch ng h n khi host nhi u website trênả ả ị ẳ ạ ề
m t b các server th t, ta có th ch c n dùng m t VIP đ đ i di n cho t tộ ộ ậ ể ỉ ầ ộ ể ạ ệ ấ
c các domain c a các website. Lúc này ROUTER s nh n t t c cácả ủ ẽ ậ ấ ả
request đ n port 80 cùng m t VIP. Web server c a ta có th ch y m iế ở ộ ủ ể ạ ỗ
domain trên m t port khác nhau, ch ng h n www.abc.com trên port 81,ộ ẳ ạ
www.xyz.com trên port 82. ROUTER có th g i l u thông đ n port phù h pể ử ư ế ợ
d a trên domain trong URL c a m i HTTP request.ự ủ ỗ
Full NAT
Nh v y ta đã xét k thu t NAT thay đ i l n l t đ a ch đích, đ a chư ậ ỹ ậ ổ ầ ượ ị ỉ ị ỉ
ngu n, r i thay đ i port khi đ nh tuy n. M i s thay đ i là m t lo i hìnhồ ồ ổ ị ế ỗ ự ổ ộ ạ
NAT có ng d ng trong t ng tr ng h p riêng. K t h p các ki u thay đ iứ ụ ừ ườ ợ ế ợ ể ổ

này l i, ta có m t ki u NAT khác ph c t p h n là Full NAT. Ki u NAT nàyạ ộ ể ứ ạ ơ ể
có tên g i nh v y vì nó bao g m các thay đ i sau đây trên gói tinọ ư ậ ồ ổ
request:
•Đ a ch IP ngu n (source IP) ị ỉ ồ
•Đ a ch IP đích (dest IP) ị ỉ
•Port ngu n (source port) ồ
L u ý source port đây là port c a client, còn dest port là port đ cư ở ủ ượ
request trên server, ch ng h n port 80 ví d trên.ẳ ạ ở ụ
Ki u NAT này khác v i nh ng ki u NAT trên ch , packet t server replyể ớ ữ ể ở ỗ ừ
có th b qua ROUTER mà đi th ng đ n client ngoài Internet. V n đ ể ỏ ẳ ế ở ấ ề ở
ch đ a ch IP c a server v n là private IP, do đó đ ng nhiên packet replyỗ ị ỉ ủ ẫ ươ
mang đ a ch source là IP n i b s ch ng bao gi đ n đ c client.ị ỉ ộ ộ ẽ ẳ ờ ế ượ
V y thì b ng cách nào đ bu c server ph i tr l i thông qua ROUTER đậ ằ ể ộ ả ả ờ ể
đ c NAT đ a ch IP đi ra Internet? Cách đ n gi n nh t là ta có th khaiượ ị ỉ ơ ả ấ ể
báo cho ROUTER là default gateway c a các server. Nh ng cách này yêuủ ư
c u ROUTER ph i cùng subnet v i các server (cùng Layer 2 broadcastầ ả ở ớ
domain). N u không th n m cùng subnet thì sao? Đây là ch Full NATế ể ằ ỗ
khác bi tệ
FULL NAT đ c s d ng.ượ ử ụ
Khi đ c thi t l p đ th c hi n Full NAT, ROUTER s thay source IP c aượ ế ậ ể ự ệ ẽ ủ
t t c các request packet b ng m t đ a ch đ c khai báo trên ROUTER,ấ ả ằ ộ ị ỉ ượ
xem nh là source IP, r i thay dest IP (lúc này đang là VIP) thành IP c aư ồ ủ
server (10.10.10.20), tr c khi g i đ n server . Source IP này có th gi ngướ ử ế ể ố
ho c khác VIP, tùy vào t ng s n ph m ROUTER. Nh v y t ng t nhặ ừ ả ẩ ư ậ ươ ự ư
proxy, lúc này server th t s xem ROUTER nh là client yêu c u mình, vàậ ẽ ư ầ
không quan tâm đ n client th c s n a. Vì th server s reply l i choế ự ự ữ ế ẽ ạ
ROUTER và ROUTER s đ i l i dest IP thành IP c a client th c sẽ ổ ạ ủ ự ự
(188.1.1.100) đ g i đi.ể ử
Nh v y source port đ c thay đ i ch nào? M i l n thay đ i m tư ậ ượ ổ ở ỗ ỗ ầ ổ ộ
source IP c a client thành source IP c a ROUTER, g i là m t session, thìủ ủ ọ ộ
ROUTER th c hi n l u l i nh ng thông tin c a client trong session đóự ệ ư ạ ữ ủ
b ng cách đ i source port trong cùng packet (lúc này đang là source portằ ổ
c a client).ủ
Source port lúc này có ý nghĩa nh là m t session ID không h n khôngư ộ ơ
kém. Khi server reply v cho ROUTER, source port cũng đ c g i tr về ượ ử ả ề
theo packet reply. D a vào source port này, ROUTER xác đ nh đ cự ị ượ
session c a client trong b ng l u đ thay l i source IP, source port c aủ ả ư ể ạ ủ
client nh cũ.ư
u đi m c a ki u NAT này là cho phép b n th c hi n vi c thay đ i đ aƯ ể ủ ể ạ ự ệ ệ ổ ị

ch thông qua ROUTER trên m i topology m ng. Nh c đi m là không l yỉ ọ ạ ượ ể ấ
đ c các thông tin v IP, port t phía client. Nh ng ng d ng nh Web cóượ ề ừ ữ ứ ụ ư
s d ng thông tin t source IP c a client thì không nên dùng mô hình này.ử ụ ừ ủ
Đa s các s n ph m ROUTER đ u cung c p ch c năng log và reportố ả ẩ ề ấ ứ
source IP c a các request.ủ
Enhanced NAT
Nh ng k thu t NAT v a trình bày trên đ u xoay quanh vi c thay đ iữ ỹ ậ ừ ở ề ệ ổ
đ a ch IP, cũng nh port trong packet header. Tuy nhiên có nh ngị ỉ ư ữ
protocol đ c bi t ch a thông tin đ a ch hay port nhúng trong packetặ ệ ứ ị ỉ
payload, cũng c n ph i đ c thay đ i cùng v i packet header.ầ ả ượ ổ ớ
Đi u này đòi h i ROUTER ph i hi u bi t theo t ng protocol c th . Kháiề ỏ ả ể ế ừ ụ ể
ni m enhanced NAT nói đ n ki u NAT ph c t p đ c th c hi n v iệ ế ể ứ ạ ượ ự ệ ớ
nh ng hi u bi t theo t ng protocol c th đ làm cho nh ng protocol đóữ ể ế ừ ụ ể ể ữ
ho t đ ng đ c v i vi c đ nh tuy n gói tin.ạ ộ ượ ớ ệ ị ế
Trong s các protocol đ c bi t đó, thông d ng nh t là các protocolố ặ ệ ụ ấ
streaming media (ví d RTSP - Real Time Streaming Protocol). Đây cũng làụ
các protocol s d ng cân b ng t i ph bi n nh t, vì chúng c c kì ng n tàiử ụ ằ ả ổ ế ấ ự ố
nguyên m ng và tính toán khi ph i ph c v đ ng th i cho hàng trăm đ nạ ả ụ ụ ồ ờ ế
hàng ngàn ng i s d ng.ườ ử ụ
Các protocol streaming th ng g m có hai k t n i, m t k t n i đi u khi nườ ồ ế ố ộ ế ố ề ể
xây d ng trên TCP và m t k t n i d li u d a trên UDP. Đ kh i đ u,ự ộ ế ố ữ ệ ự ể ở ầ
client kh i t o m t kênh đi u khi n đ n m t well-known port trên server.ở ạ ộ ề ể ế ộ
Client và server s tho thu n các đi u kho n cho kênh đi u khi n. Sẽ ả ậ ề ả ề ể ự
tho thu n g m có IP c a server và s port c a server mà client s g i dả ậ ồ ủ ố ủ ẽ ử ữ
li u đ n trên k t n i d li u.ệ ế ế ố ữ ệ
N u các server có đ a ch IP private, ROUTER s th c hi n Destinationế ị ỉ ẽ ự ệ
NAT cho k t n i đi u khi n. Nh ng đ ng th i ROUTER cũng ph i xem cácế ố ề ể ư ồ ờ ả
thông tin tho thu n và thay đ i m i thông tin v đ a ch IP hay port màả ậ ổ ọ ề ị ỉ
server và client trao đ i sao cho client s g i d li u đ n VIP public chổ ẽ ử ữ ệ ế ứ
không ph i IP private c a server (nh ng thông tin này n m trong payloadả ủ ữ ằ
c a packet).ủ
H n n a, dest port đ c ch n trong quá trình tho thu n l i không bi tơ ữ ượ ọ ả ậ ạ ế
tr c đ c nên ph i x lý request ngay c khi port ch a đ c liên k tướ ượ ả ử ả ư ượ ế
đ n b t kỳ server nào.ế ấ
Tuy nhiên, nhi u doanh nghi p l i có nh ng chính sách b o m t trênề ệ ạ ữ ả ậ
t ng l a làm cho nh ng k t n i d li u trên n n t ng UDP có th khôngườ ử ữ ế ố ữ ệ ề ả ể
thành công. Do đó nhi u h th ng streaming media cho phép stream trênề ệ ố
n n HTTP, nghĩa là toàn b dòng d li u s đ c g i đi b ng k t n iề ộ ữ ệ ẽ ượ ử ằ ế ố