Với một địa chỉ IP "thật" (Public IP hay Registered
IP), sử dụng router, bạn có thể chia sẻ kết nối Internet cho hàng chục
đến hàng trăm máy tính khác nhau trong mạng nội bộ. Router làm điều đó
như thế nào? Bài viết sẽ giúp bạn hiểu rõ quá trình biên dịch địa chỉ
mạng (NAT) bên trong router (router ADSL), và hướng dẫn xây dựng máy
chủ dịch vụ nằm sau NAT, phục vụ nhu cầu chia sẻ.
NAT là gì?
Các máy tính cần địa chỉ IP để giao tiếp với nhau
trên mạng. Mỗi máy tính phải có địa chỉ IP phân biệt nhau - như địa chỉ
nhà. Tuy nhiên hiện nay, Internet ngày càng được sử dụng rộng rãi, các
dịch vụ web, tương tác trực tuyến ngày càng phát triển, số lượng máy
tính kết nối Internet ngày càng nhiều dẫn đến số lượng địa chỉ IPv4
thiếu hụt. IPv6 ra đời giúp tăng thêm số lượng địa chỉ IP tuy nhiên còn
phải mất thêm nhiều thời gian để được sử dụng rộng rãi (xem thêm các
bài ID:A0205_60, ID:A0711_110). Và NAT đã xuất hiện để giải quyết bài
toán thiếu hụt IPv4.
NAT (Network Address Translation) cho phép thiết bị
như bộ định tuyến (router), tường lửa (firewall) - nằm giữa mạng nội bộ
(LAN) và mạng Internet (Public Network) - chuyển đổi địa chỉ mạng, ghi
lại bảng thông tin những máy tính trong mạng nội bộ (client) đã gởi gói
tin (packet) ra ngoài Internet trên mỗi cổng (port) dịch vụ và gởi trả
những gói tin nhận được về đúng máy tính đó. NAT có nhiều dạng:
|
Hình 1: Trong Static NAT, máy tính có địa chỉ IP 192.168.1.10 luôn được router biên dịch đến địa chỉ IP 222.253.144.219 |
- NAT tĩnh (Static NAT): ánh xạ "một-một" giữa 1 địa
chỉ IP nội bộ (Private IP hay Unregistered IP) với 1 địa chỉ IP thật.
Nghĩa là một máy tính trong mạng nội bộ sẽ có tương ứng một địa chỉ IP
thật để truy cập Internet và các máy tính từ mạng Internet có thể truy
cập trực tiếp vào máy tính này trong mạng nội bộ thông qua địa chỉ IP
thật.
- NAT động (Dynamic NAT): ánh xạ 1 địa chỉ IP nội bộ
đến 1 địa chỉ IP thật trong nhóm địa chỉ IP thật. Bạn không phải cấu
hình ánh xạ từng địa chỉ IP nội bộ đến địa chỉ IP thật như Static NAT.
Ví dụ bạn có một nhóm 3 địa chỉ IP thật, thì tương ứng mỗi máy tính
trong mạng nội bộ sẽ được gán tự động 1 trong 3 địa chỉ IP thật này.
Tuy nhiên nếu 3 máy tính trong mạng nội bộ đang sử dụng hết 3 địa chỉ
IP thật thì máy tính thứ 4 sẽ không thể truy cập Internet, do đó bạn
cần có đủ địa chỉ IP thật cho các máy tính trong mạng truy cập Internet.
|
|
| Hình 2: Trong
Dynamic NAT, máy tính có địa chỉ IP 192.168.1.10 luôn được router biên
dịch đến địa chỉ đầu tiên 222.253.144.219 trong dãy địa chỉ IP từ
222.253.144.219 đến 222.253.144.221 |
- NAT Overload (là dạng NAT được sử dụng phổ biến):
ánh xạ "nhiều-một" giữa các địa chỉ IP nội bộ đến một địa chỉ IP thật
bằng cách sử dụng các cổng khác nhau. NAT Overload là sự kết hợp của
Static NAT, Dynamic NAT và PAT (Port Address Translation) hay còn gọi
là NAPT (Network Address Port Translation) giúp bạn chia sẻ kết nối
Internet cho nhiều máy tính trong mạng nội bộ chỉ với một địa chỉ IP
thật.
|
Hình
3: Trong NAT Overload, các máy tính trong mạng nội bộ được router biên
dịch đến cùng một địa chỉ IP 222.253.144.219 nhưng với các cổng giao
tiếp khác nhau. |
Cơ chế hoạt động NAT
Ví dụ, client (192.168.1.10) gửi yêu cầu truy cập
đến máy chủ ftp (203.162.101.19) qua cổng 21 (cổng ftp mặc định) ngoài
Internet.
|
|
| Hình 4: Máy tính gửi gói tin yêu cầu đến máy chủ ftp |
Khi gói tin từ client gửi đến router, router kiểm
tra tính đúng đắn của gói tin (gói tin không bị sửa đổi và trong IP
header có một địa chỉ IP đích hợp lệ), sau đó router tạo một "ô thông
tin" và ghi nhận vào bảng NAT - địa chỉ IP nguồn (Source IP Address)
nội bộ và cổng nguồn 3000 (cổng do máy tính cấp phát).
|
Hình 5: Gói tin của máy tính trước khi đến router.. |
|
|
| Hình 6: Quá trình xử lý gói tin trong router |
Tiếp theo router thay đổi địa chỉ IP nguồn nội bộ
của client từ 192.168.1.10 thành địa chỉ IP nguồn thật của router là
222.253.144.219 - địa chỉ IP nguồn của client phải bị thay đổi vì chỉ
có các địa chỉ IP thật trên Internet mới có thể giao tiếp với nhau - và
cổng nguồn vẫn giữ nguyên là 3000 - khi một client gửi gói tin đến
client khác, cổng nguồn của gói tin gửi đi sẽ được chuyển thành cổng
đích của gói tin trả lời. (Ví dụ: client A gửi gói tin cho client B với
cổng nguồn là 3000, khi client B trả lời thì cổng đích của nó cũng là
3000. Bằng cách này client A biết được đây là gói tin trả lời cho yêu
cầu mà nó vừa gửi đi). Và đây cũng là lý do mà router không thay đổi
cổng nguồn gói tin gửi ra Internet cũng như cổng đích của gói tin nhận
về. Cổng truy cập dịch vụ 21 và địa chỉ IP đích 203.162.101.19 không bị
thay đổi trong quá trình router biên dịch và gửi gói tin.
|
Hình 7: Gói tin sau khi router đã thay đổi IP nguồn. |
Máy chủ ngoài Internet nhận được gói dữ liệu sẽ phản
hồi lại cho router. Router kiểm tra bảng thông tin NAT và gửi gói tin
phản hồi này đến đúng máy tính đã yêu cầu.
|
|
| Hình 8: Thông tin trả lời từ máy chủ dịch vụ ngoài Internet. |
Router xử lý gói tin phản hồi từ máy chủ ngoài Internet như thế nào?
Máy chủ ngoài Internet gửi thông tin trả lời đến
router qua địa chỉ IP thật 222.253.144.219, cổng truy cập 3000 không
đổi. Router tìm thông tin trong bảng NAT, nhận thấy máy tính A cũng có
cổng 3000 và có địa chỉ IP đích, cổng truy cập đích trùng với địa chỉ
IP nguồn, cổng nguồn của gói tin trả lời. Vì vậy router sẽ chuyển gói
tin đến cho client.
|
Hình 9: NAT xử lý các gói tin từ 3 client khác nhau. Chỉ địa chỉ IP gốc thay đổi trong quá trình router biên dịch. |
Hình 9 với ba client trong mạng nội bộ cùng truy cập Internet sẽ giúp chúng ta hiểu rõ hơn về NAT Overload.
|
|
| Hình 10: Hai máy tính gửi gói tin cùng cổng nguồn |
Máy tính 1, máy tính 2 trong mạng nội bộ thực hiện
yêu cầu truy cập máy chủ chia sẻ tập tin ngoài Internet có địa chỉ IP
thật 203.162.101.19, với cổng truy cập dịch vụ 21. Máy tính 3 trong
mạng nội bộ thực hiện lệnh telnet đến một máy chủ khác có địa chỉ IP
thật 203.113.120.120, cổng truy cập mặc định 23. Router ghi nhận thông
tin vào bảng NAT và thay đổi địa chỉ IP nguồn nội bộ thành địa chỉ IP
nguồn thật 222.253.144.219, nó vẫn giữ nguyên các cổng nguồn 3000,
2600, 3850, cổng truy cập dịch vụ 21, 23 và địa chỉ đích trong quá
trình router biên dịch, gửi gói tin.
Vậy NAT xử lý như thế nào với trường hợp hai máy
tính trong mạng nội bộ - có cùng cổng nguồn khi gửi gói tin đến router
- truy cập máy chủ dịch vụ ngoài Internet?
|
Hình 11: Gói tin của máy tính 2 trước khi đến router. |
Giả sử, máy tính 1 (địa chỉ 192.168.1.10) có cổng
nguồn 3000, đang chờ thông tin trả lời từ máy chủ FTP ngoài Internet.
Máy tính 2 (địa chỉ IP 192.168.1.14) cũng có cổng nguồn 3000, truy cập
máy chủ web địa chỉ IP thật 203.113.120.121.
|
|
| Hình 12: Router xử lý hai gói tin cùng cổng nguồn |
Khi gói tin từ máy tính 2 gửi đến router, router
kiểm tra tính đúng đắn của gói, sau đó router tạo một thêm "ô thông
tin" và ghi nhận vào bảng NAT - địa chỉ IP nguồn nội bộ và cổng nguồn
3000 (cổng do máy tính 2 cấp phát).
Trong bảng NAT, bạn thấy rằng cả hai gói tin đều có
cùng cổng nguồn 3000. Trong đó, router đang sử dụng cổng nguồn 3000
biên dịch cho gói tin thứ 1 - và vẫn chưa nhận thông tin trả lời từ máy
chủ dịch vụ cho gói tin này - vì vậy router không thể giữ nguyên cổng
nguồn 3000 khi biên dịch cho gói tin thứ 2 nên nó sẽ gán cổng nguồn mới
là 7200 (NAT Overload có thể gán số cổng nguồn trong khoảng từ 1025 đến
65500).
 Hình 13: Gói tin của máy tính 2 sau khi router đã thay đổi địa chỉ IP nguồn, cổng nguồn. |
Khi có thông tin trả lời gói tin thứ 2 - router sẽ đối chiếu vào bảng NAT và chuyển dữ liệu về đúng máy tính 2.
Ưu điểm của NAT
Ngoài việc giúp giải quyết thiếu hụt IPv4, NAT còn có ưu điểm khác như:
- Bảo mật mạng: NAT bảo vệ các máy tính trong mạng
nội bộ tránh sự xâm nhập trái phép từ Internet (trừ khi bạn thiết lập
luật cho phép truy cập). Bạn có thể truy cập web, tải tập tin từ
Internet về máy tính trong mạng nội bộ nhưng những người ngoài Internet
không thể sử dụng địa chỉ IP thật trên router để truy cập vào máy bạn.
- Quản trị mạng dễ dàng: Bạn có thể thay đổi cài đặt
ứng dụng dịch vụ web, ftp... trên các máy tính khác nhau mà không phải
lo lắng việc mất kết nối. Đơn giản chỉ thay đổi việc ánh xạ đến máy
tính chạy ứng dụng dịch vụ mới. Bạn có thể thay đổi địa chỉ mạng nội bộ
dễ dàng vì các địa chỉ này riêng biệt, độc lập với địa chỉ IP thật.
NAT và máy chủ nằm sau
| Một số cổng truy cập thông dụng |
| Dịch vụ, Ứng dụng |
Giao thức |
Cổng số |
| File Transfer Protocol (FTP) |
TCP |
21 |
| SSH Remote Login Protocol |
UDP |
22 |
| Telnet |
TCP |
23 |
| Simple Mail Transfer Protocol (SMTP) |
TCP |
25 |
| Domain Name Server (DNS) |
UDP |
53 |
| WWW Server (HTTP) |
TCP |
80 |
| Post Office Protocol ver.3 (POP3) |
TCP |
110 |
| Point-to-Point Tunneling Protocol (PPTP) |
TCP |
1723 | |
NAT giúp các máy tính trong mạng nội bộ có thể truy
cập Internet chỉ bằng một địa chỉ IP thật. Tuy nhiên, điều này gây khó
khăn cho việc xây dựng máy chủ web, ftp trong mạng nội bộ. Chẳng hạn,
bạn dựng một máy chủ ftp trong mạng nội bộ. Máy tính bên ngoài Internet
gửi yêu cầu truy cập dịch vụ đến router, router nhận yêu cầu nhưng
không biết chuyển đến máy tính nào trong mạng nội bộ vì trong bảng NAT
không ghi nhận bất kỳ thông tin liên quan đến cổng 21 máy chủ ftp, do
đó router hủy yêu cầu. Một số ứng dụng chia sẻ tập tin ngang hàng P2P
(như eMule, BitTorrent) và các dịch vụ trực tuyến như video game (Xbox
360, PlayStation) cũng yêu cầu máy tính trong mạng nội bộ hoạt động như
một máy chủ.
Giải pháp chuyển tiếp cổng dịch vụ (Port Forwarding)
giúp giải quyết việc dựng máy chủ dịch vụ sau NAT. Chúng ta biết rằng
mỗi máy tính có một địa chỉ IP duy nhất để phân biệt nhau. Một địa chỉ
IP (giao thức TCP/IP) có nhiều cổng truy cập nhằm giúp máy tính sử dụng
nhiều chương trình gửi nhận dữ liệu trong cùng một thời điểm. Dữ liệu
được gửi từ máy tính này đến máy tính khác thông qua địa chỉ IP và cổng
truy cập. Tuy nhiên để đảm bảo việc truy xuất dữ liệu từ máy tính bên
ngoài Internet vào đúng máy chủ dịch vụ trong mạng nội bộ, một cổng
truy xuất dịch vụ chỉ được sử dụng bởi một chương trình vào một thời
điểm. Các router khi thiết lập chuyển tiếp cổng luôn yêu cầu xác định
thêm địa chỉ IP nội bộ của máy chủ dịch vụ.
Chuyển tiếp cổng dựa trên cổng truy cập của máy tính
nhằm hướng dẫn router chuyển dữ liệu đến đúng máy tính trong mạng nội
bộ. Chẳng hạn với ví dụ máy chủ ftp ở trên, khi bạn thiết lập luật
chuyển tiếp cổng (hay mở cổng) trên router, router nhận yêu cầu truy
cập ftp từ máy tính bên ngoài Internet sẽ chuyển ngay đến cổng 21 - của
máy chủ ftp trong mạng nội bộ.
|
|
| Hình 14: Mô hình kết nối, truy cập máy chủ ftp, web |
Mô hình giới thiệu ở đây sẽ giúp bạn hiểu rõ hơn
cách một máy tính với một địa chỉ IP nội bộ có thể phục vụ nhiều chương
trình ứng dụng khác nhau dựa trên cổng truy cập: một máy tính chạy hệ
điều hành Windows XP có địa chỉ IP nội bộ 192.168.1.10. Máy tính này
được cấu hình thành hai máy chủ dịch vụ ftp (phần mềm miễn phí, nguồn
mở File Zilla) và dịch vụ web (phần mềm miễn phí, nguồn mở Vertrigo)
cho phép các máy tính bên ngoài Internet tải tập tin, truy cập web.
Chúng ta sử dụng router ADSL DrayTek Vigor2700, địa chỉ IP cố định
222.253.144.219 (IP tĩnh) để thực hiện mô hình này.
Cài đặt máy chủ dịch vụ FTP
Tải chương trình FTP Server File Zilla ở
http://filezilla-project.org. Sau đó tiến hành cài đặt chương trình vào
máy tính và chạy File Zilla. Bạn sẽ thấy giao diện đầu tiên như sau:
 |
| Hình 16 |
Cổng 14147 là cổng phục vụ việc quản trị FileZilla trên máy tính.
Bạn nhấn OK để vào giao diện chính của chương trình.
Máy chủ FTP File Zilla có cổng truy cập mặc định là
21 - cổng này giúp các máy tính trong mạng nội bộ, ngoài mạng Intenet
truy cập, chia sẻ tập tin (chọn trình đơn Edit/Server Option để xem
thông tin tổng quát, nhấn OK để xác nhận thông tin).
Tiếp theo, bạn chọn biểu tượng để tạo tài khoản truy cập: nhấn "add" và tạo tài khoản với tên truy cập là test.
Chọn Shared folders để chỉ nơi lưu trữ các tập tin.
Cấp quyền truy cập (Read, Write, Delete...) cho tài khoản test. Nhấn OK
để xác nhận.
Bạn tiến hành truy cập thử máy chủ ftp. Từ máy tính,
mở trình duyệt web, nhập địa chỉ ftp://localhost (hoặc
ftp://192.168.1.10 hay ftp://127.0.0.1) sẽ xuất hiện bảng yêu cầu đăng
nhập
Bạn nhập User name là test và nhấn Log On. Bạn sẽ thấy thư mục dùng chia sẻ tập tin.
Vậy là bạn đã xây dựng thành công máy chủ dịch vụ ftp có cổng truy cập mặc định 21 trên máy tính địa chỉ IP 192.168.1.10
Cài đặt máy chủ dịch vụ web
Tải chương trình Vertrigo ở
http://vertrigo.sourceforge.net. Sau đó tiến hành cài đặt chương trình
vào máy tính. Khi hoàn thành việc cài đặt, xem như bạn đã xây dựng
thành công máy chủ dịch vụ web - quá đơn giản phải không nào! Chạy
Vertrigo, bạn sẽ thấy giao diện đầu tiên như hình 22
 Hình 21 |
Nhấn "Hide this windows and start server" để bắt đầu khởi động máy chủ dịch vụ web
Bạn nhấn phải chuột trên thanh biểu tượng nằm ở khay hệ thống (system tray).
Xuất hiện thanh trình đơn với đầy đủ thông số để bạn tùy chỉnh cấu hình.
Vào mục "Help and readme", bạn sẽ thấy máy chủ web
Vertrigo có cổng truy cập mặc định là 80 - cổng này giúp các máy tính
trong mạng nội bộ, ngoài mạng Intenet truy cập vào máy chủ dịch vụ web.
Tiếp theo, bạn cần có một trang chủ để thử nghiệm.
Bạn tạo một tập tin text có tên "index.txt" và nhập nội dung như hình
26. Sau đó đổi đuôi .txt thành .php
Trên thanh trình đơn của Vertrigo, chọn mục "WWW
folder", bạn sẽ được dẫn đến thư mục lưu trữ các trang web. Bạn chép đè
tập tin "index.php" có nội dung ở trên vào thư mục này.
Bạn mở trình duyệt web và nhập địa chỉ http://localhost để mở ra trang web với nội dung trong tập tin index.php vừa tạo.
Vậy là bạn đã xây dựng thành công máy chủ dịch vụ
web và một trang chủ có cổng truy cập mặc định 80 trên máy tính địa chỉ
IP 192.168.1.10.
Cấu hình chuyển tiếp cổng trên router ADSL Vigor2700
Từ máy tính, cắm dây mạng kết nối trực tiếp vào
Vigor2700. Mở trình duyệt web, nhập địa chỉ 192.168.1.1 (mặc định của
router), nhấn OK để đăng nhập (ID mặc định trống). Sau khi đăng nhập
thành công, bạn sẽ thấy giao diện như hình 29
Thiết lập các thông số trên Vigor2700 để máy tính truy cập Internet.
Vigor2700 có 3 chế độ thiết lập luật chuyển tiếp cổng (hình 30):
- Chuyển hướng cổng (Port Redirection): thường sử
dụng cho máy chủ web, ftp, email với cổng truy xuất cụ thể. Mục đích
chính là chuyển tất cả yêu cầu truy cập từ các máy tính ngoài Internet
đến trực tiếp máy chủ dịch vụ.
- Vùng truy cập tự do (DMZ host): thường sử dụng cho
các ứng dụng game, hội nghị truyền hình với các cổng truy xuất không
xác định. Máy tính trong vùng này "phơi bày" toàn bộ các cổng ra
Internet.
- Cổng mở (Open Ports): cho phép bạn thiết lập luật
chuyển tiếp cổng trên dãy các cổng liên tiếp nhau. Thường sử dụng cho
các ứng dụng chia sẻ tập tin ngang hàng, IP Camera.
Chúng ta sẽ sử dụng chế độ chuyển hướng cổng (Port
Redirection) cho phép các máy tính ngoài Internet truy cập vào máy tính
vừa xây dựng máy chủ dịch vụ ftp, web ở trên.
Bạn chọn mục NAT/ Port Redirection và xác lập thông số như sau:
- Service Name: tên dịch vụ (bạn tự đặt tên để dễ nhớ).
- Protocol: giao thức cổng sử dụng (ftp, web sử dụng giao thức TCP).
- Public port: cổng giao tiếp với bên ngoài
Internet, giúp router "lắng nghe" các yêu cầu truy cập (mặc định ftp
cổng 21, web cổng 80).
- Private IP: địa chỉ IP nội bộ của máy tính chạy máy chủ dịch vụ ftp, web (địa chỉ 192.168.1.10).
- Private Port: cổng giao tiếp của máy chủ dịch vụ ftp, web (mặc định ftp cổng 21, web cổng 80).
- Active: kích hoạt luật chuyển tiếp cổng trên router.
Sau đó bạn nhấn OK để chấp thuận toàn bộ luật chuyển tiếp cổng đã thiết lập.
Tiếp tục bạn chọn mục "System
Maintenance/Management" để mở tính năng cho phép quản lý Vigor2700 từ
xa qua web trên Internet. Nhấn chuột chọn "Allow management from
Internet", lưu ý thông số HTTP Port: 80 trong Management Port Setup.
Vậy bạn đã cấu hình, thiết lập xong luật chuyển tiếp
cổng trên router - có địa chỉ IP thật cố định là 222.253.144.219 - cho
phép các máy tính từ Internet có thể truy cập vào máy chủ ftp, web
trong mạng nội bộ. Đồng thời, bạn cũng đã mở tính năng cho phép quản lý
Vigor2700 từ xa trên Internet.
Bây giờ, bạn sử dụng máy tính từ bên ngoài mạng nội
bộ. Mở trình duyệt, nhập địa chỉ ftp://222.253.144.219, sẽ xuất hiện
bảng yêu cầu đăng nhập. Bạn nhập User name là test và nhấn Log On, vậy
là bạn đã truy cập thành công vào máy chủ ftp trong mạng nội bộ.
Tiếp theo, bạn muốn truy cập website vừa xây dựng
trong mạng nội bộ, bạn nhập địa chỉ http://222.253.144.219. Bạn thấy
xuất hiện bảng yêu cầu đăng nhập vào router Vigor2700, thật kỳ lạ!
Thật sự, do cả Vigor2700 và máy chủ dịch vụ web đều
sử dụng cùng một cổng truy cập 80. Do đó, khi router xử lý các đề nghị
truy cập từ Internet trên cổng 80, nó sẽ ưu tiên chuyển tiếp vào phần
quản lý Vigor2700 từ xa qua web trên Internet mà bạn đã cấu hình.
Vậy làm cách nào để bạn có thể truy cập được máy chủ
web trong mạng nội bộ với cổng truy cập mặc định 80? Bạn hãy dùng máy
tính trong mạng nội bộ, cắm dây mạng kết nối trực tiếp vào router
Vigor2700. Mở trình duyệt web, nhập địa chỉ 192.168.1.1 và đăng nhập
vào router, bạn vào mục "System Maintenance/Management", chỉnh sửa HTTP
Port là 8080 trong phần Management Port Setup. Nhất OK để xác nhận.
Lúc này, cổng truy cập của máy chủ web và quản lý
Vigor2700 từ xa khác nhau, vì vậy bạn có thể truy cập máy chủ web bằng
địa chỉ http://222.253.144.219, để quản lý từ xa Vigor2700 bạn cần nhập
địa chỉ http://222.253.144.219:8080.
Hiện nay hầu hết mạng Internet ADSL dùng cho gia
đình đều sử dụng địa chỉ IP thật dạng động (thay đổi mỗi khi router
ADSL bị mất kết nối và thực hiện kết nối lại với nhà cung cấp dịch vụ
Internet). Do đó các máy tính truy cập từ Internet sẽ gặp khó khăn khi
không biết được chính xác địa chỉ IP thật của router ADSL để có thể
truy cập vào máy chủ web, ftp trong mạng nội bộ. Để giải quyết vấn đề
IP thật dạng động bạn có thể tham khảo bài viết đăng ký dịch vụ DNS
miễn phí (ID: A0308_106).