Remote Access
Hướng dẫn VPN IPsec site-to-site MikroTik
Xây dựng VPN IPsec site-to-site MikroTik: cấu hình peer IKEv2, proposal, policy và quy tắc bỏ qua NAT giúp đường hầm hoạt động.
Tóm tắt VPN IPsec site-to-site MikroTik mã hóa lưu lượng giữa hai mạng hoàn chỉnh — trụ sở chính và chi nhánh, một NOC và một trạm phát sóng — để các máy trên mỗi LAN truy cập mạng còn lại như thể chúng nằm cùng chỗ. Hướng dẫn này cấu hình cả hai router trên RouterOS v7: peer IKEv2, identity với khóa chia sẻ trước, proposal Giai đoạn 2, policy đường hầm, quy tắc bỏ qua NAT vốn làm hỏng phần lớn các lần thử đầu tiên, cùng các quy tắc tường lửa và bước kiểm tra xác nhận đường hầm đang hoạt động.

VPN IPsec site-to-site MikroTik là gì?
VPN IPsec site-to-site MikroTik là một đường hầm mã hóa thường trực giữa hai router, hợp nhất hai LAN riêng biệt thành một mạng định tuyến được ở Lớp 3 mà không router nào phải mở cổng quản trị ra internet công cộng. Khác với các VPN truy cập từ máy khách như WireGuard hay OpenVPN — nơi chỉ một thiết bị quản trị kết nối vào — đường hầm site-to-site luôn bật và hoạt động từ mạng con tới mạng con: mọi máy phía sau Router A đều tự động truy cập được mọi máy được phép phía sau Router B. IPsec là lựa chọn đúng ở đây vì nó là chuẩn mở được hầu như mọi hãng tường lửa và router hỗ trợ, chạy trong nhân RouterOS nên có thông lượng tốt, và trên MikroTik nó được tích hợp sẵn mà không cần cài thêm gói nào.
Đường hầm được dựng qua hai lần thương lượng. Giai đoạn 1 (IKE) xác thực hai router với nhau và thiết lập kênh bảo mật; Giai đoạn 2 (IPsec) thương lượng các khóa thực sự mã hóa lưu lượng dữ liệu của bạn. Làm cho cả hai giai đoạn khớp nhau ở mỗi đầu thì đường hầm sẽ lên; chỉ cần lệch một thuật toán là nó âm thầm thất bại — đó là lý do các bước dưới đây giữ hai phía đối xứng.
Trước khi bắt đầu
Bạn cần hai router MikroTik chạy RouterOS v7, mỗi router có một địa chỉ IP công cộng hoặc tên DDNS hoạt động, cùng hai mạng con LAN không chồng lấn. Hướng dẫn này dùng 192.168.10.0/24 tại Địa điểm A và 192.168.20.0/24 tại Địa điểm B. Nếu cả hai địa điểm đều dùng 192.168.88.0/24 thì không thể định tuyến — hãy đánh lại địa chỉ một phía trước. Vì IPsec rất nhạy với sai lệch đồng hồ, hãy bật NTP trên cả hai router trước khi bắt đầu; nếu hai đầu lệch nhau, các security association sẽ hết hạn và đường hầm liên tục rớt.
Quản lý điều kiện tiên quyết đó trên nhiều hơn vài địa điểm đã là một gánh nặng. Khi bạn vận hành cả một đội thiết bị, MKController cho bạn một bảng điều khiển duy nhất để xác nhận phiên bản RouterOS và nguồn đồng hồ của từng router trước khi đưa đường hầm vào hoạt động, nhờ đó bạn không phải đăng nhập vào từng thiết bị chỉ để kiểm tra xem nó đã sẵn sàng chưa.
Bước 1: Tạo profile và peer IKE
Tại Địa điểm A, hãy định nghĩa profile Giai đoạn 1 và trỏ một peer tới địa chỉ công cộng của Địa điểm B:
/ip ipsec profile add name=to-siteB hash-algorithm=sha256 \ enc-algorithm=aes-256 dh-group=modp2048 lifetime=1d
/ip ipsec peer add name=siteB address=<SITE_B_PUBLIC_IP>/32 \ profile=to-siteB exchange-mode=ike2dh-group=modp2048 là Diffie-Hellman Nhóm 14 — một giá trị mặc định hiện đại và vững chắc. exchange-mode=ike2 chọn IKEv2, nhanh hơn và bền hơn chế độ main/IKEv1 cũ. Cả hai đầu phải dùng cùng các giá trị profile và cùng chế độ trao đổi.
Bước 2: Thêm identity (khóa chia sẻ trước)
/ip ipsec identity add peer=siteB auth-method=pre-shared-key \ secret="<long-random-shared-secret>"Hãy dùng một chuỗi bí mật dài, ngẫu nhiên và lưu giữ nó như cách bạn lưu một khóa SSH — không phải trong tin nhắn chat. Cùng chuỗi bí mật đó được đặt trên cả hai router.
Bước 3: Xác định proposal Giai đoạn 2
/ip ipsec proposal add name=to-siteB auth-algorithms=sha256 \ enc-algorithms=aes-256-cbc pfs-group=modp2048Perfect Forward Secrecy (pfs-group) nghĩa là mỗi lần làm mới khóa đều dùng vật liệu khóa mới, nên một khóa bị lộ sẽ không bao giờ làm lộ lưu lượng trong quá khứ. Giống như Giai đoạn 1, các thuật toán phải khớp ở cả hai đầu.
Bước 4: Tạo policy cho đường hầm
Policy cho RouterOS biết cần mã hóa lưu lượng nào — từ LAN nội bộ tới LAN từ xa:
/ip ipsec policy add peer=siteB tunnel=yes \ src-address=192.168.10.0/24 dst-address=192.168.20.0/24 \ proposal=to-siteB action=encrypttunnel=yes chính là thứ khiến kết nối này là site-to-site thay vì máy-tới-máy: các gói tin gốc được bọc nguyên vẹn, nhờ đó hai LAN có thể giao tiếp trong suốt.
Bước 5: Thêm quy tắc bỏ qua NAT (bước ai cũng quên)
Đây là nơi phần lớn các lần thử đầu tiên đổ vỡ. Router của bạn đã có sẵn một quy tắc masquerade ghi lại địa chỉ nguồn của lưu lượng LAN đi ra. Nếu quy tắc đó kích hoạt trước IPsec, đầu xa sẽ nhận các gói tin có nguồn không còn khớp policy và loại bỏ chúng. Hãy thêm một quy tắc accept phía trên masquerade để lưu lượng hướng vào đường hầm bỏ qua NAT:
/ip firewall nat add chain=srcnat action=accept place-before=0 \ src-address=192.168.10.0/24 dst-address=192.168.20.0/24place-before=0 đặt quy tắc lên đầu chuỗi srcnat, đây là điều bắt buộc — một quy tắc bỏ qua đặt sau masquerade sẽ chẳng có tác dụng gì.
Bước 6: Mở tường lửa và kiểm tra
Cho phép các cổng IKE và NAT-T cùng giao thức ESP trong chuỗi input để đường hầm có thể thiết lập, nhất là khi một trong hai địa điểm nằm sau một thiết bị NAT khác:
/ip firewall filter add chain=input protocol=udp dst-port=500,4500 action=accept/ip firewall filter add chain=input protocol=ipsec-esp action=acceptSau đó xác nhận đường hầm đã hoạt động:
/ip ipsec active-peers print/ip ipsec policy printMột đường hầm khỏe mạnh sẽ hiển thị một peer đang hoạt động và một policy có ph2-state là established. Một lệnh ping nhanh từ máy ở LAN này tới máy ở LAN kia chứng minh khả năng kết nối đầu cuối.
Cấu hình đối xứng tại Địa điểm B
Lặp lại từng bước tại Địa điểm B với địa chỉ đảo ngược: peer trỏ tới IP công cộng của Địa điểm A, còn policy và quy tắc bỏ qua NAT dùng src-address=192.168.20.0/24 và dst-address=192.168.10.0/24. Profile, proposal, chuỗi bí mật của identity và chế độ IKEv2 giữ nguyên. Khi hai phía khớp nhau, Giai đoạn 1 và Giai đoạn 2 hoàn tất và đường hầm sẽ lên.
Mẹo bảo mật và vận hành
Hãy luôn cập nhật RouterOS — các bản phát hành gần đây đã có những bản vá liên quan tới việc khớp chứng chỉ peer trong IPsec/IKEv2, nên một đường hầm chạy tốt quý trước vẫn đáng được kiểm tra lại sau mỗi lần nâng cấp. Hãy ưu tiên IKEv2 kèm PFS thay vì các mặc định IKEv1 cũ. Ở những nơi có thể, hãy chuyển từ chuỗi bí mật dùng chung sang xác thực bằng chứng chỉ khi số lượng đường hầm tăng lên, vì chỉ một khóa chia sẻ trước bị lộ là ảnh hưởng tới mọi địa điểm dùng chung khóa đó. Và hãy ghi log trạng thái đường hầm ở nơi bạn thực sự theo dõi: một liên kết site-to-site đã chết là vô hình cho tới khi ai đó thử truy cập LAN ở xa và không được.
Với cả một đội thiết bị, một đường hầm IPsec âm thầm rớt sau khi lệch đồng hồ hoặc WAN chập chờn chính là kiểu sự cố mà khách hàng phát hiện trước bạn. MKController lấp khoảng trống đó: nó theo dõi từng router qua một đường hầm đi ra an toàn không cần IP công cộng và không cần chuyển tiếp cổng trên thiết bị, lưu các bản sao lưu cấu hình có phiên bản để bạn có thể so sánh và khôi phục khối IPsec đang chạy tốt sau một lần chỉnh sửa sai, và có thể mở ticket khi xảy ra sự kiện mất liên kết trước cả khi điện thoại reo. Về phần cấu hình đường hầm, hướng dẫn của chúng tôi về NAT trên MikroTik giải thích quy tắc masquerade mà bạn đang bỏ qua ở đây, còn nếu chỉ cần truy cập một router thay vì nối hai LAN, hãy xem quản lý từ xa phía sau CGNAT và bài hướng dẫn quản lý từ xa bằng WireGuard của chúng tôi.
Gom các đường hầm về một mối
IPsec nối hai địa điểm một cách gọn gàng, nhưng một ISP hay MSP đang lớn dần sẽ sớm có hàng chục đường hầm, khóa và quy tắc tường lửa cần giữ đồng bộ — và mỗi lần chỉnh tay là một cơ hội tự khóa mình khỏi một địa điểm ở xa. MKController được xây dựng đúng cho quy mô đó: quản lý đội thiết bị tập trung, truy cập từ xa an toàn không cần mở cổng, lịch sử và sao lưu cấu hình, cùng khả năng đẩy thay đổi tường lửa và policy cho toàn đội, nhờ đó một mẫu đường hầm được triển khai một lần thay vì gõ lại trên từng router. Các nhà vận hành chạy MikroTik ở quy mô lớn dùng nó để biến một buổi chiều mất trắng vì SSH từng thiết bị thành vài cú nhấp cho mỗi thay đổi.