Tự dựng VPN Site-to-Site với StrongSwan: Kết nối chi nhánh bảo mật và chuyên nghiệp

Network tutorial - IT technology blog
Network tutorial - IT technology blog

Kết nối chi nhánh: Khi Leased Line quá xa xỉ

Bạn có hai văn phòng ở Hà Nội và Sài Gòn, cần chia sẻ file server hoặc truy cập database nội bộ nhưng không muốn tốn hàng chục triệu đồng mỗi tháng cho đường truyền riêng (Leased Line)? VPN Site-to-Site chạy trên nền Internet là lời giải kinh tế nhất. Trong thế giới Linux, StrongSwan là “ông vua” về IPsec nhờ độ ổn định cực cao, khả năng chịu tải tốt và tương thích hoàn hảo với các thiết bị cứng như Cisco, Juniper hay Mikrotik.

Nhiều anh em mới làm quen thường ngại IPsec vì cấu hình trông có vẻ “hàn lâm” hơn OpenVPN hay WireGuard. Thực tế, một khi đã nắm được logic, bạn sẽ thấy nó cực kỳ chuyên nghiệp và chặt chẽ, đặc biệt là trong các hạ tầng doanh nghiệp đòi hỏi tính tuân thủ nghiêm ngặt.

IPsec và StrongSwan: Hiểu nhanh để làm đúng

Đừng vội gõ lệnh khi chưa nắm rõ bản chất. IPsec là một bộ giao thức (Suite) gồm nhiều thành phần phối hợp với nhau. Hai thứ quan trọng nhất bạn cần để tâm là:

  • IKE (Internet Key Exchange): Giống như bước “bắt tay” và kiểm tra chứng minh thư. Nó thỏa thuận thuật toán mã hóa và tạo khóa bảo mật. Hãy luôn ưu tiên IKEv2 để có tốc độ kết nối nhanh và khả năng tự phục hồi đường truyền tốt hơn.
  • ESP (Encapsulating Security Payload): Đây là những chiếc “xe bọc thép” chở dữ liệu của bạn đi xuyên qua môi trường Internet đầy rẫy rủi ro.

StrongSwan đóng vai trò là bộ não (IKE Daemon) quản lý việc thiết lập kết nối, còn việc mã hóa gói tin thực tế sẽ do nhân Linux (Kernel) thực thi ở tốc độ cực nhanh.

Môi trường Lab thực tế

Để dễ hình dung, chúng ta sẽ thiết lập kết nối giữa hai Server Ubuntu đại diện cho hai đầu cầu:

  • Site A (Trụ sở chính):
    • IP Public: 1.1.1.1
    • Mạng nội bộ: 10.10.1.0/24
  • Site B (Văn phòng chi nhánh):
    • IP Public: 2.2.2.2
    • Mạng nội bộ: 10.10.2.0/24

Lưu ý quan trọng: Hãy quy hoạch IP thật kỹ để không bị trùng dải (overlap) giữa các chi nhánh. Nếu lúng túng khi chia Subnet, mình thường dùng toolcraft.app để tính toán nhanh dải host và broadcast, tránh những lỗi cấu hình ngớ ngẩn ngay từ đầu.

Các bước triển khai chi tiết

Bước 1: Cài đặt các gói phần mềm

Chạy lệnh này trên cả hai máy chủ để cài đặt StrongSwan và các thư viện cần thiết:

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

Bước 2: Mở luồng cho gói tin (IP Forwarding)

Vì server đóng vai trò là VPN Gateway, nó cần quyền chuyển tiếp gói tin giữa các card mạng. Bạn hãy mở file /etc/sysctl.conf và kích hoạt các dòng sau:

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

Áp dụng cấu hình ngay mà không cần reboot:

sudo sysctl -p

Bước 3: Thiết lập khóa bí mật xác thực (PSK)

Để hai bên tin tưởng nhau, chúng ta dùng phương thức Pre-Shared Key (PSK). Trong thực tế, PSK nên dài ít nhất 20 ký tự gồm cả số và chữ để đảm bảo an toàn.

Sửa file /etc/ipsec.secrets trên cả hai server:

# Định dạng: IP_A IP_B : PSK "MatKhauCuaBan"
1.1.1.1 2.2.2.2 : PSK "StrongPassword_2024_Security"

Bước 4: Cấu hình Tunnel IPsec

Đây là linh hồn của toàn bộ hệ thống. Tại Site A, bạn chỉnh sửa /etc/ipsec.conf như sau:

config setup
    charondebug="ike 2, knl 2, cfg 2"
    uniqueids=yes

conn siteA-to-siteB
    type=tunnel
    auto=start
    keyexchange=ikev2
    authby=secret
    
    # Local (Site A)
    left=1.1.1.1
    leftsubnet=10.10.1.0/24
    
    # Remote (Site B)
    right=2.2.2.2
    rightsubnet=10.10.2.0/24
    
    # Sử dụng AES-256 để bảo mật tối đa
    ike=aes256-sha256-modp2048!
    esp=aes256-sha256!

Với Site B, logic cấu hình hoàn toàn tương tự nhưng bạn cần đảo ngược giá trị leftright (Left luôn là chính nó).

Bước 5: Kích hoạt đường truyền

Khởi động lại dịch vụ để áp dụng thông số mới:

sudo ipsec restart

Kiểm tra thành quả bằng lệnh:

sudo ipsec statusall

Khi thấy dòng ESTABLISHED xuất hiện, chúc mừng bạn: hai văn phòng đã chính thức thông mạng với nhau qua một đường hầm bảo mật.

Kinh nghiệm xử lý lỗi thực chiến

VPN không lên hoặc chập chờn? Đừng hoảng, hãy check 3 điểm sau:

  1. Tường lửa chặn cổng: IPsec bắt buộc phải mở cổng 500 và 4500 (UDP). Nếu dùng UFW, hãy chạy: sudo ufw allow 500,4500/udp.
  2. Soi Log trực tiếp: Dùng lệnh tail -f /var/log/syslog | grep charon. Nếu thấy lỗi “NO_PROPOSAL_CHOSEN”, nghĩa là hai bên đang lệch thuật toán mã hóa (IKE/ESP).
  3. Lỗi treo khi tải file lớn (MTU/MSS): Đây là lỗi rất hay gặp. Gói tin IPsec có thêm header nên thường bị quá kích thước 1500 byte truyền thống. Hãy ép MSS xuống khoảng 1360 byte bằng Iptables để xử lý triệt để:
    sudo iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Lời kết

Xây dựng Site-to-Site VPN với StrongSwan giúp bạn kiểm soát hoàn toàn hạ tầng mạng mà không phụ thuộc vào bất kỳ nhà cung cấp dịch vụ bên thứ ba nào. Mặc dù cấu hình có phần khắt khe, nhưng bù lại bạn có một hệ thống đạt chuẩn doanh nghiệp, sẵn sàng mở rộng cho hàng trăm chi nhánh khác nhau. Chúc các bạn cấu hình thành công, nếu có bước nào “kẹt”, cứ thoải mái để lại câu hỏi phía dưới nhé!

Share: