1. Tổng quan về GRE Tunnel
GRE (Generic Routing Encapsulation) là một giao thức encapsulation do Cisco phát triển, cho phép đóng gói các gói dữ liệu của các giao thức mạng khác nhau bên trong một tunnel IP. Điều này giúp kết nối giữa các mạng không cùng lớp địa chỉ hoặc không hỗ trợ định tuyến trực tiếp.

Lợi ích của GRE Tunnel
- Hỗ trợ encapsulation linh hoạt: GRE cho phép đóng gói nhiều loại giao thức, bao gồm IPv4, IPv6, MPLS, AppleTalk, v.v.
- Mở rộng kết nối giữa các site: GRE giúp kết nối các mạng LAN tại các site khác nhau thông qua mạng trung gian (Internet hoặc WAN).
- Kết hợp với các giao thức bảo mật: GRE bản thân không có cơ chế mã hóa, nhưng có thể kết hợp với IPsec để bảo mật dữ liệu.
2. Phân tích sơ đồ lab
Sơ đồ lab mô tả một hệ thống mạng gồm hai site kết nối qua GRE Tunnel:

- SITE 1 và SITE 2 có các subnet nội bộ riêng biệt.
- SITE 1 sử dụng mạng LAN 10.10.10.0/24 với hai router có IP 10.10.10.71 và 10.10.10.72.
- SITE 2 có mạng nội bộ 20.20.20.0/24 và một Public IP 10.237.7.73.
- Kết nối giữa hai site sử dụng VPN GRE Tunnel với địa chỉ tunnel 172.16.101.0/30.
- Các thiết bị bên ngoài có thể truy cập SITE 1 thông qua VIP 10.237.7.100 và SITE 2 thông qua Public IP.
3. Cách hoạt động của GRE Tunnel trong sơ đồ
Khi một thiết bị từ SITE 1 muốn gửi dữ liệu đến SITE 2:
- Gói tin được gửi từ mạng LAN 10.10.10.0/24 đến router có GRE Tunnel.
- Router đóng gói gói tin gốc vào một gói tin mới có địa chỉ Source IP 10.237.7.72 và Destination IP 10.237.7.73 (Public IP của SITE 2).
- Gói tin được gửi qua Internet đến SITE 2.
- Router tại SITE 2 mở gói tin, khôi phục dữ liệu gốc và chuyển tiếp đến mạng 20.20.20.0/24.
Quá trình ngược lại xảy ra khi dữ liệu từ SITE 2 gửi về SITE 1.
4. Lưu ý khi triển khai GRE Tunnel
- Kiểm tra định tuyến: Cần đảm bảo rằng cả hai site có thể định tuyến đến nhau thông qua tunnel.
- Cấu hình MTU hợp lý: GRE encapsulation làm tăng kích thước gói tin, có thể dẫn đến vấn đề fragmentation nếu không điều chỉnh MTU phù hợp.
- Cấu hình firewall: Nếu site được bảo vệ bởi firewall, cần mở các cổng cần thiết để GRE hoạt động (thường là IP Protocol 47).
- Kiểm tra TTL: Đảm bảo giá trị TTL đủ lớn để tránh gói tin bị drop khi đi qua nhiều hop.
Bằng cách áp dụng những lưu ý trên, bạn có thể triển khai GRE Tunnel một cách hiệu quả và ổn định trong hệ thống mạng doanh nghiệp của mình.
5. Hướng dẫn cấu hình.
Bước 1 – Enable IP Forwarding
Config này cho tất cả các VPN Server của các Site.
cat >> /etc/sysctl.conf << 'OEF'
# Enable IP Forwarding
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# Disable Link-Local Addressing
net.ipv4.conf.all.accept_local = 0
net.ipv4.conf.all.arp_ignore = 2
net.ipv4.conf.all.arp_announce = 2
OEF
sysctl -p
Bước 2 – Đặt IP và Routing cho các Server.
Đối với VPN Server 1 – 10.237.7.71 của Site A.
cat > /etc/netplan/00-installer-config.yaml << 'OEF'
network:
version: 2
ethernets:
ens160:
addresses:
- 10.237.7.71/24
routes:
- to: 0.0.0.0/0
via: 10.237.7.1
ens192: {}
vlans:
vlan101:
id: 101
link: ens192
addresses:
- 10.10.10.71/24
tunnels:
gre1:
mode: gre
local: 10.237.7.100
remote: 10.237.7.73
addresses:
- 172.16.101.1/30
routes:
- to: 20.20.20.0/24
via: 172.16.101.2
OEF
chmod 600 /etc/netplan/00-installer-config.yaml
netplan apply
Đối với VPN Server 2 – 10.237.7.72 của Site A.
cat > /etc/netplan/00-installer-config.yaml << 'OEF'
network:
version: 2
ethernets:
ens160:
addresses:
- 10.237.7.72/24
routes:
- to: 0.0.0.0/0
via: 10.237.2.1
ens192: {}
vlans:
vlan101:
id: 101
link: ens192
addresses:
- 10.10.10.72/24
tunnels:
gre1:
mode: gre
local: 10.237.7.100
remote: 10.237.7.73
addresses:
- 172.16.101.1/30
routes:
- to: 20.20.20.0/24
via: 172.16.101.2
OEF
chmod 600 /etc/netplan/00-installer-config.yaml
netplan apply
Đối với Client – 10.237.7.74 của Site A.
cat > /etc/netplan/00-installer-config.yaml << 'OEF'
network:
version: 2
ethernets:
ens160:
addresses:
- 10.237.7.74/24
routes:
- to: 0.0.0.0/0
via: 10.237.7.1
ens192: {}
vlans:
vlan101:
id: 101
link: ens192
addresses:
- 10.10.10.74/24
routes:
- to: 172.16.101.0/24
via: 10.10.10.254
- to: 20.20.20.0/24
via: 10.10.10.254
OEF
chmod 600 /etc/netplan/00-installer-config.yaml
netplan apply
Với Site B – Server VPN (giả lập phía khách hàng nên demo 1 Server thôi)
cat > /etc/netplan/00-installer-config.yaml << 'OEF'
network:
version: 2
ethernets:
ens160:
addresses:
- 10.237.7.73/24
routes:
- to: 0.0.0.0/0
via: 10.237.7.1
ens192: {}
vlans:
vlan101:
id: 101
link: ens192
addresses:
- 20.20.20.73/24
tunnels:
gre1:
mode: gre
local: 10.237.7.73
remote: 10.237.7.100
addresses:
- 172.16.101.2/30
routes:
- to: 10.10.10.0/24
via: 172.16.101.1
OEF
chmod 600 /etc/netplan/00-installer-config.yaml
netplan apply
Đối với Client – 10.237.7.75 của Site B
cat > /etc/netplan/00-installer-config.yaml << 'OEF'
network:
version: 2
ethernets:
ens160:
addresses:
- 10.237.7.75/24
routes:
- to: 0.0.0.0/0
via: 10.237.7.1
ens192: {}
vlans:
vlan101:
id: 101
link: ens192
addresses:
- 20.20.20.75/24
routes:
- to: 172.16.101.0/24
via: 20.20.20.73
- to: 10.10.10.0/24
via: 20.20.20.73
OEF
chmod 600 /etc/netplan/00-installer-config.yaml
netplan apply
Bước 3 – Cài đặt và cấu hình Keepalived (Chỉ thực hiện trên Site A).
Hãy chạy lệnh sau để cài đặt Keepalived ở 2 Server VPN SITE A.
apt-get update
apt-get install keepalived net-tools -y
Thực hiện trên VPN Server 1 – 10.237.7.71
cat > /etc/keepalived/keepalived.conf << 'OEF'
vrrp_sync_group VPN_GRE_TUNNEL {
group {
EXT
INT
}
notify "/usr/local/sbin/notify-interface-status.sh"
}
vrrp_instance EXT {
state MASTER
interface ens160
virtual_router_id 22
priority 50
advert_int 5
unicast_src_ip 10.237.7.71
unicast_peer {
10.237.7.72
}
authentication {
auth_type PASS
auth_pass xAR8WZcp6wsUoKe
}
virtual_ipaddress {
10.237.7.100/24 dev ens160
}
garp_master_delay 1
}
vrrp_instance INT {
state MASTER
interface vlan101
virtual_router_id 11
priority 50
advert_int 5
unicast_src_ip 10.10.10.71
unicast_peer {
10.10.10.72
}
authentication {
auth_type PASS
auth_pass xAR8WZcp6wsUoKe
}
virtual_ipaddress {
10.10.10.254/24 dev vlan101
}
garp_master_delay 1
}
OEF
Thực hiện trên VPN Server 2 – 10.237.7.72
cat > /etc/keepalived/keepalived.conf << 'OEF'
vrrp_sync_group VPN_GRE_TUNNEL {
group {
EXT
INT
}
notify "/usr/local/sbin/notify-interface-status.sh"
}
vrrp_instance EXT {
state MASTER
interface ens160
virtual_router_id 22
priority 50
advert_int 5
unicast_src_ip 10.237.7.72
unicast_peer {
10.237.7.71
}
authentication {
auth_type PASS
auth_pass xAR8WZcp6wsUoKe
}
virtual_ipaddress {
10.237.7.100/24 dev ens160
}
garp_master_delay 1
}
vrrp_instance INT {
state MASTER
interface vlan101
virtual_router_id 11
priority 50
advert_int 5
unicast_src_ip 10.10.10.72
unicast_peer {
10.10.10.71
}
authentication {
auth_type PASS
auth_pass xAR8WZcp6wsUoKe
}
virtual_ipaddress {
10.10.10.254/24 dev vlan101
}
garp_master_delay 1
}
OEF
Trên cả 2 VPN Server ở Site 1, tạo file notify-interface-status.sh để check trạng thái interface, sử dụng để bầu chọn Server nào sẽ nắm VIP.
cat > /usr/local/sbin/notify-interface-status.sh << 'OEF'
#!/bin/bash
check_interfaces() {
if ! ip link show ens160 | grep -q "state UP"; then
/usr/bin/logger "Interface ens160 is down, changing state to BACKUP"
kill -USR1 $(cat /var/run/keepalived.pid)
return 1
fi
if ! ip link show ens192 | grep -q "state UP"; then
/usr/bin.logger "Interface ens192 is down, changing state to BACKUP"
kill -USR1 $(cat /var/run/keepalived.pid)
return 1
fi
return 0
}
check_interfaces
OEF
Phân quyền thực thi cho script.
chmod +x /usr/local/sbin/notify-interface-status.sh
Khởi động lại Keepalived service và bật tính năng tự khởi động theo hệ thống cho nó.
systemctl restart keepalived.service
systemctl enable keepalived.service
Kiểm tra trạng thái dịch vụ Keepalived.
shell> systemctl is-active keepalived.service
active
Bước 4 – Tạo scipt auto start Tunnel trên VPN Server Master.
Thực hiện trên cả 2 VPN Server 1 – 10.237.7.71 và VPN Server 2 – 10.237.7.72 thuộc SITE 1.
cat > /usr/local/bin/active_gre1_tunnel << 'OEF'
#!/bin/bash
count=0
while true; do
sleep 20
STATE=$(kill -s $(keepalived --signum=DATA) $(cat /var/run/keepalived.pid) && grep -E 'VRRP_Instance|State' /tmp/keepalived.data | awk '/State/ {print $NF}' | grep -E 'MASTER|BACKUP|FAULT' | tail -n 1)
tunnel_status=$(ping -c 4 -W0.5 -I gre1 172.16.101.2 >/dev/null 2>&1 && echo "active" || echo "inactive")
if [[ "$STATE" == "MASTER" ]]; then
if [ ${tunnel_status} == 'inactive' ]; then
echo "${count} - GRE Tunnel is not running, state is MASTER -> Start GRE Tunnel"
ip link set gre1 down
sleep 5
ip link set gre1 up
else
echo "${count} - GRE Tunnel is up and running, state is MASTER"
fi
else
if [[ $(systemctl is-active strongswan-starter.service) == 'inactive' ]]; then
echo "${count} - GRE Tunnel is not running, state is BACKUP"
else
echo "${count} - GRE Tunnel is up and running, state is BACKUP -> Stop GRE Tunnel"
ip link set gre1 down
fi
fi
count=$((count+1))
done
OEF
chmod +x /usr/local/bin/active_gre1_tunnel
Thực hiện trên VPN Server – 10.237.7.73 thuộc Site 2.
cat > /usr/local/bin/active_gre1_tunnel << 'OEF'
#!/bin/bash
count=0
while true; do
sleep 10
tunnel_status=$(ping -c 4 -W0.5 -I gre1 172.16.101.1 >/dev/null 2>&1 && echo "active" || echo "inactive")
if [ ${tunnel_status} == 'inactive' ]; then
echo "${count} - GRE Tunnel is not running -> Start GRE Tunnel"
ip link set gre1 down
sleep 5
ip link set gre1 up
else
echo "${count} - GRE Tunnel is up and running"
fi
count=$((count+1))
done
OEF
chmod +x /usr/local/bin/active_gre1_tunnel
Thực hiện tại dịch vụ cho script trên ở tất cả các VPN Server cả 2 Site.
cat > /etc/systemd/system/active_gre1_tunnel.service << OEF
[Unit]
After=network.target
[Service]
WorkingDirectory=/usr/local/bin/
ExecStart=/usr/local/bin/active_gre1_tunnel
Restart=always
User=root
Group=root
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
OEF
Kích hoạt dịch vụ.
systemctl daemon-reload
systemctl enable active_gre1_tunnel
systemctl restart active_gre1_tunnel
Bước 5 – Check trạng thái dịch vụ.
Thực hiện trên VPN Server 1 – 10.237.7.71 trạng thái đã Active và kết quả cho thấy Keepalived đang bầu chọn Server này làm Master.
shell> systemctl status active_gre1_tunnel
● active_gre1_tunnel.service
Loaded: loaded (/etc/systemd/system/active_gre1_tunnel.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2025-03-22 22:17:01 +07; 1min 45s ago
Main PID: 31314 (active_gre1_tun)
Tasks: 2 (limit: 9830)
Memory: 732.0K
CPU: 108ms
CGroup: /system.slice/active_gre1_tunnel.service
├─31314 /bin/bash /usr/local/bin/active_gre1_tunnel
└─34369 sleep 20
Mar 22 22:17:01 CEPH-LAB-MON-071 systemd[1]: Started active_gre1_tunnel.service.
Mar 22 22:17:24 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 0 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:17:48 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 1 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:18:11 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 2 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:18:34 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 3 - GRE Tunnel is up and running, state is MASTER
Thực hiện trên VPN Server 2 – 10.237.7.72 trạng thái đã Active và kết quả cho thấy Keepalived đang bầu chọn Server này làm Backup.
shell> systemctl status active_gre1_tunnel
● active_gre1_tunnel.service
Loaded: loaded (/etc/systemd/system/active_gre1_tunnel.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2025-03-22 22:17:00 +07; 2min 8s ago
Main PID: 14222 (active_gre1_tun)
Tasks: 2 (limit: 9409)
Memory: 636.0K
CPU: 94ms
CGroup: /system.slice/active_gre1_tunnel.service
├─14222 /bin/bash /usr/local/bin/active_gre1_tunnel
└─17726 sleep 20
Mar 22 22:17:00 CEPH-LAB-MON-072 systemd[1]: Started active_gre1_tunnel.service.
Mar 22 22:17:24 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 0 - GRE Tunnel is not running, state is BACKUP
Mar 22 22:17:48 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 1 - GRE Tunnel is not running, state is BACKUP
Mar 22 22:18:11 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 2 - GRE Tunnel is not running, state is BACKUP
Mar 22 22:18:35 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 3 - GRE Tunnel is not running, state is BACKUP
Mar 22 22:18:58 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 4 - GRE Tunnel is not running, state is BACKUP
Tương tự thực hiện trên VPN Server – 10.237.7.73 của Site 2 trạng thái đã Active và kết quả cho thấy Tunnel đã Active
shell> systemctl status active_gre1_tunnel
● active_gre1_tunnel.service
Loaded: loaded (/etc/systemd/system/active_gre1_tunnel.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2025-03-22 22:25:50 +07; 14s ago
Main PID: 28499 (active_gre1_tun)
Tasks: 2 (limit: 9409)
Memory: 528.0K
CPU: 5ms
CGroup: /system.slice/active_gre1_tunnel.service
├─28499 /bin/bash /usr/local/bin/active_gre1_tunnel
└─29131 sleep 10
Mar 22 22:25:50 CEPH-LAB-MON-073 systemd[1]: Started active_gre1_tunnel.service.
Mar 22 22:26:03 CEPH-LAB-MON-073 active_gre1_tunnel[28499]: 0 - GRE Tunnel is up and running
Kết quả ip addr show cũng cho thấy Keepalived đang cấp VIP cho VPN Server 1.
shell> ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:80:d6:e5 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 10.237.7.71/24 brd 10.237.7.255 scope global ens160
valid_lft forever preferred_lft forever
inet 10.237.7.100/24 scope global secondary ens160
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe80:d6e5/64 scope link
valid_lft forever preferred_lft forever
shell> ip addr show vlan101
8: vlan101@ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:50:56:80:4f:ec brd ff:ff:ff:ff:ff:ff
inet 10.10.10.71/24 brd 10.10.10.255 scope global vlan101
valid_lft forever preferred_lft forever
inet 10.10.10.254/24 scope global secondary vlan101
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe80:4fec/64 scope link
valid_lft forever preferred_lft forever
VPN Server 2 đang nắm Backup nên sẽ không giữ VIP.
shell> ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:80:e4:8c brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 10.237.7.72/24 brd 10.237.7.255 scope global ens160
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe80:e48c/64 scope link
valid_lft forever preferred_lft forever
shell> ip addr show vlan101
8: vlan101@ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:50:56:80:16:26 brd ff:ff:ff:ff:ff:ff
inet 10.10.10.72/24 brd 10.10.10.255 scope global vlan101
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe80:1626/64 scope link
valid_lft forever preferred_lft forever
Kết quả traceroute từ Client Site 1 sang Site 2.
shell> traceroute 20.20.20.75
traceroute to 20.20.20.75 (20.20.20.75), 30 hops max, 60 byte packets
1 10.10.10.71 (10.10.10.71) 0.119 ms 0.079 ms 0.089 ms
2 172.16.101.2 (172.16.101.2) 0.228 ms 0.223 ms 0.223 ms
3 20.20.20.75 (20.20.20.75) 0.458 ms 0.435 ms 0.408 ms
Kết quả traceroute từ Client Site 2 sang Site 1.
shell> traceroute 10.10.10.74
traceroute to 10.10.10.74 (10.10.10.74), 30 hops max, 60 byte packets
1 20.20.20.73 (20.20.20.73) 0.110 ms 0.092 ms 0.069 ms
2 172.16.101.1 (172.16.101.1) 0.213 ms 0.187 ms 0.206 ms
3 10.10.10.74 (10.10.10.74) 0.384 ms 0.415 ms 0.385 ms
6. Verify tính năng HA.
Trên VPN Server 1 hãy tắt 1 interface ví dụ ens192.
ip link set ens192 down
Interface ens192 đã rơi vào trạng thái down, đồng thời vlan101 và ens160 đã mất VIP.
shell> ip addr show ens192
3: ens192: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 00:50:56:80:4f:ec brd ff:ff:ff:ff:ff:ff
altname enp11s0
shell> ip addr show vlan101
8: vlan101@ens192: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 00:50:56:80:4f:ec brd ff:ff:ff:ff:ff:ff
inet 10.10.10.71/24 brd 10.10.10.255 scope global vlan101
valid_lft forever preferred_lft forever
shell> ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:80:d6:e5 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 10.237.7.71/24 brd 10.237.7.255 scope global ens160
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe80:d6e5/64 scope link
valid_lft forever preferred_lft forever
Check log bạn thấy Keepalived đã đưa VPN Server 1 về trạng thái Backup và Tunnel đã được tắt trên Server này.
shell> systemctl status active_gre1_tunnel
● active_gre1_tunnel.service
Loaded: loaded (/etc/systemd/system/active_gre1_tunnel.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2025-03-22 22:17:01 +07; 19min ago
Main PID: 31314 (active_gre1_tun)
Tasks: 2 (limit: 9830)
Memory: 744.0K
CPU: 1.372s
CGroup: /system.slice/active_gre1_tunnel.service
├─ 2816 sleep 20
└─31314 /bin/bash /usr/local/bin/active_gre1_tunnel
Mar 22 22:33:11 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 41 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:33:34 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 42 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:33:57 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 43 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:34:20 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 44 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:34:43 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 45 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:35:06 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 46 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:35:29 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 47 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:35:53 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 48 - GRE Tunnel is not running, state is BACKUP
Mar 22 22:36:16 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 49 - GRE Tunnel is not running, state is BACKUP
Mar 22 22:36:40 CEPH-LAB-MON-071 active_gre1_tunnel[31314]: 50 - GRE Tunnel is not running, state is BACKUP
Lúc này VIP đã được chuyển giao cho VPN Server 2.
shell> ip addr show vlan101
8: vlan101@ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:50:56:80:16:26 brd ff:ff:ff:ff:ff:ff
inet 10.10.10.72/24 brd 10.10.10.255 scope global vlan101
valid_lft forever preferred_lft forever
inet 10.10.10.254/24 scope global secondary vlan101
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe80:1626/64 scope link
valid_lft forever preferred_lft forever
shell> ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:80:e4:8c brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 10.237.7.72/24 brd 10.237.7.255 scope global ens160
valid_lft forever preferred_lft forever
inet 10.237.7.100/24 scope global secondary ens160
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe80:e48c/64 scope link
valid_lft forever preferred_lft forever
Check log bạn cũng thấy VPN Server đã giành quyền MASTER và Tunnel đã được kích hoạt.
shell> systemctl status active_gre1_tunnel
● active_gre1_tunnel.service
Loaded: loaded (/etc/systemd/system/active_gre1_tunnel.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2025-03-22 22:17:00 +07; 21min ago
Main PID: 14222 (active_gre1_tun)
Tasks: 2 (limit: 9409)
Memory: 632.0K
CPU: 1.013s
CGroup: /system.slice/active_gre1_tunnel.service
├─14222 /bin/bash /usr/local/bin/active_gre1_tunnel
└─49039 sleep 20
Mar 22 22:35:05 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 45 - GRE Tunnel is not running, state is BACKUP
Mar 22 22:35:29 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 46 - GRE Tunnel is not running, state is BACKUP
Mar 22 22:35:52 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 47 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:36:15 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 48 - GRE Tunnel is up and running, state is MASTER
Mar 22 22:36:38 CEPH-LAB-MON-072 active_gre1_tunnel[14222]: 49 - GRE Tunnel is up and running, state is MASTER
Nếu bạn thả ping bạn sẽ thấy có 1 số gói icmp bị mất, đây là khoảng thời gian thiết lập lại VIP và Tunnel.
shell> ping 20.20.20.75
PING 20.20.20.75 (20.20.20.75) 56(84) bytes of data.
64 bytes from 20.20.20.75: icmp_seq=1 ttl=62 time=0.312 ms
64 bytes from 20.20.20.75: icmp_seq=2 ttl=62 time=0.274 ms
<....>
64 bytes from 20.20.20.75: icmp_seq=224 ttl=62 time=0.240 ms
64 bytes from 20.20.20.75: icmp_seq=225 ttl=62 time=0.510 ms
64 bytes from 20.20.20.75: icmp_seq=226 ttl=62 time=0.385 ms
^C
--- 20.20.20.75 ping statistics ---
226 packets transmitted, 215 received, 4.86726% packet loss, time 230347ms
rtt min/avg/max/mdev = 0.223/0.327/0.988/0.091 ms
6. Kết luận
GRE Tunnel giúp kết nối hai site dễ dàng qua môi trường Internet mà không cần public IP address trên cả hai đầu.
Tuy nhiên, GRE không mã hóa dữ liệu, vì vậy nếu muốn tăng tính bảo mật, bạn nên kết hợp với IPsec để mã hóa dữ liệu trong tunnel.
Việc triển khai GRE phù hợp với môi trường lab, mô phỏng kết nối giữa các chi nhánh trong doanh nghiệp.