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 ế
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 ượ ế