Tuesday, February 25, 2025

Cấu hình VPN IPsec Site-to-Site với StrongSwan

-

1. Tổng quan.

Hướng dẫn này mô tả cách cấu hình VPN IPsec site-to-site giữa hai site A và B sử dụng StrongSwan. Mục tiêu là thiết lập một kết nối bảo mật giữa hai mạng nội bộ thông qua internet.

Hãy so sánh IPSec và WireGuard, ta thấy chúng đều là các giao thức VPN phổ biến, nhưng chúng có những đặc điểm và hiệu suất khác nhau.

IPSec.

  • Bảo mật: IPSec là một giao thức VPN rất bảo mật và đã được sử dụng rộng rãi trong nhiều năm. Nó hỗ trợ nhiều thuật toán mã hóa và xác thực.
  • Hiệu suất: IPSec có thể có hiệu suất tốt, nhưng nó thường phức tạp hơn để cấu hình và quản lý. Hiệu suất có thể bị ảnh hưởng bởi overhead từ việc mã hóa và xác thực.
  • Khả năng tương thích: IPSec được hỗ trợ rộng rãi trên nhiều nền tảng và thiết bị, bao gồm cả các thiết bị mạng doanh nghiệp và hệ điều hành.
  • Phức tạp: Cấu hình IPSec có thể phức tạp và yêu cầu nhiều kiến thức về mạng và bảo mật.

WireGuard.

  • Bảo mật: WireGuard được thiết kế với mục tiêu đơn giản và bảo mật. Nó sử dụng các thuật toán mã hóa mới và được đánh giá cao về bảo mật.
  • Hiệu suất: WireGuard thường có hiệu suất tốt hơn IPSec do thiết kế đơn giản và hiệu quả. Nó có thể cung cấp tốc độ kết nối nhanh hơn và độ trễ thấp hơn.
  • Khả năng tương thích: WireGuard là một giao thức mới hơn và không được hỗ trợ rộng rãi như IPSec trên tất cả các thiết bị và nền tảng. Tuy nhiên, nó đang ngày càng được tích hợp vào nhiều hệ điều hành và thiết bị.
  • Đơn giản: WireGuard rất dễ cấu hình và quản lý so với IPSec. Cấu hình của nó đơn giản và dễ hiểu.

Nếu bạn cần một giải pháp VPN đơn giản, hiệu suất cao và dễ cấu hình, WireGuard là một lựa chọn tốt. Nếu bạn cần một giải pháp VPN đã được kiểm chứng và hỗ trợ rộng rãi trên nhiều thiết bị và nền tảng, IPSec có thể là lựa chọn phù hợp.

2. Thông tin các site và sơ đồ đấu nối.

Thông tin các site.

- Site A
    + IP WAN: 10.237.7.81
    + Subnet Internal: 192.168.1.0/24, 192.168.2.0/24
    + Server internal 1: 192.168.1.81/24
    + Server internal 2: 192.168.2.81/24

- Site B
    + IP WAN: 10.237.7.82
    + Subnet Internal: 192.168.3.0/24, 192.168.4.0/24
    + Server internal 1: 192.168.3.82/24
    + Server internal 2: 192.168.4.82/24

Topology mô tả cấu trúc mạng giữa hai site với kết nối IPsec VPN Tunnel (IKEv2).

       +----------------------------+----------------------------+
       |        Site A               |          Site B           |
       |  WAN: 10.237.7.81           |  WAN: 10.237.7.82         |
       |  Subnets:                   |  Subnets:                 |
       |  192.168.1.0/24             |  192.168.3.0/24           |
       |  192.168.2.0/24             |  192.168.4.0/24           |
       |                             |                           |
       +----------------------------+----------------------------+
                |                                    |
                |---- IPsec VPN Tunnel (IKEv2) ----  |
                |                                    |
    +-----------------------+          +-----------------------+
    | Server 1 (Site A)     |          | Server 1 (Site B)     |
    | 192.168.1.81/24       |          | 192.168.3.82/24       |
    +-----------------------+          +-----------------------+
    | Server 2 (Site A)     |          | Server 2 (Site B)     |
    | 192.168.2.81/24       |          | 192.168.4.82/24       |
    +-----------------------+          +-----------------------+

3. Hướng dẫn config.

3.1. Kích hoạt chuyển tiếp gói tin trên Kernel.

Thêm các dòng cấu hình vào cuối file `/etc/sysctl.conf` và reload cấu hình.

cat >> /etc/sysctl.conf << 'OEF'
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
OEF

Lưu file và chạy lệnh dưới để áp dụng thay đổi.

sysctl -p

3.2. Config network.

Config network cho VPN Server Site A.

cat > /etc/netplan/00-installer-config.yaml << 'OEF'
network:
  ethernets:
    ens160:
      addresses:
      - 10.237.7.81/24
    ens192:
      addresses:
      - 192.168.1.81/24
  version: 2
OEF

netplan apply

Config network cho VPN Server Site B.

cat > /etc/netplan/00-installer-config.yaml << 'OEF'
network:
  ethernets:
    ens160:
      addresses:
      - 10.237.7.82/24
    ens192:
      addresses:
      - 192.168.3.82/24
  version: 2
OEF

netplan apply

3.3. Cài đặt Strongswan.

Cài đặt daemon StrongSwan IPSec trên hệ thống.

apt-get update
apt-get install strongswan libcharon-extra-plugins strongswan-pki -y

3.4. Cấu hình thêm khóa xác thực cho 2 Site.

Thiết lập khóa PSK cho cả hai site trong file `/etc/ipsec.secrets`.

Với Site A

cat > /etc/ipsec.secrets << 'OEF'
10.237.7.81 10.237.7.82 : PSK "MyKey123"
OEF

Với Site B

cat > /etc/ipsec.secrets << 'OEF'
10.237.7.82 10.237.7.81 : PSK "MyKey123"
OEF

3.5. Config IPSec VPN.

Backup file /etc/ipsec.conf cho cả 2 VPN Server ở 2 Site.

mv /etc/ipsec.conf /etc/ipsec.conf.bak

Tạo file cấu hình mới cho StrongSwan tại `/etc/ipsec.conf` cho cả hai site với các thông số kết nối.

Tạo lại file /etc/ipsec.conf cho VPN Server Site A.

cat > /etc/ipsec.conf << 'OEF'
config setup
    charondebug="all"
    uniqueids=yes
    strictcrlpolicy=no

conn site-a-to-site-b
    authby=secret
    left=%defaultroute
    leftid=10.237.7.81
    leftsubnet=192.168.1.0/24,192.168.2.0/24
    right=10.237.7.82
    rightsubnet=192.168.3.0/24,192.168.4.0/24
    ike=aes256-sha2_256-modp2048
    esp=aes256-sha2_256
    keyexchange=ikev2
    keyingtries=0
    ikelifetime=1h
    lifetime=8h
    dpddelay=30
    dpdtimeout=120
    dpdaction=restart
    auto=start
OEF

Tạo lại file /etc/ipsec.conf cho VPN Server Site B.

cat > /etc/ipsec.conf << 'OEF'
config setup
    charondebug="all"
    uniqueids=yes
    strictcrlpolicy=no

conn site-a-to-site-b
    authby=secret
    left=%defaultroute # hoặc chỉ đích danh IP, ex: left=10.237.7.81
    leftid=10.237.7.82
    leftsubnet=192.168.3.0/24,192.168.4.0/24
    right=10.237.7.81
    rightsubnet=192.168.1.0/24,192.168.2.0/24
    ike=aes256-sha2_256-modp2048
    esp=aes256-sha2_256
    keyexchange=ikev2
    keyingtries=0
    ikelifetime=1h
    lifetime=8h
    dpddelay=30
    dpdtimeout=120
    dpdaction=restart
    auto=start
OEF

Các tùy chọn này giúp cấu hình một kết nối VPN site-to-site bảo mật và ổn định giữa hai mạng và chúng có ý nghĩa như sau:

Phần config setup.

config setup
    charondebug="all"
    uniqueids=yes
    strictcrlpolicy=no
  • charondebug=”all”: Tùy chọn này bật tất cả các mức độ ghi log cho daemon Charon của StrongSwan. Điều này hữu ích cho việc gỡ lỗi vì nó cung cấp thông tin chi tiết về mọi hoạt động của Charon.
  • uniqueids=yes: Tùy chọn này đảm bảo rằng mỗi ID của người dùng (ví dụ: địa chỉ IP) là duy nhất. Nếu một người dùng cố gắng kết nối với cùng một ID từ một thiết bị khác, kết nối cũ sẽ bị ngắt.
  • strictcrlpolicy=no: Tùy chọn này cho phép các chứng chỉ không có danh sách thu hồi chứng chỉ (CRL) hợp lệ vẫn được chấp nhận. Nếu đặt là yes, các chứng chỉ không có CRL hợp lệ sẽ bị từ chối.

Phần conn ví dụ như conn site-a-to-site-b.

conn site-a-to-site-b
    authby=secret
    left=%defaultroute # hoặc chỉ đích danh IP, ex: left=10.237.7.81
    leftid=10.237.7.81
    leftsubnet=192.168.1.0/24,192.168.2.0/24
    right=10.237.7.82
    rightsubnet=192.168.3.0/24,192.168.4.0/24
    ike=aes256-sha2_256-modp2048
    esp=aes256-sha2_256
    keyexchange=ikev2
    keyingtries=0
    ikelifetime=1h
    lifetime=8h
    dpddelay=30
    dpdtimeout=120
    dpdaction=restart
    auto=start
  • authby=secret: Chỉ định rằng việc xác thực sẽ được thực hiện bằng cách sử dụng pre-shared key.
  • left=%defaultroute: Sử dụng interface có default route để thiết lập kết nối VPN
  • leftid=10.237.7.81: ID của local, thường là địa chỉ IP hoặc tên miền.
  • leftsubnet=192.168.1.0/24,192.168.2.0/24: Các subnet trong local sẽ được bảo vệ bởi VPN.
  • right=10.237.7.82: Địa chỉ IP của remote VPN.
  • rightsubnet=192.168.3.0/24,192.168.4.0/24: Các subnet remote VPN sẽ được bảo vệ bởi VPN.
  • ike=aes256-sha2_256-modp2048: Các thuật toán được sử dụng cho IKE (Internet Key Exchange). aes256 là mã hóa AES với khóa 256-bit, sha2_256 là hàm băm SHA-256 và modp2048 là nhóm Diffie-Hellman với kích thước 2048-bit.
  • esp=aes256-sha2_256: Các thuật toán được sử dụng cho ESP (Encapsulating Security Payload). aes256 là mã hóa AES với khóa 256-bit và sha2_256 là hàm băm SHA-256.
  • keyexchange=ikev2: Sử dụng version 2 của giao thức IKE để trao đổi khóa.
  • keyingtries=0: Số lần thử lại khi trao đổi khóa thất bại. 0 có nghĩa là thử lại vô hạn.
  • ikelifetime=1h: Thời gian sống của khóa IKE trước khi nó cần được làm mới. Ở đây là 1 giờ.
  • lifetime=8h: Thời gian sống của khóa IPsec trước khi nó cần được làm mới. Ở đây là 8 giờ.
  • dpddelay=30: Khoảng thời gian (giây) giữa các gói DPD (Dead Peer Detection) để kiểm tra kết nối.
  • dpdtimeout=120: Thời gian chờ (giây) trước khi xác định rằng peer đã chết nếu không nhận được phản hồi DPD.
  • dpdaction=restart: Hành động sẽ được thực hiện khi peer được xác định là đã chết. restart có nghĩa là khởi động lại kết nối.
  • auto=start: Tự động khởi động kết nối khi dịch vụ StrongSwan khởi động.

Khởi động dịch vụ strongswan-starter.service và bật tự khởi động theo OS cho nó.

systemctl restart strongswan-starter.service
systemctl enable strongswan-starter.service

Check status dịch vụ strongswan-starter.service ở Site A.

shell> systemctl status strongswan-starter.service
● strongswan-starter.service - strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf
     Loaded: loaded (/lib/systemd/system/strongswan-starter.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2025-02-17 07:41:34 UTC; 11s ago
   Main PID: 3718 (starter)
      Tasks: 18 (limit: 4558)
     Memory: 4.1M
        CPU: 55ms
     CGroup: /system.slice/strongswan-starter.service
             ├─3718 /usr/lib/ipsec/starter --daemon charon --nofork
             └─3723 /usr/lib/ipsec/charon

Feb 17 07:41:35 node81 charon[3723]: 09[IKE] authentication of '10.237.7.81' (myself) with pre-shared key
Feb 17 07:41:35 node81 charon[3723]: 09[IKE] IKE_SA site-a-to-site-b[2] established between 10.237.7.81[10.237.7.81]...10.237.7.82[10.237.7.82]
Feb 17 07:41:35 node81 charon[3723]: 09[IKE] IKE_SA site-a-to-site-b[2] established between 10.237.7.81[10.237.7.81]...10.237.7.82[10.237.7.82]
Feb 17 07:41:35 node81 charon[3723]: 09[IKE] scheduling reauthentication in 2961s
Feb 17 07:41:35 node81 charon[3723]: 09[IKE] maximum IKE_SA lifetime 3501s
Feb 17 07:41:35 node81 charon[3723]: 09[CFG] selected proposal: ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ
Feb 17 07:41:35 node81 charon[3723]: 09[IKE] CHILD_SA site-a-to-site-b{1} established with SPIs c120abfe_i ca45ee6f_o and TS 192.168.1.0/24 192.168.2.0/24 === 192.168.3.0/24 192.168.4.0/24
Feb 17 07:41:35 node81 charon[3723]: 09[IKE] CHILD_SA site-a-to-site-b{1} established with SPIs c120abfe_i ca45ee6f_o and TS 192.168.1.0/24 192.168.2.0/24 === 192.168.3.0/24 192.168.4.0/24
Feb 17 07:41:35 node81 charon[3723]: 09[ENC] generating IKE_AUTH response 1 [ IDr AUTH SA TSi TSr N(MOBIKE_SUP) N(NO_ADD_ADDR) ]
Feb 17 07:41:35 node81 charon[3723]: 09[NET] sending packet: from 10.237.7.81[4500] to 10.237.7.82[4500] (272 bytes)

Check status dịch vụ strongswan-starter.service ở Site B.

shell> systemctl status strongswan-starter.service
● strongswan-starter.service - strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf
     Loaded: loaded (/lib/systemd/system/strongswan-starter.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2025-02-17 07:41:35 UTC; 1min 4s ago
   Main PID: 3754 (starter)
      Tasks: 18 (limit: 4558)
     Memory: 4.2M
        CPU: 104ms
     CGroup: /system.slice/strongswan-starter.service
             ├─3754 /usr/lib/ipsec/starter --daemon charon --nofork
             └─3759 /usr/lib/ipsec/charon

Feb 17 07:41:35 node82 charon[3759]: 09[IKE] peer supports MOBIKE
Feb 17 07:42:05 node82 charon[3759]: 07[NET] received packet: from 10.237.7.81[4500] to 10.237.7.82[4500] (80 bytes)
Feb 17 07:42:05 node82 charon[3759]: 07[ENC] parsed INFORMATIONAL request 0 [ ]
Feb 17 07:42:05 node82 charon[3759]: 07[ENC] generating INFORMATIONAL response 0 [ ]
Feb 17 07:42:05 node82 charon[3759]: 07[NET] sending packet: from 10.237.7.82[4500] to 10.237.7.81[4500] (80 bytes)
Feb 17 07:42:34 node82 charon[3759]: 12[IKE] sending DPD request
Feb 17 07:42:34 node82 charon[3759]: 12[ENC] generating INFORMATIONAL request 2 [ ]
Feb 17 07:42:34 node82 charon[3759]: 12[NET] sending packet: from 10.237.7.82[4500] to 10.237.7.81[4500] (80 bytes)
Feb 17 07:42:34 node82 charon[3759]: 13[NET] received packet: from 10.237.7.81[4500] to 10.237.7.82[4500] (80 bytes)
Feb 17 07:42:34 node82 charon[3759]: 13[ENC] parsed INFORMATIONAL response 2 [ ]

Bạn có thể sử dụng lệnh ipsec start/stop/restart để gửi các lệnh tương ứng nhé.

4. Kiểm tra trạng thái StrongSwan IPsec.

Sử dụng lệnh ipsec status để show status của tunnel Site A

shell> ipsec status
Security Associations (1 up, 0 connecting):
site-a-to-site-b[2]: ESTABLISHED 9 minutes ago, 10.237.7.81[10.237.7.81]...10.237.7.82[10.237.7.82]
site-a-to-site-b{1}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: c120abfe_i ca45ee6f_o
site-a-to-site-b{1}:   192.168.1.0/24 192.168.2.0/24 === 192.168.3.0/24 192.168.4.0/24

Sử dụng lệnh ipsec status để show status của tunnel Site B.

shell> ipsec status
Security Associations (1 up, 0 connecting):
site-a-to-site-b[1]: ESTABLISHED 9 minutes ago, 10.237.7.82[10.237.7.82]...10.237.7.81[10.237.7.81]
site-a-to-site-b{1}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: ca45ee6f_i c120abfe_o
site-a-to-site-b{1}:   192.168.3.0/24 192.168.4.0/24 === 192.168.1.0/24 192.168.2.0/24

Sử dụng lệnh ipsec statusall để show status chi tiết hơn của tunnel Site A.

shell> ipsec statusall
Status of IKE charon daemon (strongSwan 5.9.5, Linux 5.15.0-106-generic, x86_64):
  uptime: 42 seconds, since Feb 17 07:41:35 2025
  malloc: sbrk 3309568, mmap 0, used 1394320, free 1915248
  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 3
  loaded plugins: charon aesni aes rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agent xcbc hmac gcm drbg attr kernel-netlink resolve socket-default connmark forecast farp stroke updown eap-identity eap-aka eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap eap-tnc xauth-generic xauth-eap xauth-pam tnc-tnccs dhcp lookip error-notify certexpire led addrblock unity counters
Listening IP addresses:
  10.237.7.81
Connections:
site-a-to-site-b:  %any...10.237.7.82  IKEv2, dpddelay=30s
site-a-to-site-b:   local:  [10.237.7.81] uses pre-shared key authentication
site-a-to-site-b:   remote: [10.237.7.82] uses pre-shared key authentication
site-a-to-site-b:   child:  192.168.1.0/24 192.168.2.0/24 === 192.168.3.0/24 192.168.4.0/24 TUNNEL, dpdaction=restart
Security Associations (1 up, 0 connecting):
site-a-to-site-b[2]: ESTABLISHED 41 seconds ago, 10.237.7.81[10.237.7.81]...10.237.7.82[10.237.7.82]
site-a-to-site-b[2]: IKEv2 SPIs: 56aa32f37591d8bd_i 15c1743d51adc8cc_r*, pre-shared key reauthentication in 48 minutes
site-a-to-site-b[2]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
site-a-to-site-b{1}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: c120abfe_i ca45ee6f_o
site-a-to-site-b{1}:  AES_CBC_256/HMAC_SHA2_256_128, 0 bytes_i, 0 bytes_o, rekeying in 7 hours
site-a-to-site-b{1}:   192.168.1.0/24 192.168.2.0/24 === 192.168.3.0/24 192.168.4.0/24

Sử dụng lệnh ipsec statusall để show status chi tiết hơn của tunnel Site B.

shell> ipsec statusall
Status of IKE charon daemon (strongSwan 5.9.5, Linux 5.15.0-106-generic, x86_64):
  uptime: 92 seconds, since Feb 17 07:41:34 2025
  malloc: sbrk 3231744, mmap 0, used 1418016, free 1813728
  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 3
  loaded plugins: charon aesni aes rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agent xcbc hmac gcm drbg attr kernel-netlink resolve socket-default connmark forecast farp stroke updown eap-identity eap-aka eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap eap-tnc xauth-generic xauth-eap xauth-pam tnc-tnccs dhcp lookip error-notify certexpire led addrblock unity counters
Listening IP addresses:
  10.237.7.82
Connections:
site-a-to-site-b:  %any...10.237.7.81  IKEv2, dpddelay=30s
site-a-to-site-b:   local:  [10.237.7.82] uses pre-shared key authentication
site-a-to-site-b:   remote: [10.237.7.81] uses pre-shared key authentication
site-a-to-site-b:   child:  192.168.3.0/24 192.168.4.0/24 === 192.168.1.0/24 192.168.2.0/24 TUNNEL, dpdaction=restart
Security Associations (1 up, 0 connecting):
site-a-to-site-b[1]: ESTABLISHED 91 seconds ago, 10.237.7.82[10.237.7.82]...10.237.7.81[10.237.7.81]
site-a-to-site-b[1]: IKEv2 SPIs: 56aa32f37591d8bd_i* 15c1743d51adc8cc_r, pre-shared key reauthentication in 40 minutes
site-a-to-site-b[1]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
site-a-to-site-b{1}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: ca45ee6f_i c120abfe_o
site-a-to-site-b{1}:  AES_CBC_256/HMAC_SHA2_256_128, 0 bytes_i, 0 bytes_o, rekeying in 7 hours
site-a-to-site-b{1}:   192.168.3.0/24 192.168.4.0/24 === 192.168.1.0/24 192.168.2.0/24

5. Kiểm tra kết nối.

Sử dụng các lệnh `traceroute` và `ping` để kiểm tra kết nối giữa các server nội bộ của hai site.

Kết quả ICMP từ Server VPN với source là 192.168.1.81 và dest là 192.168.3.82.

shell> ping -I 192.168.1.81 -c 4 -W 1 192.168.3.82
PING 192.168.3.82 (192.168.3.82) from 192.168.1.81 : 56(84) bytes of data.
64 bytes from 192.168.3.82: icmp_seq=1 ttl=64 time=0.242 ms
64 bytes from 192.168.3.82: icmp_seq=2 ttl=64 time=0.234 ms
64 bytes from 192.168.3.82: icmp_seq=3 ttl=64 time=0.199 ms
64 bytes from 192.168.3.82: icmp_seq=4 ttl=64 time=0.193 ms

--- 192.168.3.82 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3068ms
rtt min/avg/max/mdev = 0.193/0.217/0.242/0.021 ms

Lệnh tracert cho thấy từ source đi tới dest chỉ 1 nexhop duy nhất.

shell> traceroute -I -s 192.168.1.81 192.168.3.82
traceroute to 192.168.3.82 (192.168.3.82), 30 hops max, 60 byte packets
 1  192.168.3.82 (192.168.3.82)  0.187 ms  0.191 ms  0.149 ms

Giải thích:

  • -I: Dùng ICMP Echo Request thay vì UDP.
  • -s 192.168.1.81: Chỉ định địa chỉ nguồn.
  • 192.168.3.82: Đích đến.

6. Lưu ý

Không sử dụng subnet riêng cho tunnel: Traffic giữa các subnet nội bộ của hai site sẽ được mã hóa bởi IPsec VPN Tunnel mà không cần một subnet riêng cho tunnel.

Sử dụng subnet riêng cho tunnel: Bạn có thể định nghĩa một subnet riêng cho tunnel nếu muốn tách biệt rõ ràng traffic VPN khỏi traffic nội bộ.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories