GRE Tunnel là gì? Hướng dẫn cấu hình GRE Tunnel Trên Router Cisco
Trong bài viết này chúng ta cùng tìm hiểu GRE Tunnel là gì? Cách cấu hình GRE Tunnel trên Router Cisco và sử dụng công nghệ IPSEC Tunnel để mã hóa dữ liệu trên Tunnel
GRE là gì?
GRE là viết tắt của Generic Routing Encapsulation, là giao thức được phát triển bởi Cisco, cho phép đóng gói nhiều loại giao thức lớp Network trong các liên kết Point-to-Point. Một GRE Tunnel được sử dụng khi các gói dữ liệu cần được gửi giữa các mạng khác nhau thông qua internet. Với GRE được cấu hình, 1 đường hầm ảo được tạo giữa 2 Router và các gói tin gửi giữa 2 mạng nội bộ sẽ được truyền qua GRE Tunnel.
Điều quan trọng cần lưu ý là các gói tin truyền trong GRE Tunnel không được mã hóa. Để bảo vệ dữ liệu, chúng ta cần sử dụng công nghệ IPSEC kết hợp với GRE.
IPSEC GRE Tunnel về cơ bản giống với IPSEC VPN Site to Site khi cả 2 giao thức đều tạo 1 tunnel để kết nối giữa 2 site cho phép truyền dữ liệu qua chúng. Nhưng điểm khác biệt cơ bản là GRE Tunnel cho phép các gói tin Multicast trong khi IPSEC VPN thì không hỗ trợ. Trong các mạng lớn chạy các giao thức định tuyến như OSPF, EIGRP, bạn cần dùng GRE Tunnel để hỗ trợ các gói tin trao đổi giữa các giao thức này.
Các bước cấu hình
- Bước 1: Bật giao diện Tunnel và đặt IP cho giao diện này
- Bước 2: Tạo định tuyến tĩnh để cho phép các mạng nội bộ 2 Site có thể truy cập được lẫn nhau.
- Bước 3: Cấu hình IPSEC để mã hóa dữ liệu trên Tunnel
Cấu hình GRE Tunnel trên Router Cisco
Trong mô hình gồm có 2 Site là HQ và BR sử dụng NAT để truy cập internet. Site HQ gồm 2 VLAN: VLAN10-10.0.0.0/24 và VLAN20-10.0.1.0/24. Site BR gôm 1 VLAN 172.16.1.0/24. Router HQ có IP Wan là 100.0.0.100 và Router BR có IP Wan là 100.0.0.1. Yêu cầu bài Lab là cấu hình GRE Tunnel dải 192.168.1.0/24 để cho phép các VLAN giữa 2 site HQ và BR có thể truy cập được lẫn nhau.
Bước 1: Tạo GRE Tunnel trên Router HQ
HQ#configure terminal
HQ(config)#interface tunnel 0
%LINK-5-CHANGED: Interface Tunnel0, changed state to up
HQ(config-if)#ip address 192.168.1.1 255.255.255.0
HQ(config-if)#tunnel mode gre ip
HQ(config-if)#tunnel source 100.0.0.100
HQ(config-if)#tunnel destination 100.0.0.1
|
Trong phần tunnel source có nhiều tùy chọn như interface, IP address... các bạn có thể sử dụng các tùy chọn khác nhau. Bên cạnh đó mtu mặc định là 1500 byte nên nếu các bạn kết nối internet qua giao thức PPPoE thì các bạn cần cấu hình thêm mtu để tránh phân mảnh gói tin.
HQ(config)#interface tunnel 0
HQ(config-if)# ip mtu 1400
HQ(config-if)# ip tcp adjust-mss 1360
|
Bước 2: Tạo GRE Tunnel trên Router BR
Tương tự chúng ta tạo Tunnel trên Router BR
BR#configure terminal
BR(config)#interface tunnel 0
%LINK-5-CHANGED: Interface Tunnel0, changed state to up
BR(config-if)#ip address 192.168.1.2 255.255.255.0
BR(config-if)#tunnel mode gre ip
BR(config-if)# ip mtu 1400
BR(config-if)# ip tcp adjust-mss 1360
BR(config-if)#tunnel source 100.0.0.1
BR(config-if)#tunnel destination 100.0.0.100 |
Bước 3: Cấu hình định tuyến tĩnh để các VLAN giữa 2 site có thể kết nối được với nhau
Sau khi cấu hình interface tunnel giữa 2 router, chúng ta có thể ping được từ địa chỉ IP 192.168.1.1 trên Router HQ sang 192.168.1.2 của Router BR.
HQ#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/1 ms
HQ#
|
Tuy nhiên lúc này các VLAN giữa 2 site vẫn không thể truy cập được lẫn nhau do router vẫn sử dụng Default route để định tuyến các gói tin này. Chúng ta cần tạo thêm định tuyến tĩnh để cho Router đẩy gói tin thông qua GRE Tunnel.
Cấu hình định tuyến tĩnh trên Router HQ
HQ(config)#ip route 172.16.1.0 255.255.255.0 192.168.1.2
|
Cấu hình định tuyến tĩnh trên Router BR
BR(config)#ip route 10.0.0.0 255.255.255.0 192.168.1.1
BR(config)#ip route 10.0.1.0 255.255.255.0 192.168.1.1
|
Bây giờ 2 site có thể ping thông được lẫn nhau thông qua GRE Tunnel
Mã hóa dữ liệu trên GRE Tunnel với IPSEC
Như mình đã đề cập ở trên, GRE là 1 giao thức đóng gói nhưng không mã hóa dữ liệu nên dễ bị bắt capture dữ liệu trên đường truyền. Vì vậy chúng ta phải kết hợp IPSec để mã hóa dữ liệu trong tunnel.
Bước 1: Cấu hình ISAKMP (IKE)
HQ(config)#crypto isakmp policy 1
HQ(config-isakmp)#encryption 3des
HQ(config-isakmp)#hash md5
HQ(config-isakmp)#authentication pre-share
HQ(config-isakmp)#group 2
|
Bước 2: Cấu hình key để xác thực
HQ(config)#crypto isakmp key cnttshop address 100.0.0.1
|
Bước 3: Tạo chuyển đổi IPSEC
HQ(config)#crypto ipsec transform-set SET1 esp-3des esp-md5-hmac
HQ(cfg-crypto-trans)# mode transport
|
Bước 4: Cấu hình IPSEC
R1(config)# crypto ipsec profile GRE-IPSEC
R1(ipsec-profile)# set security-association lifetime seconds 86400
R1(ipsec-profile)# set transform-set SET1
|
Bước 5: Gán IPSEC vào VPN Tunnel
R1(config)# interface Tunnel 0
R1(config-if)# tunnel protection ipsec profile GRE-IPSEC |
Cấu hình tương tự trên Router BR
BR(config)# crypto isakmp policy 1
BR(config-isakmp)# encryption 3des
BR(config-isakmp)# hash md5
BR(config-isakmp)# authentication pre-share
BR(config-isakmp)# group 2
BR(config)# crypto isakmp key cnttshop address 100.0.0.100
BR(config)# crypto ipsec transform-set SET1 esp-3des esp-md5-hmac
BR(cfg-crypto-trans)# mode transport
BR(config)# crypto ipsec profile GRE-IPSEC
BR(ipsec-profile)# set security-association lifetime seconds 86400
BR(ipsec-profile)# set transform-set SET1
BR(config)# interface Tunnel 0
BR(config-if)# tunnel protection ipsec profile GRE-IPSEC
|
Vậy là chúng ta đã cấu hình xong IPSec GRE Tunnel giữa 2 site. Các bạn có thể dùng lệnh show crypto session để kiểm tra
HQ# show crypto session
Crypto session current status
Interface: Tunnel0
Session status: UP-ACTIVE
Peer: 100.0.0.1 port 500
IKE SA: local 100.0.0.100/500 remote 100.0.0.1/500 Active
IPSEC FLOW: permit 47 host 100.0.0.100 host 100.0.0.1
Active SAs: 2, origin: crypto map
|
Chúc các bạn thành công!
Bình luận bài viết!
Đối với IPSec VPN thì bạn cần tạo ACL để router biết các traffic nào sẽ sử dụng VPN tunnel. Còn với GRE thì Router sẽ tạo tunnel giữa 2 site, và xác định đích đến thông qua giao thức định tuyến động hoặc tĩnh, nên sẽ không cần phải cấu hình ACL. Tuy nhiên bạn vẫn có thể tạo ACL để giới hạn.