VPN در دنیای شبکه یعنی یک تونل رمزشده بین دو نقطه، روی اینترنت عمومی. در شرکتها دو کاربرد اصلی دارد: وصل کردن شبکهٔ دو دفتر به هم، طوری که انگار یک شبکهاند، و دسترسی امن کارمندها از خانه یا سفر به سرورها و سیستمهای داخلی، بدون باز کردن پورت روی اینترنت. این مقاله دربارهٔ همین دو کاربرد است.
کدام پروتکل؟
| پروتکل | مزیت | عیب | کجا |
|---|---|---|---|
| WireGuard | سریع، ساده، رمزنگاری مدرن | فقط RouterOS 7 | انتخاب پیشفرض |
| L2TP/IPsec | کلاینت داخلی ویندوز، اندروید و iOS | کندتر، تنظیم IPsec حساس | وقتی نصب برنامه ممکن نیست |
| SSTP | روی پورت ۴۴۳، از پشت فایروالهای سخت رد میشود | کند، گواهی میخواهد | شبکههای محدود |
| PPTP | — | رمزنگاری شکسته | استفاده نکنید |
اتصال دو دفتر با WireGuard
فرض: دفتر مرکزی IP عمومی ثابت 203.0.113.10 و شبکهٔ 192.168.10.0/24 دارد؛ شعبه شبکهٔ 192.168.30.0/24 دارد و IP عمومیاش مهم نیست (میتواند پشت NAT باشد). آدرسهای داخل تونل 10.10.10.1 و 10.10.10.2 هستند.
دفتر مرکزی
/interface/wireguard/add name=wg-branch listen-port=13231
/ip/address/add address=10.10.10.1/30 interface=wg-branch
/interface/wireguard/printخروجی آخر، public-key مرکز را نشان میدهد. در شعبه هم همین کار را بکنید و کلید عمومی شعبه را بردارید. بعد در مرکز:
/interface/wireguard/peers/add interface=wg-branch public-key="BRANCH-PUBLIC-KEY" \
allowed-address=10.10.10.2/32,192.168.30.0/24
/ip/route/add dst-address=192.168.30.0/24 gateway=wg-branch
/ip/firewall/filter/add chain=input protocol=udp dst-port=13231 action=accept \
place-before=4 comment="WireGuard"شعبه
/interface/wireguard/add name=wg-hq listen-port=13231
/ip/address/add address=10.10.10.2/30 interface=wg-hq
/interface/wireguard/peers/add interface=wg-hq public-key="HQ-PUBLIC-KEY" \
endpoint-address=203.0.113.10 endpoint-port=13231 \
allowed-address=10.10.10.1/32,192.168.10.0/24 persistent-keepalive=25s
/ip/route/add dst-address=192.168.10.0/24 gateway=wg-hqpersistent-keepalive در شعبه تونل را از پشت NAT باز نگه میدارد. allowed-address دو کار میکند: مشخص میکند کدام آدرسها از این peer پذیرفته شوند و کدام ترافیک به آن فرستاده شود.
دسترسی کارمند از خانه
برای هر کارمند یک peer با آدرس جدا بسازید. کلید را روی خود روتر بسازید و فایل کانفیگ را به کارمند بدهید:
/interface/wireguard/add name=wg-staff listen-port=13232
/ip/address/add address=10.20.0.1/24 interface=wg-staff
/interface/wireguard/peers/add interface=wg-staff name=ali-laptop \
allowed-address=10.20.0.11/32 private-key=auto \
client-address=10.20.0.11/32 client-dns=192.168.10.1 \
client-endpoint=203.0.113.10 client-allowed-address=192.168.10.0/24
/interface/wireguard/peers/show-client-config [find name=ali-laptop]دستور آخر یک کانفیگ آماده (و QR کد) میدهد که در برنامهٔ رسمی WireGuard برای ویندوز، مک، اندروید و iOS وارد میشود. چون client-allowed-address فقط شبکهٔ شرکت است، اینترنت کارمند از مسیر خودش میرود و فقط ترافیک شرکت از تونل رد میشود (split tunnel).
L2TP/IPsec برای دستگاههایی که برنامه ندارند
/ip/pool/add name=vpn-pool ranges=10.30.0.10-10.30.0.50
/ppp/profile/add name=vpn local-address=10.30.0.1 remote-address=vpn-pool dns-server=192.168.10.1
/interface/l2tp-server/server/set enabled=yes use-ipsec=required ipsec-secret="LONG-RANDOM-PSK" \
default-profile=vpn
/ppp/secret/add name=reza password="STRONG-PASSWORD" service=l2tp profile=vpn
/ip/firewall/filter/add chain=input protocol=udp dst-port=500,1701,4500 action=accept place-before=4
/ip/firewall/filter/add chain=input protocol=ipsec-esp action=accept place-before=4وقتی تونل وصل است ولی بعضی سایتها و فایلها باز نمیشوند
تقریباً همیشه مشکل MTU است: بستهها با سربار تونل بزرگتر از حد مسیر میشوند. MTU اینترفیس WireGuard بهطور پیشفرض ۱۴۲۰ است؛ روی خطوطی مثل PPPoE آن را کمتر کنید (مثلاً ۱۳۸۰) یا MSS را تنظیم کنید:
/ip/firewall/mangle/add chain=forward protocol=tcp tcp-flags=syn out-interface=wg-branch \
action=change-mss new-mss=clamp-to-pmtu passthrough=yesوقتی هیچکدام از دفترها IP ثابت ندارند
WireGuard حداقل یک طرف با آدرس ثابت میخواهد. اگر هیچ دفتری IP ثابت ندارد، یک سرور مجازی با IP اختصاصی وسط بگذارید و همهٔ دفترها به آن وصل شوند. روی آن سرور میشود خود میکروتیک را نصب کرد؛ کاربردهای سرور میکروتیک را ببینید.
منابع
- MikroTik Manual — WireGuard manual.mikrotik.com/docs/virtual-private-networks/wireguard
- WireGuard — Installation (clients) www.wireguard.com/install