No menu items!
No menu items!
More

    Kết nối GRE Tunnel giữa hai site trong mạng doanh nghiệp

    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 1SITE 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.7110.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.

    Bài viết gần đây

    spot_img

    Related Stories

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    Đăng ký nhận thông tin bài viết qua email