Hướng dẫn Troubleshooting VPN

Hướng dẫn Troubleshooting VPN Site-to-Site

Phần này giải quyết các vấn đề thường gặp trong quá trình thiết lập VPN và cung cấp giải pháp cho các phiên bản hệ điều hành khác nhau.

Tương thích Hệ điều hành

Phần mềm IPsec được khuyến nghị theo OS:

Hệ điều hành Phần mềm IPsec khuyến nghị Package Manager Trạng thái
Amazon Linux 2 OpenSwan yum ✅ Hỗ trợ
Amazon Linux 2023 Libreswan dnf ✅ Khuyến nghị
Ubuntu 20.04+ StrongSwan apt ✅ Ưu tiên
RHEL 8+ Libreswan dnf ✅ Hỗ trợ

Các Vấn đề Thường gặp và Giải pháp

Vấn đề 1: “Unable to find a match: openswan”

Nguyên nhân: Gói OpenSwan không có sẵn trong Amazon Linux 2023

Thông báo lỗi:

No match for argument: openswan
Error: Unable to locate package openswan

✅ Giải pháp: Sử dụng Libreswan thay vì OpenSwan

# Kiểm tra phiên bản OS trước
cat /etc/os-release

# Đối với Amazon Linux 2023
sudo dnf update -y
sudo dnf --enablerepo=fedora install libreswan -y

# Xác minh cài đặt
rpm -qa | grep libreswan
systemctl status ipsec

Vấn đề 2: Khác biệt Cú pháp Cấu hình

Nguyên nhân: Cấu hình OpenSwan không hoạt động với Libreswan

✅ Giải pháp: Cập nhật cú pháp cấu hình

Cấu hình Libreswan (/etc/ipsec.conf):

# /etc/ipsec.conf - Cấu hình Libreswan
config setup
    protostack=netkey
    plutodebug=none
    
# Bao gồm crypto policies và cấu hình bổ sung
include /etc/crypto-policies/back-ends/libreswan.config
include /etc/ipsec.d/*.conf

Cấu hình AWS Cập nhật (/etc/ipsec.d/aws.conf):

conn Tunnel1
    authby=secret
    auto=start
    left=%defaultroute
    leftid=<CUSTOMER_GATEWAY_PUBLIC_IP>
    right=<AWS_VPN_TUNNEL_1_IP>
    type=tunnel
    ikelifetime=8h
    keylife=1h
    phase2alg=aes128-sha1;modp2048
    ike=aes128-sha1;modp2048
    keyingtries=%forever
    keyexchange=ike
    leftsubnet=<LOCAL_NETWORK_CIDR>
    rightsubnet=<REMOTE_NETWORK_CIDR>
    dpddelay=10
    retransmit-timeout=30s
    dpdaction=restart_by_peer

conn Tunnel2
    authby=secret
    auto=start
    left=%defaultroute
    leftid=<CUSTOMER_GATEWAY_PUBLIC_IP>
    right=<AWS_VPN_TUNNEL_2_IP>
    type=tunnel
    ikelifetime=8h
    keylife=1h
    phase2alg=aes128-sha1;modp2048
    ike=aes128-sha1;modp2048
    keyingtries=%forever
    keyexchange=ike
    leftsubnet=<LOCAL_NETWORK_CIDR>
    rightsubnet=<REMOTE_NETWORK_CIDR>
    dpddelay=10
    retransmit-timeout=30s
    dpdaction=restart_by_peer

Khác biệt chính so với OpenSwan:

  • Loại bỏ tham số auth=esp (không cần trong Libreswan)
  • Thay đổi dpdtimeout=30 thành retransmit-timeout=30s
  • Cập nhật cú pháp DPD action

Vấn đề 3: Quản lý Network Service

Nguyên nhân: Lệnh service network restart không tìm thấy

Thông báo lỗi:

bash: service: command not found
# hoặc
Failed to restart network.service: Unit network.service not found

✅ Giải pháp: Sử dụng lệnh systemd cho Amazon Linux 2023

# Quản lý network service hiện đại
sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-networkd-wait-online

# Áp dụng thay đổi sysctl
sudo sysctl -p

# Quản lý IPsec service
sudo systemctl enable ipsec
sudo systemctl start ipsec
sudo systemctl restart ipsec

Vấn đề 4: VPN Tunnel Không Thiết lập được

Nguyên nhân: IPsec tunnels không thể thiết lập kết nối

✅ Các bước Chẩn đoán:

  1. Kiểm tra Trạng thái IPsec Service:
sudo systemctl status ipsec
sudo ipsec status
sudo ipsec trafficstatus
  1. Xác minh Cấu hình:
sudo ipsec verify
sudo ipsec whack --status
  1. Kiểm tra Kết nối Mạng:
# Test kết nối đến AWS VPN endpoints
ping -c 4 <AWS_VPN_TUNNEL_1_IP>
ping -c 4 <AWS_VPN_TUNNEL_2_IP>

# Kiểm tra routing
ip route show
ip route get <REMOTE_NETWORK>
  1. Phân tích Logs:
# Giám sát log real-time
sudo journalctl -u ipsec -f

# Kiểm tra authentication logs
sudo tail -f /var/log/secure

# Kiểm tra system messages
sudo tail -f /var/log/messages

Vấn đề 5: Lỗi Authentication

Nguyên nhân: PSK authentication thất bại

Nguyên nhân thường gặp:

  • PSK không chính xác trong secrets file
  • IP address không khớp
  • Vấn đề định dạng

✅ Giải pháp:

  1. Xác minh Cấu hình PSK (/etc/ipsec.d/aws.secrets):
# Định dạng chính xác (chú ý khoảng cách)
<CUSTOMER_GATEWAY_IP> <AWS_TUNNEL_IP>: PSK "<PRE_SHARED_KEY>"

# Ví dụ:
3.0.55.195 18.138.189.202: PSK "ODdP8ym_R7vCDK0DXdjKhozZc323Nd7V"
3.0.55.195 52.74.110.26: PSK "UKjoh_Q_FzbSyHAtlkQWUCj2ssw.6H09"
  1. Thiết lập Quyền File Chính xác:
sudo chmod 600 /etc/ipsec.d/aws.secrets
sudo chown root:root /etc/ipsec.d/aws.secrets
  1. Restart IPsec Service:
sudo systemctl restart ipsec

Troubleshooting Nâng cao

Xác minh Tham số Mạng

Kiểm tra Cấu hình Hệ thống:

# Xác minh IP forwarding
cat /proc/sys/net/ipv4/ip_forward

# Kiểm tra RP filter settings
cat /proc/sys/net/ipv4/conf/default/rp_filter

# Xác minh source route acceptance
cat /proc/sys/net/ipv4/conf/default/accept_source_route

Áp dụng Thiết lập Chính xác (/etc/sysctl.conf):

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0

# Áp dụng thay đổi
sudo sysctl -p

Cấu hình Firewall

Kiểm tra Trạng thái Firewall:

# Kiểm tra firewall có đang chạy không
sudo systemctl status firewalld

# Liệt kê rules hiện tại
sudo firewall-cmd --list-all

Cho phép IPsec Traffic:

# Cho phép IPsec protocols
sudo firewall-cmd --permanent --add-service=ipsec
sudo firewall-cmd --permanent --add-port=500/udp
sudo firewall-cmd --permanent --add-port=4500/udp

# Reload firewall
sudo firewall-cmd --reload

Tối ưu Hiệu suất

Tối ưu IPsec Performance:

# Thêm vào /etc/ipsec.conf dưới config setup
config setup
    protostack=netkey
    plutodebug=none
    # Tối ưu hiệu suất
    nhelpers=0
    interfaces=%defaultroute

Testing và Validation

Kiểm tra Kết nối

  1. Test VPN Tunnel Connectivity:
# Từ Customer Gateway đến AWS private resources
ping -c 4 <AWS_PRIVATE_IP>

# Từ AWS private resources đến Customer Gateway
ping -c 4 <CUSTOMER_GATEWAY_PRIVATE_IP>
  1. Xác minh Route Propagation:
# Kiểm tra VPN routes đã được học chưa
ip route show | grep <REMOTE_NETWORK>

# Xác minh route table trong AWS Console
# VPC → Route Tables → Kiểm tra propagated routes
  1. Giám sát Tunnel Status:
# Giám sát liên tục
watch -n 5 'sudo ipsec trafficstatus'

# Kiểm tra tunnel statistics
sudo ipsec whack --trafficstatus

Tham khảo Nhanh Lệnh

Lệnh Cần thiết cho Troubleshooting:

# Quản lý Service
sudo systemctl status ipsec
sudo systemctl restart ipsec
sudo systemctl enable ipsec

# Xác minh Cấu hình
sudo ipsec verify
sudo ipsec whack --status

# Kiểm tra Kết nối
ping -c 4 <REMOTE_IP>
traceroute <REMOTE_IP>

# Phân tích Log
sudo journalctl -u ipsec -f
sudo tail -f /var/log/secure

# Chẩn đoán Mạng
ip route show
netstat -rn
ss -tuln | grep -E '500|4500'

Nhận Hỗ trợ

Nếu bạn tiếp tục gặp vấn đề:

  1. Kiểm tra AWS VPN Connection Status trong AWS Console
  2. Tải xuống configuration files mới từ AWS
  3. Xác minh security group rules cho phép IPsec traffic
  4. Kiểm tra route table configurations trong cả hai VPCs
  5. Review CloudWatch VPN logs nếu được bật

Để được hỗ trợ thêm, tham khảo:

💡 Mẹo: Luôn test VPN connectivity từ cả hai hướng và giám sát logs trong quá trình thiết lập ban đầu để nhanh chóng xác định và giải quyết vấn đề.