Ở trong bài viết này chúng ta sẽ giải thích được cách cấu hình NAT như thế nào bằng phần mềm giả lập GNS3.
Chú ý: Nếu bạn không chắc chắn kiến thức về NAT, làm ơn đọc bài viết sau Network Address Translation NAT Tutorial
Để cấu hình static NAT chúng ta cần hoàn thành một số công việc sau:
* Xác định inside hoặc outside trên interfaces của routers
*Xác định được static mappping giữa địa chỉ inside và địa chỉ outside:
+ Static NAT:
Để làm rõ những vấn đề này, chúng ta sẽ cấu hình static NAT trong GNS3. Bạn mở GNS3 và thiết kế mô hình giống như dưới:
(Sử dụng IOS: c2600-bin-mz.123-6f.bin nhưng bạn có thể sử dụng phiên bản khác)
Chúng ta nên sử dụng 3 routers trong mô hình này nhưng tôi muốn tiết tiệm RAM và chứng minh ping từ loopback interface ra bên ngoài như thế nào vì vậy tôi chỉ sử dụng 2 :). Cho nên chúng ta nên cấu hình loopback interface của R0 như địa chỉ nguồn (source IP address) và interface fa0/0 của R0 như "outgoing static NAT" address.
Cuối cùng, chúng ta nói router đã dịch ip private 10.0.0.1 sang public IP 200.0.0.2 vì thế I có thể đi ra ngoài internet!
Trên R1 chúng ta chỉ gán địa chỉ IP và no shut trên cổng interface của router.
Kiếm tra xem tất cả các điều này đúng hay không:
Trong bài viết này, chúng ta không sử dụng host (PC) gắn liền với R0, vì vậy nếu chúng ta muốn kiểm tra cấu hình NAT, chúng ta có thể ping từ R0's loopback interface bằng cách sử dụng câu lệnh mở rộng sau:
Chúng tôi có thể dụng dụng lệnh ping mở rộng chỉ bằng cách gõ "ping" tại chế dộ privileged, chỉ rõ "target IP address" và loại "yes" tại "Extended commands" và chỉ rõ "source address or interface" ở hình dưới đây:
Chứng tỏ NAT hoạt động tốt, chúng ta có thể vô hiệu hóa static NAT cùng với câu lệnh sau:
Bây giờ, nếu chúng ta sử dụng câu lệnh ping mở rộng (mà không cần NAT để cấu hình):
--> Chúng ta không thể ping từ loopback interfaces được.
Download cấu hình static NAT tại đây:
+ Dynamic NAT:
Để cấu hình dynamic NAT chúng ta cần hoàn thành một số công việc sau:
* Xác định một pool của địa chỉ (public IP) được sử dụng để phân bổ cho dynamic NAT
* Cấu hình một standard access control list để xác định lưu lượng nội bộ nào sẽ được dịch
Liên kết access-list đến NAT pool
Xác định được 1 trong 2 interface inside và outside
* Ví dụ cậu hình Dymanic NAT
Chú ý: Trong lệnh trên, từ "inside" nghĩa là "Tôi muốn NAT từ inside đến outside, từ là tôi muốn NAT từ bên trong ra bên ngoài đó mấy bạn"; "list 1" nghĩa là "Địa chỉ nguồn source IP addresses để NAT là bao gồm trong Access-list 1"; "pool PoolforNAT" nghĩa là "NAT các địa chỉ IP được chỉ định trong PoolforNAT"
Cấu hình PAT ( hay còn gọi là NAT Overload)
* Cấu hình standard access-list để xác định lưu lượng gì bên trong nội bộ sẽ được dịch
* Liên kết access-list vào interface để sử dụng cho PAT
* Configure a standard access list to define what internal traffic will be translated
* Link the access list to the interface to be used for PAT
* Xác định được 1 trong 2 loại interface inside (bên trong) hoặc outside (bên ngoài)
Câu lệnh PAT:
(Notice the “interface fa0/0″ means “NAT out of this interface” and the keyword overload for PAT in the above command)
RouterA(config-if)# interface loopback0
RouterA(config-if)# ip nat inside
Chú ý: Nếu bạn không chắc chắn kiến thức về NAT, làm ơn đọc bài viết sau Network Address Translation NAT Tutorial
Để cấu hình static NAT chúng ta cần hoàn thành một số công việc sau:
* Xác định inside hoặc outside trên interfaces của routers
R0uter(config-if)#ip nat inside (or ip nat outside)
R0uter(config)#ip nat inside source static
Để làm rõ những vấn đề này, chúng ta sẽ cấu hình static NAT trong GNS3. Bạn mở GNS3 và thiết kế mô hình giống như dưới:
(Sử dụng IOS: c2600-bin-mz.123-6f.bin nhưng bạn có thể sử dụng phiên bản khác)
R0#configure terminal
R0(config)#int loopback0
R0(config-if)#ip address 10.0.0.1 255.0.0.0
R0(config-if)#ip nat inside
R0(config-if)#int f0/0
R0(config-if)#ip address 200.0.0.1 255.255.255.0
R0(config-if)#no shutdown
R0(config-if)#ip nat outside
R0(config-if)#exit
R0(config)#int loopback0
R0(config-if)#ip address 10.0.0.1 255.0.0.0
R0(config-if)#ip nat inside
R0(config-if)#int f0/0
R0(config-if)#ip address 200.0.0.1 255.255.255.0
R0(config-if)#no shutdown
R0(config-if)#ip nat outside
R0(config-if)#exit
Cuối cùng, chúng ta nói router đã dịch ip private 10.0.0.1 sang public IP 200.0.0.2 vì thế I có thể đi ra ngoài internet!
R0(config)#ip nat inside source static 10.0.0.1 200.0.0.2
R1#config terminal
R1(config)#int f0/0
R1(config-if)#ip address 200.0.0.10 255.255.255.0
R1(config-if)#no shutdown
R1(config)#int f0/0
R1(config-if)#ip address 200.0.0.10 255.255.255.0
R1(config-if)#no shutdown
Kiếm tra xem tất cả các điều này đúng hay không:
R0#show ip nat translations
Chúng tôi có thể dụng dụng lệnh ping mở rộng chỉ bằng cách gõ "ping" tại chế dộ privileged, chỉ rõ "target IP address" và loại "yes" tại "Extended commands" và chỉ rõ "source address or interface" ở hình dưới đây:
R0(config)#no ip nat inside source static 10.0.0.1 200.0.0.2
Download cấu hình static NAT tại đây:
+ Dynamic NAT:
Để cấu hình dynamic NAT chúng ta cần hoàn thành một số công việc sau:
* Xác định một pool của địa chỉ (public IP) được sử dụng để phân bổ cho dynamic NAT
Router(config)#ip nat pool pool_name start_ip end_ip { netmask netmask | prefix-length prefix-length }
Router(config)#access-list access-list-number permit source [source-wildcard]
Liên kết access-list đến NAT pool
Router(config)#ip nat inside source list access-list-number pool pool_name
Router(config-if)# ip nat inside (on fa0/0, for example)
Router(config-if)#ip nat outside (on fa0/1, for example)
Router(config-if)#ip nat outside (on fa0/1, for example)
* Ví dụ cậu hình Dymanic NAT
RouterA(config)# access-list 1 permit 192.168.0.0 0.0.0.255
RouterA(config)# ip nat pool PoolforNAT 200.23.123.6 200.23.123.10 netmask 255.255.255.0
RouterA(config)# ip nat inside source list 1 pool PoolforNAT
RouterA(config)# ip nat pool PoolforNAT 200.23.123.6 200.23.123.10 netmask 255.255.255.0
RouterA(config)# ip nat inside source list 1 pool PoolforNAT
Chú ý: Trong lệnh trên, từ "inside" nghĩa là "Tôi muốn NAT từ inside đến outside, từ là tôi muốn NAT từ bên trong ra bên ngoài đó mấy bạn"; "list 1" nghĩa là "Địa chỉ nguồn source IP addresses để NAT là bao gồm trong Access-list 1"; "pool PoolforNAT" nghĩa là "NAT các địa chỉ IP được chỉ định trong PoolforNAT"
RouterA(config)# int loopback0
RouterA(config-if)# ip nat inside
RouterA(config-if)# int fa0/0
RouterA(config-if)# ip nat outside
RouterA(config-if)# ip nat inside
RouterA(config-if)# int fa0/0
RouterA(config-if)# ip nat outside
Cấu hình PAT ( hay còn gọi là NAT Overload)
* Cấu hình standard access-list để xác định lưu lượng gì bên trong nội bộ sẽ được dịch
* Liên kết access-list vào interface để sử dụng cho PAT
* Configure a standard access list to define what internal traffic will be translated
* Link the access list to the interface to be used for PAT
* Xác định được 1 trong 2 loại interface inside (bên trong) hoặc outside (bên ngoài)
Câu lệnh PAT:
RouterA(config)# access-list 1 permit 192.168.0.0 0.0.0.255
RouterA(config)# ip nat inside source list 1 interface fa0/0 overload
RouterA(config)# ip nat inside source list 1 interface fa0/0 overload
(Notice the “interface fa0/0″ means “NAT out of this interface” and the keyword overload for PAT in the above command)
RouterA(config)# interface fa0/0
RouterA(config-if)# ip nat outside
RouterA(config-if)# ip nat outside
RouterA(config-if)# ip nat inside