Powered by Blogger.

IPV6 - BÀI SỐ 14: NAT PT

Trong các bài viết trước, chúng ta đã cùng nhau trao đổi về các kỹ thuật được sử dụng trong quá trình chuyển đổi từ hạ tầng IPv4 sang hạ tầng IPv6. Các kỹ thuật đã điểm qua gồm:
      · Dual – stack: Một số thiết bị mạng sẽ chạy cả hai giao thức IPv4 và IPv6. Hiện thực IPv4 trên thiết bị sẽ trao đổi thông tin với hạ tầng IPv4 và hiện thực IPv6 trên thiết bị sẽ trao đổi thông tin với hạ tầng IPv6.
      · Tunnel: Các kỹ thuật tunnel sẽ giúp nối liền các “ốc đảo” IPv6 qua một hạ tầng trung chuyển IPv4. Chúng ta cũng đã cùng nhau trao đổi về một số loại tunnel như: static tunnel, 6to4 tunnel và ISATAP tunnel.
Trong bài viết này, chúng ta sẽ cùng khảo sát một kỹ thuật cho phép các host của một hạ tầng IPv6 có thể trao đổi thông tin được với các host của một hạ tầng IPv4, đó là kỹ thuật NAT – PT (Network Address Translation – Protocol Translation).

Tương tự như với các bài viết trước, chúng ta tìm hiểu vấn đề đang quan tâm thông qua một bài lab ví dụ.

SƠ ĐỒ

Hinh-1-So-do-bai-lab-vi-du
Hình 1 – Sơ đồ bài lab ví dụ.

MÔ TẢ

      · Trên hình 1 là sơ đồ lab giả lập một phần của một mạng doanh nghiệp đang trong quá trình chuyển đổi từ IPv4 sang IPv6. Trong quá trình chuyển đổi này, xuất hiện tình trạng các hạ tầng IPv4 và IPv6 cùng chạy song song với nhau.
       · Router R2 được cấu hình Dual – stack: vừa chạy IPv4 vừa chạy IPv6.
       · Yêu cầu đặt ra với bài lab này là phải cấu hình NAT – PT trên R2 để hai loopback 0 của R1 và R3 (giả lập hai mạng LAN tại R1 và R3) có thể đi đến được nhau.

THỰC HIỆN

BƯỚC 1: CẤU HÌNH BAN ĐẦU CHO BÀI LAB

       · Cấu hình các địa chỉ IP trên các cổng của các router theo quy hoạch IP được chỉ ra như trên hình 1.
       · Sử dụng một hình thức định tuyến bất kỳ đảm bảo các địa chỉ IPv4 vùng IPv4 thấy được nhau và các địa chỉ IPv6 trên vùng IPv6 thấy được nhau.

CẤU HÌNH

Trên R1:
R1(config)#interface loopback 0
R1(config-if)#ipv6 address 2001:1::1/64
R1(config-if)#exit
R1(config)#interface f0/1
R1(config-if)#no shutdown
R1(config-if)#ipv6 address 2001:12::1/64
R1(config-if)#exit
R1(config)#ipv6 unicast-routing
R1(config)#ipv6 route ::/0 2001:12::2
Trên R2:
R2(config)#interface f0/0
R2(config-if)#no shutdown
R2(config-if)#ipv6 address 2001:12::2/64
R2(config-if)#exit
R2(config)#ipv6 unicast-routing
R2(config)#ipv6 route 2001:1::/64 2001:12::1
R2(config)#interface f0/1
R2(config-if)#no shutdown
R2(config-if)#ip address 192.168.23.2 255.255.255.0
R2(config-if)#exit
R2(config)#ip route 192.168.3.0 255.255.255.0 192.168.23.3
Trên R3:
R3(config)#interface loopback 0
R3(config-if)#ip address 192.168.3.1 255.255.255.0
R3(config-if)#exit
R3(config)#interface f0/0
R3(config-if)#ip address 192.168.23.3 255.255.255.0
R3(config-if)#exit
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.23.2

KIỂM TRA

Chúng ta thực hiện kiểm tra rằng các địa chỉ IPv6 đã đi được đến nhau và các địa chỉ IPv4 đã đi được đến nhau.
Các địa chỉ IPv6 đã đi đến được nhau:
R1#ping 2001:12::2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:12::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/44/56 ms
R1#ping 2001:12::2 source 2001:1::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:12::2, timeout is 2 seconds:
Packet sent with a source address of 2001:1::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/36/52 ms
R2#ping 2001:12::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:12::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/44/60 ms
R2#ping 2001:1::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:1::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/39/56 ms
Các địa chỉ IPv4 đã đi đến được nhau:
R2#ping 192.168.23.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/51/68 ms
R2#ping 192.168.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/71/92 ms
R3#ping 192.168.23.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/52/60 ms
R3#ping 192.168.23.2 source 192.168.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.2, timeout is 2 seconds:
Packet sent with a source address of 192.168.3.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/44/60 ms

BƯỚC 2: CẤU HÌNH NAT – PT

  • Cấu hình NAT – PT đảm bảo loopback 0 của R1 có thể ping đươc loopback 0 của R3.
  • Bảng NAT được yêu cầu:
2001:1::1 – 192.168.23.1.
192.168.3.1 – 2000::c0a8:301.
Dải địa chỉ dành cho NAT: 2000::/96.

CẤU HÌNH

Trên R2:
R2(config)#interface f0/0
R2(config-if)#ipv6 nat
R2(config-if)#exit
R2(config)#interface f0/1
R2(config-if)#ipv6 nat
R2(config-if)#exit
R2(config)#ipv6 nat v6v4 source 2001:1::1 192.168.23.1
R2(config)#ipv6 nat v4v6 source 192.168.3.1 2000::c0a8:301
R2(config)#ipv6 nat prefix 2000::/96
Trên R1:
R1(config)#ipv6 route 2000::/96 2001:12::2

GHI CHÚ

Kỹ thuật NAT – PT cho phép các host của một hạ tầng IPv6 có thể trao đổi thông tin với các host của một hạ tầng IPv4. Router đứng trung gian giữa IPv6 domain và IPv4 domain sẽ thực hiện thao tác chuyển đổi để đảm bảo sự truyền thông này: gói tin đi di chuyển giữa vùng v4 và v6 sẽ được viết lại header cho phù hợp với vùng mới mà nó sẽ đi vào và các địa chỉ được sử dụng cũng được thay đổi theo cho thích hợp.
Để cấu hình NAT – PT trên một router Cisco trung gian, chúng ta cần phải khai báo các thông số sau:
      · Các cổng router sẽ tham gia NAT (ít nhất là một cặp cổng đấu nối v4 – v6):
R2(config)#interface f0/0
R2(config-if)#ipv6 nat
R2(config-if)#exit
R2(config)#interface f0/1
R2(config-if)#ipv6 nat
R2(config-if)#exit
Trong câu lab này, cổng F0/0 của R2 nối đến vùng v6 và cổng F0/1 của R2 nối đến vùng v4. Dữ liệu được trung chuyển qua lại giữa hai cổng này nên ta cần phải khai báo NAT trên hai cổng này.
      · Các entry NAT cần được thực hiện cho các địa chỉ.
Ta cấu hình các entry NAT theo yêu cầu của câu lab, chỉ rõ các địa chỉ nào sẽ được NAT thành các địa chỉ nào. Có nhiều phương thức cấu hình các entry này, ở đây ta sử dụng static NAT:
R2(config)#ipv6 nat v6v4 source 2001:1::1 192.168.23.1
R2(config)#ipv6 nat v4v6 source 192.168.3.1 2000::c0a8:301
      · Prefix IPv6 được sử dụng để đại diện cho các địa chỉ IPv4:
Ta cần chỉ rõ prefix nào của không gian IPv6 sẽ được sử dụng để làm dải IP đại diện cho không gian IPv4 trong thao tác NAT. Dải này thường là dải /96, có phần interface – id dài 32 bit, đủ để bao trùm toàn bộ không gian IPv4; tuy nhiên, ta có thể sử dụng prefix với prefix – length bất kỳ, không nhất thiết phải là 96. Khi một IPv6 host cần giao tiếp với một IPv4 host, nó gửi gói tin IPv6 đến dải /96 này, router trung gian sẽ can thiệp vào gói tin, viết lại header và thay thế cả source và destination IP thành IPv4 như đã chỉ ra trong các entry NAT đã khai báo. Quá trình sẽ được tiến hành ngược lại khi gói tin được trả về IPv6 từ vùng IPv4.
Trong câu lab này, ta chọn dải 2000::/96 để làm dải IPv6 NAT đại diện cho không gian IPv4:
R2(config)#ipv6 nat prefix 2000::/96
Cuối cùng, vì loopback 0 của R1 muốn đi đến loopback 0 của R3 cần phải đóng gói tin IPv6 đẩy đến địa chỉ đại diện thuộc dải 2000::/96 mà dải này chưa được khai báo định tuyến nên ta cần phải bổ sung một entry static route cho dải này trên router R1:
R1(config)#ipv6 route 2000::/96 2001:12::2
Đến đây, ta đã hoàn tất cấu hình cho yêu cầu NAT – PT.

KIỂM TRA

Ta kiểm tra xem hai loopback 0 của R1 và R3 đã thấy được nhau chưa:
R1#ping 2000::c0a8:301 source 2001:1::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2000::C0A8:301, timeout is 2 seconds:
Packet sent with a source address of 2001:1::1
.....
Success rate is 0 percent (0/5)
Kết quả ping không thành công, như vậy hai loopback chưa thấy được nhau. Ta cùng troublshoot vấn đề này.
Trước hết, ta kiểm tra bảng NAT – PT của R2:
R2#show ipv6 nat translations
Prot IPv4 source IPv6 source
 IPv4 destination IPv6 destination
--- --- ---
 192.168.3.1 2000::C0A8:301

--- 192.168.23.1 2001:1::1
 --- ---
Ta thấy các entry trong bảng NAT đã hiển thị đúng như đã được cấu hình.
Ta thử xem NAT trên R2 có hoạt động không bằng cách sử dụng lệnh “debug ipv6 nat detail”:
R2#debug ipv6 nat detail 
IPv6 NAT-PT detailed debugging is on
Thực hiện ping lại từ R1 và quan sát kết quả debug:
R1#ping 2000::c0a8:301 source 2001:1::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2000::C0A8:301, timeout is 2 seconds:
Packet sent with a source address of 2001:1::1
.....
Success rate is 0 percent (0/5)
R2#
*Mar 1 00:53:35.251: IPv6 NAT: ipv6nat_find_entry_v4tov6:
 ref_count = 1,
 usecount = 0, flags = 64, rt_flags = 0,
 more_flags = 0

*Mar 1 00:53:35.259: IPv6 NAT: icmp src (2001:1::1) -> (192.168.23.1), dst (2000::C0A8:301) -> (192.168.3.1)
R2#
*Mar 1 00:53:37.247: IPv6 NAT: ipv6nat_find_entry_v4tov6:
 ref_count = 1,
 usecount = 0, flags = 64, rt_flags = 0,
 more_flags = 0

*Mar 1 00:53:37.255: IPv6 NAT: icmp src (2001:1::1) -> (192.168.23.1), dst (2000::C0A8:301) -> (192.168.3.1)
Ta thấy R2 đã thực hiện NAT thành công.
Ta thực hiện kiểm tra trên R3 với lệnh “debug ip packet detail” khi từ R1 thực hiện ping qua R3 như đã nêu ở trên:
R3#debug ip packet detail
IP packet debugging is on (detailed)
R3#
*Mar 1 00:56:35.023: IP: tableid=0, s=192.168.23.1 (FastEthernet0/0),d=192.168.3.1 (Loopback0), routed via RIB
*Mar  1 00:56:35.027: IP: s=192.168.23.1 (FastEthernet0/0), d=192.168.3.1, len 80, rcvd 4
*Mar 1 00:56:35.031: ICMP type=8, code=0
*Mar 1 00:56:35.031: IP: tableid=0, s=192.168.3.1 (local), d=192.168.23.1 (FastEthernet0/0), routed via RIB
*Mar 1 00:56:35.035: IP: s=192.168.3.1 (local), d=192.168.23.1 (FastEthernet0/0), len 80, sending
*Mar 1 00:56:35.039: ICMP type=0, code=0
*Mar 1 00:56:35.043: IP: s=192.168.3.1 (local), d=192.168.23.1 (FastEthernet0/0), len 80, encapsulation failed
*Mar 1 00:56:35.043: ICMP type=0, code=0
Từ kết quả debug ta thấy R3 đã nhận được gói tin từ R1 (lúc này source là 192.168.23.1 và destination là 192.168.3.1) và đã thực hiện trả về (với source: 192.168.3.1 và destination: 192.168.23.1), tuy nhiên hoạt động encapsulation gói tin lớp 3 vào frame lớp 2 đã không thành công (encapsulation failed). Data link được sử dụng ở đây là Ethernet nên ta kiểm tra vấn đề này bằng cách quan sát bảng ARP của R3:
R3#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.23.3 - 0017.e0bf.e440  ARPA FastEthernet0/0
Internet 192.168.23.1 0 Incomplete ARPA 
Ta thấy, địa chỉ 192.168.23.1 đã không được phân giải ARP nên R3 không có địa chỉ MAC tương ứng với 192.168.23.1 để đóng frame cho gói tin đi đến địa chỉ này, vì vậy hoạt động encapsulation từ lớp 3 xuống lớp 2 đã không thành công, từ đó việc giao tiếp giữa hai loopback không diễn ra được.
Điều này xảy ra vì địa chỉ 192.168.23.1 là địa chỉ không tồn tại trên bất cứ host nào của mạng 192.168.23.0/24 nên không có ai trả lời ARP cho nó. Để khắc phục, ta có thể hoặc khai báo một entry ARP tĩnh trên R3 tương quan địa chỉ 192.168.23.1 với MAC của cổng F0/1 của R2 hoặc ta có thể khai báo một Alias trên R2 để R2 tự động thực hiện trả lới ARP cho địa chỉ 192.168.23.1. Ta thử với cách thứ 2:
R2(config)#ip alias 192.168.23.1 23
Sau khi khai báo xong Alias này, từ nay R2 sẽ đại diện cho “địa chỉ không đặt vào đâu” 192.168.23.1 và trả lời ARP cho địa chỉ này. Cú pháp yêu cầu phải khai báo thêm port cho Alias, ta có thể chọn giá trị bất kỳ, ví dụ 23.
Lúc này việc truyền dữ liệu đã diễn ta thành công giữa hai loopback của R1 và R3:
R1#ping 2000::c0a8:301 source 2001:1::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2000::C0A8:301, timeout is 2 seconds:
Packet sent with a source address of 2001:1::1
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 68/85/120 ms
Ta để ý gói đầu tiên bị mất do hoạt động phân giải ARP cho địa chỉ 192.168.23.1 đã diễn ra. Từ đó về sau, khi entry ARP đã tồn tại trong bảng ARP của R3, ping sẽ thành công 100 %:
R1#ping 2000::c0a8:301 source 2001:1::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2000::C0A8:301, timeout is 2 seconds:
Packet sent with a source address of 2001:1::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 64/72/88 ms
Ta có thể kiểm tra bảng ARP của R3 để thấy rằng hoạt động phân giải ARP đã diễn ra đúng đắn, với MAC tương ứng địa chỉ 192.168.23.1 chính là địa chỉ MAC trên cổng F0/1 của R2: 
R3#show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.23.3 - 0017.e0bf.e440 ARPA FastEthernet0/0
Internet 192.168.23.1 3 0021.a03b.d828  ARPA FastEthernet0/0
R2#show interfaces f0/1 | inc bia
 Hardware is MV96340 Ethernet, address is 0021.a03b.d828 (bia 0021.a03b.d828)
Như vậy, với sự bổ sung của lệnh khai báo alias trên R2, cấu hình NAT – PT đã được hoàn thành cho bài lab này.
Cảm ơn các bạn!
Hẹn gặp lại các bạn trong các bài viết tiếp theo!
nguồn  : http://www.ntps.edu.vn/blog/169-ipv6-bai-so-14-nat-pt

    Blogger Comment
    Facebook Comment