Phân biệt IP nat inside vs IP nat outside

Các câu lệnh NAT có thể phân chia như sau, trong đó ip  nat inside thường được dùng hơn vì nếu dùng ip nat outside thì trong 1 số trường hợp cần phải cấu hình thêm static route (do traffic từ inside ra outside được xử lý routing trước rồi mới NAT).

1. ip nat inside thường dùng để pulic mạng bên trong cho bên ngoài thấy và truy cập, trong đó

– ip nat inside source –> đổi địa chỉ nguồn để khi dữ liệu đi từ trong ra ngoài để mạng bên ngoài thấy và trả dữ liệu về được. Nếu là source static, thì NAT có tính chất 2 chiều, nếu là source list thì NAT 1 chiều, chỉ NAT khi dữ liệu từ trong ra ngoài.

– ip nat inside destination –> đổi địa chỉ đích để bên ngoài có thể truy xuất các server bên trong đại diện bởi 1 Virtual IP (VIP), sau đó VIP này sẽ được NAT thành địa chỉ của các server thực sự bên trong (TCP NAT Load Balancing)

2. ip nat outside –> thường dùng để các host bên trong thấy mạng bên ngoài như đang ở local, cùng mạng vậy, trong đó:

–  ip nat outside source: đổi địa chỉ nguồn của gói tin khi từ outside vào inside. Nếu là source static thì NAT có tính chất 2 chiều, còn nếu là source list thì là NAT 1 chiều, tức là chỉ NAT khi dữ liệu từ outside vào inside.

– ip nat outside destination –> không có

Ý nghĩa các từ khóa:

inside: Router thực hiện NAT khi chuyển traffic xuất phát từ inside –> outside interface và ngược lại (tính 2 chiều chỉ áp dụng với source là static, nếu source là list thì là dynamic thì các nat entry sẽ có time-out, traffic bắt buộc phải từ trong ra)

outside: Router thực hiện NAT khi chuyển traffic xuất phát từ outside –> inside interface và ngược lại (giống trên, tính 2 chiều chỉ áp dụng nếu source là static,  nếu source là list thì là dynamic thì các nat entry sẽ có time-out, traffic bắt buộc traffic phải từ ngoài vào)

source: Đổi địa chỉ nguồn

destination: Đổi địa chỉ đích

1

Trong ví dụ sau đây, chúng ta cấu hình NAT trên R2 với mục đích: R1 được đại diện bởi địa chỉ 192.168.23.100 giống như cùng mạng với R3, R3 đại diện bởi 192.168.12.100 giống như đang cùng mạng với R1. Lệnh cấu hình như sau:

ip nat inside source static 192.168.12.1 192.168.23.100 –> Từ khóa inside –> thực hiện NAT trên interface inside (và ngược lại), từ khóa source –> đổi địa chỉ nguồn. Cụ thể, tác dụng của lệnh này như sau:

– R2 soi trên interface inside (f0/0), nếu thấy có gói tin có src.ip = 192.168.12.1 –> đổi thành src.ip = 192.168.23.100

– Điểm key quan trọng cần nhớ ở đây là NAT inside hay outside đều có tính chất 2 chiều –> tức là theo chiều ngược lại, nếu R2 nhận được gói tín có dst.ip 192.168.23.100 –> đổi thành dst.ip = 192.168.12.1.

ip nat outside source static 192.168.23.3 192.168.12.100

– R2 soi trên interface outside (f0/1), nếu thấy có gói tin có src.ip = 192.168.23.3–> đổi thành src.ip = 192.168.12.100

– Đồng thời chiều ngược lại: nếu trên interface inside nhận được gói tin có dst.ip = 192.168.12.100 –> đổi thành dst.ip = 192.168.23.3

Kết quả:

R1#ping 192.168.12.100      

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.100, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/27/32 ms

R2#debug ip nat
*Mar  1 01:08:57.811: NAT: s=192.168.12.1->192.168.23.100, d=192.168.12.100 [26]
*Mar  1 01:08:57.815: NAT: s=192.168.23.100, d=192.168.12.100->192.168.23.3 [26]
*Mar  1 01:08:57.847: NAT*: s=192.168.23.3->192.168.12.100, d=192.168.23.100 [26]
*Mar  1 01:08:57.847: NAT*: s=192.168.12.100, d=192.168.23.100->192.168.12.1 [26]

R3#ping 192.168.23.100

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.100, timeout is 2 seconds:
…..
Success rate is 0 percent (0/5)

R2#
*Mar 1 01:11:21.595: NAT*: s=192.168.23.3->192.168.12.100, d=192.168.23.100 [35]
*Mar 1 01:11:21.595: NAT*: s=192.168.12.100, d=192.168.23.100->192.168.12.1 [35]

Ping đã tới R1 với src.ip = 192.168.12.100 nên bản tin ping reply sẽ được gửi lại với dst.ip 192.168.12.100 tới R2, mà đây lại mạng kết nối trực tiếp với R2 nên R2 sẽ không đẩy dữ liệu sang R3 nên R3 ko nhận được ping trả về. Câu hỏi đặt ra là ở trên mình đã cấu hình ip nat outside source static 192.168.23.3 192.168.12.100 >> đáng nhẽ 192.168.12.100 được NAT thành 192.168.23.3 chứ ==>  nguyên nhân là do đặc điểm của NAT khi traffic từ inside –> outside là được xử lý routing trước rồi mới đến NAT, nên router sẽ tìm route cho 192.168.12.100 trước khi tiến hành NAT.

Để ping được trên R2 cần cấu hình thêm static route: R2(config)#ip route 192.168.12.100 255.255.255.255  192.168.23.3

hoặc thêm từ khóa add-route vào câu lệnh NAT:

ip nat outside source static 192.168.23.3 192.168.12.100 add-route

R3#ping 192.168.23.100

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.100, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/60/80 ms

R2(config)#
*Mar 1 01:18:58.163: NAT*: s=192.168.23.3->192.168.12.100, d=192.168.23.100 [45]
*Mar 1 01:18:58.163: NAT*: s=192.168.12.100, d=192.168.23.100->192.168.12.1 [45]
*Mar 1 01:18:58.203: NAT: s=192.168.12.1->192.168.23.100, d=192.168.12.100 [45]
*Mar 1 01:18:58.203: NAT: s=192.168.23.100, d=192.168.12.100->192.168.23.3 [45]

 

Một giải pháp khác thay thế không cần phải add-route là cấu hình với NAT Virtual Interface.

R2(config)#int f0/0

R2(config-if)#ip nat enable

R2(config)#int f0/1

R2(config-if)#ip nat enable

R2(config)#ip nat source static 192.168.12.1 192.168.23.100

R2(config)#ip nat source static 192.168.23.3 192.168.12.100

 

Tham khảo: http://astorinonetworks.com/2011/08/16/the-inside-outside-of-nat-for-overlapping-networks/

http://www.groupstudy.com/archives/ccielab/200702/msg01284.html

http://gns3vault.com/forums/topic/ip-nat-outside/

Leave a comment