NAT hoạt động trên một router Cisco và được thiết kế để đơn giản hóa
địa chỉ IPv4 và bảo tồn. NAT cho phép địa chỉ riêng IPv4 sử dụng địa chỉ IPv4
không đăng kí để kết nối với Internet. Thông thường, NAT kết nối hai mạng
lưới và dịch địa chỉ riêng trong mạng nội bộ (inside local) vào địa chỉ công cộng (inside global) trước khi gói tin được chuyển tiếp đến một mạng khác. Là một phần của chức năng này, bạn có thể cấu hình NAT để quảng cáo chỉ có một
địa chỉ cho toàn bộ mạng thế giới bên ngoài. Quảng cáo chỉ có một địa chỉ có hiệu quả ẩn mạng nội bộ từ thế giới bên ngoài, cung cấp thêm tính bảo mật cho hệ thống mạng bên trong. Hình 2-1 cho thấy một ví dụ về sự biên dịch địa chỉ
Hình 2-1: Network Address Translations
Bất kỳ thiết bị nằm giữa một mạng nội bộ và mạng công cộng như tường lửa,
router, hoặc một máy tính – sử dụng NAT, được định nghĩa trong RFC 1631.
Trong thuật ngữ NAT, mạng bên trong (inside network) là tập hợp của các
mạng để dịch. Mạng lưới bên ngoài (outside network) đề cập đến tất cả các địa
chỉ khác. Thông thường đây là những địa chỉ hợp lệ trên Internet.
Cisco định nghĩa về NAT:
■ Inside local address: Các địa chỉ IPv4 được gán cho một host trên mạng bên
trong. Các địa chỉ bên trong có thể không phải là một địa chỉ IPv4 được gán bởi
Trung tâm Mạng lưới thông tin hoặc nhà cung cấp dịch vụ.
■ Inside global address: Một địa chỉ IPv4 hợp pháp được gán bởi các nhà cung cấp NIC hoặc nhà cung cấp dịch vụ mà đại diện cho một hoặc nhiều địa chỉ IPv4 bên trong đến với thế giới bên ngoài.
■ Outside local address: Các địa chỉ IPv4 của một host bên ngoài khi nó xuất
hiện với mạng bên trong. Không nhất thiết phải hợp pháp, các địa chỉ bên ngoài
■ Outside global address: Các địa chỉ IPv4 được gán cho một host trên mạng
bên ngoài của chủ sở hữu host. Các địa chỉ bên ngoài được cấp phát từ một địa
chỉ trên toàn cục định tuyến hay không gian mạng.
NAT có nhiều hình thức và có thể làm việc theo nhiều cách sau:
■ Static NAT: Gán địa chỉ IPv4 không đăng ký với một địa chỉ IPv4 đăng ký
(one to one). NAT tĩnh đặc biệt hữu ích khi một thiết bị được truy cập từ bên ngoài mạng.
■ Dynamic NAT: Gán địa chỉ IPv4 không đăng ký với một địa chỉ IPv4 đăng
ký từ một nhóm các địa chỉ IPv4 đăng ký.
■ NAT overloading: Gán nhiều địa chỉ IPv4 không đăng ký với một địa chỉ IPv4 đơn đăng ký (many to one) bằng cách sử dụng các cổng khác nhau. Quá tải
(overloading) còn được gọi là PAT và là một dạng của NAT động.
NAT cung cấp những lợi ích hơn khi sử dụng các địa chỉ công cộng:
■ Loại bỏ sự cần thiết phải gán lại địa chỉ cho tất cả các host có yêu cầu truy cập
ra bên ngoài, tiết kiệm thời gian và tiền bạc.
■ Bảo tồn địa chỉ thông qua ghép kênh các cổng ứng dụng. Với NAT, host nội
bộ có thể chia sẻ một địa chỉ IPv4 đăng ký duy nhất cho tất cả các thông tin liên lạc bên ngoài. Trong loại cấu hình, tương đối ít các địa chỉ bên ngoài là cần thiết để hỗ trợ nhiều host nội bộ, do đó bảo tồn các địa chỉ IPv4.
■ Bảo vệ an ninh mạng. Bởi vì các mạng cá nhân không quảng cáo địa chỉ của
họ hoặc cấu trúc liên kết nội bộ, họ vẫn an toàn hợp lý khi họ đạt được kiểm
soát truy cập bên ngoài kết hợp với NAT.
Một trong những tính năng chính của NAT là PAT, mà cũng được gọi là "overload" trong cấu hình Cisco IOS. PAT cho phép bạn chuyển nhiều địa chỉ
nội bộ thành một địa chỉ bên ngoài duy nhất, cơ bản cho phép các địa chỉ nội bộ để chia sẻ một địa chỉ bên ngoài. Hình 2-2 cho thấy một ví dụ về dịch địa chỉ Port. Danh sách sau đây nêu bật những hoạt động của PAT:
Hình 2-2: Port Address Translation
■ PAT sử dụng số nguồn cổng duy nhất trên địa chỉ IPv4 để phân biệt giữa các bản dịch. Bởi vì số cổng được mã hóa trong 16 bit, tổng số phiên nội bộ NAT có thể dịch thành địa chỉ bên ngoài, về mặt lý thuyết, có đến 65.536.
■ PAT nỗ lực để bảo quản port nguồn gốc. Nếu các cổng nguồn đã được giao, PAT nỗ lực để tìm số cổng đầu tiên có sẵn. Nó bắt đầu từđầu của nhóm cổng phù hợp, 0 đến 511, 512-1023, hoặc 1024-65535. Nếu PAT không tìm thấy một cổng có sẵn từ các nhóm cổng phù hợp và nếu có nhiều hơn một địa chỉ IPv4 bên ngoài được cấu hình, PAT di chuyển đến địa chỉ IPv4 tiếp theo và cố gắng bố trí các cổng nguồn gốc một lần nữa. PAT tiếp tục cố gắng để bố trí các cổng nguồn gốc cho đến khi nó chạy ra cổng hiện có và địa chỉ IPv4 bên ngoài.
1. Biên dịch địa chỉ nguồn bên trong:
Ta có thể dịch các địa chỉ IPv4 riêng vào địa chỉ IPv4 toàn cầu duy nhất khi
đang giao tiếp bên ngoài mạng. Ta có thể cấu hình dịch tĩnh hoặc động địa chỉ
nguồn bên trong.
Hình 2-3 minh họa một router dịch một địa chỉ nguồn bên trong một mạng vào một địa chỉ nguồn bên ngoài mạng.
Hình 2-3: Biên dịch một địa chỉ với NAT. Các bước để dịch một địa chỉ nguồn bên trong như sau:
Bước 1:Người dùng tại host 1.1.1.1 sẽ mở ra một kết nối tới host B.
Bước 2:Các gói tin đầu tiên mà router nhận được từ host 1.1.1.1, router sẽ kiểm tra bảng NAT của nó.
• Nếu một mục biên dịch tĩnh được cấu hình, các bộđịnh tuyến đi đến Bước 3. • Nếu không có mục biên dịch nào tồn tại, router sẽxác định rằng địa chỉ nguồn 1.1.1.1 (SA 1.1.1.1) phải được dịch tựđộng. Router sau đó chọn một địa chỉ
hợp pháp, có giá trị toàn cục từcác pool địa chỉ động và tạo ra một mục biên dịch (trong ví dụ, 2.2.2.2). Loại mục này được gọi là một mục nhập đơn giản (simple entry).
Bước 3: Router thay thếđịa chỉ nguồn bên trong nội bộ của host 1.1.1.1 với mục biên dịch địa chỉ toàn cục và chuyển tiếp các gói tin.
Bước 4: Host B nhận được gói dữ liệu và phản hồi tới host 1.1.1.1 bằng cách sử
địa chỉ nội bộ bên trong của host 1.1.1.1 và chuyển tiếp các gói tin đến host 1.1.1.1. Host 1.1.1.1 nhận được gói và tiếp tục cuộc trao đổi thông tin. Router thực hiện bước 2 đến 5 cho mỗi gói.
Bảng sau minh họa thứ tự mà một router tiến hành thẩm tra luồng dữ liệu, tuỳ
thuộc vào hướng của bản dịch.
Local to global Global to local
1. Kiểm tra danh sách đầu vào truy cập nếu sử dụng Ipsec.
2. Thực hiện giải mã-cho công nghệ
mã hóa hoặc IPsec.
3. Kiểm tra danh sách truy cập vào. 4. Kiểm tra tốc độ giới hạn của đầu vào.
5. Thực hiện thống kê các gói tin vào. 6. Thực hiện chính sách định tuyến. 7. Chuyển gói tin.
8. Chuyển tới cache web.
9. Thực hiện NAT bên trong ra bên ngoài (cục bộđến toàn cục).
10. Kiểm tra crypto map và đánh dấu cho việc mã hóa nếu thích hợp.
11. Kiểm tra danh sách truy cập ra bên ngoài.
1. Kiểm tra danh sách đầu vào truy cập nếu sử dụng IPsec.
2. Thực hiện giải mã-cho công nghệ
mã hóa hoặc IPsec.
3. Kiểm tra danh sách truy cập vào. 4. Kiểm tra tốc độ giới hạn của đầu vào.
5. Thực hiện thống kê các gói tin vào. 6. Thực hiện NAT ngoài vào trong (chuyển đổi địa chỉ từ toàn cục đến nội bộ).
7. Thực hiện chính sách định tuyến. 8. Chuyển gói tin.
9. Chuyển tới cache web.
10. Kiểm tra crypto map và đánh dấu cho việc mã hóa nếu thích hợp.
11. Kiểm tra danh sách truy cập ra bên ngoài. 12. Kiểm tra CBAC. 13. TCP đánh chặn. 14. Thực hiện mã hóa. 15. Thực hiện xếp hàng đợi. IPsec = IP security
CBAC = Context-Based Access Control
Để cấu hình biên dịch từ địa chỉ tĩnh bên trong trên router, làm theo các bước
sau:
Bước 1 Thiết lập biên dịch tĩnh giữa một địa chỉ nội bộ bên trong và một địa chỉ
bên trong toàn cục
Router(config)#ip nat inside source static local-ip global-ip.
Bước 2 Xác định và đánh dấu các giao diện cổng bên trong.
Router(config)#interfacetype number
Router(config-if)#ip nat inside
Bước 3:Xác định và đánh dấu các giao diện cổng bên ngoài.
Sử dụng lệnh show ip nat translation trong chếđộ EXEC để hiển thị thông tin biên dịch, như thể hiện ởđây:
2. Cơ chế NAT tĩnh:
Ví dụ này cho thấy việc sử dụng các phương pháp gán địa chỉ riêng biệt với NAT tĩnh cho mạng, như hình 2-4. Router biên dịch các gói tin từ host 10.1.1.2
đến một địa chỉ nguồn của 192.168.1.2.
Hình 2-4: NAT tĩnh
Để cấu hình biên dịch động địa chỉ nguồn, theo các bước sau:
Bước 1: Xác định một pool của các địa chỉ toàn cục được cấp phát khi cần thiết.
Router(config)#ip nat pool name start-ip end-ip {netmask netmask |
prefix-lengthprefix-length}
Dùng câu lệnh no ip nat poolđể bỏ cấu hình trên. Router(config)#interfacetype number
Router(config)#access-list access-list-number permit source [source- wildcard]
Bước 3: Thiết lập biên dịch động các địa chỉ nguồn, quy định cụ thể ACL đã
được định nghĩatrong bước trước.
Router(config)#ip nat inside source listaccess-list-numberpoolname
Bước 4:Xác định và đánh dấu các giao diện cổng bên trong.
Router(config)#interfacetype number
Router(config)#ip nat inside
Bước 5:Xác định và đánh dấu các giao diện cổng bên ngoài.
Router(config)#interfacetype number
Router(config)#ip nat outside
Sử dụng lệnh ip nat translations trong chếđộ EXEC để hiển thị thông tin biên dịch.
3. Cơ chếNAT động:
Ví dụ trong hình 2-5 cho thấy sự chuyển tất cả các địa chỉ nguồn mà thông qua 1 ACL, có nghĩa là một địa chỉ nguồn từ mạng 192.168.1.0/24, vào một địa chỉ
từ các pool có tên là net-208. Pool địa chỉ từ 171.69.233.209/28 đển 171.69.233.222/28.
Hình 2-5: NAT động.
4. Overloading một địa chỉ toàn cục bên trong:
Bạn có thể bảo tồn các địa chỉ trong pool địa chỉ bên trong toàn cục bằng cách
cho phép các router sử dụng một địa chỉ toàn cục bên trong cho nhiều địa chỉ
nội bộ bên trong. Khi overloading này được cấu hình, các bộ định tuyến duy trì
đầy đủ thông tin từ các giao thức cao cấp-thí dụ, số cổng TCP hoặc UDP-để
dịch địa chỉ bên trong toàn cục trở lại vào đúng địa chỉ nội bộ bên trong. Khi nhiều địa chỉ nội bộ bên trong gán đến một địa chỉ toàn cục bên trong, các số
cổng TCP hay UDP của mỗi host sẽ dùng để phân biệt giữa các địa chỉ nội bộ.
Hình 2-6 minh họa hoạt động NAT khi một địa chỉ toàn cục bên trong đại diện
cho nhiều địa chỉ nội bộ bên trong. Các số cổng TCP hoạt động giải quyết vấn đề phân biệt các địa chỉ.
Hình 2-6: Overloading một địa chỉ toàn cục bên trong.
Cả host B và host C nghĩ rằng họ đang nói chuyện với một host duy nhất tại địa
chỉ 2.2.2.2. Thật ra họ đang nói chuyện với các host khác nhau, số cổng chính là sự khác biệt. Trong thực tế, nhiều host bên trong có thể chia sẻ địa chỉ IPv4
trong toàn cục bằng cách sử dụng nhiều số cổng.
Router thực hiện quá trình khi overloading các địa chỉ toàn cục bên trong như
sau:
Bước 1:Người dùng tại host 1.1.1.1 sẽ mở ra một kết nối tới host B.
Bước 2:Các gói tin đầu tiên mà router nhận được từ host 1.1.1.1 và router kiểm
tra bảng NAT của nó.
Nếu không có mục biên dịch tồn tại, router sẽ xác định địa chỉ 1.1.1.1 phải được
biên dịch và thiết lập một bản dịch của các địa chỉ nội bộ bên trong 1.1.1.1 vào một địa chỉ pháp lý toàn cục ở bên trong. Nếu quá tải (overloading) được kích
hoạt và bản dịch khác đang hoạt động, router sử dụng lại địa chỉ bên trong toàn cục từ các bản dịch đó và tiết kiệm đủ thông tin để có thể dịch trở lại. Loại mục được gọi là một mục mở rộng (extended entry).
Bước 3: Router thay thế địa chỉ nguồn bên trong nội bộ 1.1.1.1 với các lựa chọn bên trong địa chỉ toàn cục và chuyển tiếp các gói tin.
Bước 4 Host B nhận được gói dữ liệu và phản hồi tới host 1.1.1.1 bằng cách sử
dụng địa chỉ IPv4 toàn cục 2.2.2.2.
Bước 5: Khi router nhận được gói tin với địa chỉ IPv4 trong toàn cục, các bộ định tuyến thực hiện một bảng NAT tra cứu. Sử dụngcác địa chỉ bên trong toàn cục và cổng và địa chỉ toàn cục bên ngoài và cổng như là một key, các router
dịch địa chỉ trở lại vào địa chỉ nội bộ bên trong 1.1.1.1 và chuyển tiếp các gói tin đến host 1.1.1.1. Host 1.1.1.1 nhận được gói và tiếp tục cuộc đàm thoại.
Router thực hiện bước 2 đến 5 cho mỗi gói.
Để cấu hình overloading của các địa chỉ toàn cục bên trong theo các bước sau:
Bước 1:Xác định một standard ACL cho phép các địa chỉ đó sẽ được biên dịch.
Router(connfig)#access-list access-list-number permit source [source- wildcard]
Bước 2: Thiết lập bảng dịch nguồn động, quy định cụ thể ACL đã được định
nghĩa trong bước trước.
Router(config)#ip nat inside source list access-list-number interface
interfaceoverload
Dùng câu lệnh no ip nat inside sourceđể bỏ lệnh trên. Từ khóa overloaddùng để bật tính năng PAT.
Bước 3Xác định giao diện cổng bên trong.
Router(config)#interfacetype number
Router(config-if)#ip nat inside
Bước 4:Xác định các giao diện cổng bên ngoài.
Router(config)#interfacetype number
Router(config-if)#ip nat outside
Sử dụng lệnh show ip nat translations trong chế độ EXEC để hiển thị thông tin
ip nat translation {timeout | udp-timeout | dns-timeout | tcp-timeout | finrst-
timeout | icmp-timeout | pptp-timeout | syn-timeout | port-timeout} {seconds |
never}
II - Giải quyết vấn đề bảng dịch :
Khi có vấn đề kết nối trong một môi trường NAT, nó thường rất khó để xác định nguyên nhân của vấn đề. NAT thường là nguyên nhân, trong khi thực tế có
một vấn đề cơ bản. Khi bạn đang cố gắng xác định nguyên nhân của một vấn đề
kết nối IPv4, nó giúp loại bỏ NAT như là vấn đề tiềm năng. Thực hiện theo các bước sau để xác minh rằng NAT đang hoạt động như mong đợi:
Bước 1 Dựa trên cấu hình, xác định rõ những gì NAT phải đạt được. Bạn có thể xác định cấu hình NAT có vấn đề.
Bước 2 Sử dụng lệnh show ip nat translationsđể xác định xem bản dịch đúng
chưa.
Bước 3 Kiểm tra sự chuyển đổi địa chỉ đang xảy ra bằng cách sử dụng lệnh
show và debug.
Bước 4 Xem xét cụ thể những gì đang xảy ra với các gói tin, và xác minh rằng các router có các thông tin định tuyến chính xác cho các địa chỉ dịch chuyển các
gói tin.
Nếu việc chuyển đổi địa chỉ không tương ứng trong bảng dịch, xác minh các
mục sau đây:
• Không có ACL hướng trong để từ chối gói tin vào các bộ định tuyến NAT.
• Các ACL được tham chiếu bởi lệnh NAT cho phép tất cả các mạng cần thiết. • Các pool có địa chỉ NAT đủ.
• Các giao diện cổng có đúng với NAT vào trong hay NAT ra ngoài.
Trong môi trường mạng đơn giản, nó rất hữu ích để theo dõi số liệu thống kê NAT bằng câu lệnh show ip nat statistics. Tuy nhiên, trong một môi trường
NAT phức tạp hơn với một số bản dịch đang diễn ra, lệnh này cho thấy không
còn hữu ích. Trong trường hợp này, nó có thể là cần thiết để chạy các lệnh