راهاندازی WireGuard برای دسترسی کارکنان به شبکه شرکت
این نمونه یک کارمند مجاز را از بیرون دفتر به یک برنامه داخلی و DNS شرکت متصل میکند. اینترنت عادی کاربر از اتصال خودش میماند و تونل، مجوز ورود به همه دستگاههای شرکت نیست.
این راهنما براساس مستندات رسمی تهیه شده و توسط نتمسترز بهصورت عملی آزمایش نشده است.
آخرین بازبینی متن:
در این صفحه
سناریو: یک کارمند و یک برنامه داخلی
مبنای این آموزش مستندات RouterOS با برچسب 7.26 در ۱۵ اکتبر ۲۰۲۶ است؛ این عدد نسخه آزمایششده نتمسترز یا توصیه نصب یک انتشار مشخص نیست. نسخه نصبشده، نام رابطها و گزینههای دستگاه خود را پیش از اجرا تطبیق دهید.
روتر آزمایشی دارای یک اینترنت روی ether1، فایروال سالم و LAN با آدرس 192.168.50.1/24 است. برنامه وب مجاز روی 192.168.50.10 و TCP/443 و DNS داخلی روی 192.168.50.53 با TCP/UDP/53 قرار دارند. نام واقعی برنامه باید در همین DNS به .10 برسد و گواهی و حساب کاربر نیز معتبر باشند. این آدرسها مثالاند و سرویس آماده یا داده مشتری را نشان نمیدهند.
| نقش | مقدار |
|---|---|
| رابط روتر | wg-staff با 10.77.0.1/24 و UDP/51820 |
| دستگاه کارمند | 10.77.0.2/32؛ یک کلید مستقل |
| کلید عمومی ثبتشده در peer روتر | کلید عمومی همین دستگاه کارمند |
| AllowedIPs در کلاینت | 192.168.50.10/32 و 192.168.50.53/32 |
برای دیدن همه ستونها، جدول را به چپ یا راست بکشید؛ با کیبورد از کلیدهای جهت استفاده کنید.
تمرین IPv4 و کلاینت رسمی WireGuard ویندوز را پوشش میدهد. شبکه خانه، LAN شرکت و شبکه تونل نباید تداخل آدرس داشته باشند. چند WAN، PCC، IPv6، ارتباط شعب و انتشار مستقیم برنامه روی اینترنت خارج از نمونهاند. برای انتخاب روش دورکاری، مقایسه VPN و ریموت دسکتاپ مرتبط است؛ VPN سازگاری خود نرمافزار با اتصال راه دور را تضمین نمیکند.
ورود UDP و مسیر برگشت را پیش از ساخت تونل بررسی کنید
کلاینت باید بتواند به IP عمومی یا نام قابل حل دفتر و UDP/51820 برسد. اگر روتر پشت مودم تحت اختیار شماست، فقط همین UDP را از مودم به IP ثابت سمت WAN میکروتیک هدایت کنید؛ DMZ یا انتشار WinBox و RDP لازم نیست. اگر آدرس ورودی زیر CGNAT اپراتور است، Port Forward روی مودم بهتنهایی مسیر ورودی نمیسازد. راهنمای IP عمومی و CGNAT این تفاوت را توضیح میدهد.
DDNS نام را با IP متغیر هماهنگ میکند و محدودیت CGNAT را برنمیدارد. آدرس Endpoint باید پیش از برقراری تونل از اینترنت کارمند قابل حل باشد؛ آن را فقط در DNS داخلیِ غیرقابل دسترس تعریف نکنید. در این تمرین IP عمومی قابل دسترس یا هدایت UDP معتبر از قبل فراهم است.
دروازه برنامه و DNS در این نمونه همین میکروتیک است تا پاسخ 10.77.0.2 به تونل برگردد. اگر دروازه واقعی جای دیگری است، روی آن مسیر 10.77.0.0/24 به سمت 192.168.50.1 لازم میشود. فایروال میزبان و DNS نیز باید مبدأ مجاز را بپذیرند. این تمرین بین VPN و LAN، masquerade اضافه نمیکند؛ مسیر برگشت را بهجای پنهانکردن همه کاربران پشت یک IP اصلاح کنید.
رابط و کلید مستقل هر دستگاه را بسازید
از تنظیمات بکاپ بگیرید، مدیریت محلی داشته باشید، با Ctrl+X در Terminal وارد Safe Mode شوید و مطمئن شوید نام wg-staff و زنجیره nm-wg-access قبلاً استفاده نشدهاند. قواعد FastTrack را در همین آزمایش پس از ثبت وضعیت Disable کنید؛ قواعد محافظ باقی بمانند. ترافیک هدف نباید محدودیتهای فایروال را دور بزند و آزمون با اتصال تازه انجام میشود.
/interface/wireguard/add name=wg-staff listen-port=51820 disabled=yes
/ip/address/add address=10.77.0.1/24 interface=wg-staff comment="NM-WG-address"
:put [/interface/wireguard/get [find name=wg-staff] public-key]در برنامه رسمی WireGuard ویندوز، Add empty tunnel یا Ctrl+N را انتخاب کنید. PrivateKey تولیدشده را روی همان دستگاه نگه دارید و فقط Public key را به مدیر مجاز بدهید. در WinBox → WireGuard → Peers یک peer غیرفعال با فیلدهای زیر بسازید. کلید خصوصی روتر و کارمند با هم جابهجا نمیشوند.
| فیلد | مقدار این نمونه |
|---|---|
| Interface | wg-staff |
| Public Key | کلید عمومی تولیدشده روی دستگاه کارمند |
| Allowed Address | 10.77.0.2/32 |
| Responder | yes؛ روتر پاسخگوی شروع اتصال کارمند است |
| Endpoint Address / Port | برای کارمند متحرک در این نمونه تعیین نمیشود |
| Comment | NM-WG-employee01؛ شناسه مسئول و دستگاه را در ثبت داخلی نگه دارید |
برای دیدن همه ستونها، جدول را به چپ یا راست بکشید؛ با کیبورد از کلیدهای جهت استفاده کنید.
allowed-address روتر، مبدأ پذیرفتهشده از peer و مقصد ارسال به آن peer را مشخص میکند؛ فهرست مجوز برنامههای شرکت نیست. برای دستگاه بعدی، کلید مستقل و آدرس دیگری مثل .3/32 لازم است و محدوده peerها روی یک رابط نباید همپوشان شود. این نمونه نام کاربری، رمز عبور یا MFA به WireGuard اضافه نمیکند؛ احراز هویت و مجوز داخل برنامه همچنان جدا لازماند. فایل تنظیمات یا QR حاوی PrivateKey را در پیام عمومی، گزارش یا تصویر منتشر نکنید.
فقط برنامه و DNS مجاز را از تونل عبور دهید
ابتدا زنجیره مستقل زیر را بسازید؛ تا زمانی که jump فعال نشده، به ترافیک متصل نیست. این سیاست فقط کارمند .2 را به سرویسهای تعیینشده میرساند. دسترسی یک کارمند تازه بهطور خودکار از این قواعد به ارث نمیرسد.
/ip/firewall/filter
add chain=nm-wg-access connection-state=invalid action=drop comment="NM-WG-invalid"
add chain=nm-wg-access src-address=10.77.0.2 dst-address=192.168.50.10 protocol=tcp dst-port=443 connection-state=new,established action=accept comment="NM-WG-app"
add chain=nm-wg-access src-address=10.77.0.2 dst-address=192.168.50.53 protocol=udp dst-port=53 connection-state=new,established action=accept comment="NM-WG-dns-udp"
add chain=nm-wg-access src-address=10.77.0.2 dst-address=192.168.50.53 protocol=tcp dst-port=53 connection-state=new,established action=accept comment="NM-WG-dns-tcp"
add chain=nm-wg-access action=drop comment="NM-WG-deny-other"/ip/firewall/filter
add chain=input in-interface=ether1 protocol=udp dst-port=51820 action=accept disabled=yes comment="NM-WG-handshake"
add chain=input in-interface=wg-staff action=drop disabled=yes comment="NM-WG-deny-router"
add chain=forward in-interface=wg-staff action=jump jump-target=nm-wg-access disabled=yes comment="NM-WG-policy"
add chain=forward out-interface=wg-staff connection-state=established,related action=accept disabled=yes comment="NM-WG-replies"
add chain=forward out-interface=wg-staff action=drop disabled=yes comment="NM-WG-deny-new-to-client"| قاعده | جایگاه |
|---|---|
| NM-WG-handshake در input | پیش از drop ورودی WAN؛ قواعد پایه بررسی invalid را حفظ کنید. |
| NM-WG-deny-router در input | پیش از هر accept عمومی که ترافیک wg-staff را میپذیرد؛ دسترسی مدیریت از LAN مستقل باقی است. |
| NM-WG-policy در forward | پیش از accept عمومی established/related و FastTrack؛ سپس تمام ترافیک ورودی این تونل به زنجیره محدود میرود. |
| NM-WG-replies سپس NM-WG-deny-new-to-client | پس از قاعده policy و پیش از مجوزهای عمومی forward؛ فقط پاسخ ارتباطهای برقرارشده به سمت کلاینت مجاز است. |
برای دیدن همه ستونها، جدول را به چپ یا راست بکشید؛ با کیبورد از کلیدهای جهت استفاده کنید.
قواعد در انتهای فهرست ساخته شدهاند؛ آنها را در WinBox مطابق جدول جابهجا و سپس Enable کنید. افزودن قاعده بعد از drop مؤثر، مجوز تازهای ایجاد نمیکند. رابط wg-staff را به فهرست مورداعتماد LAN اضافه نکنید. اکنون peer و رابط را فعال کنید؛ اگر ترتیب و سیاست موجود قابل تطبیق نیست، رابط را غیرفعال نگه دارید تا همان تعارض برطرف شود. این دستورات جای یک فایروال پایه سالم را نمیگیرند.
کلاینت ویندوز و DNS را تنظیم کنید
در تونل ساختهشده ویندوز، خط PrivateKey تولیدشده را حفظ کنید و تنظیم زیر را پس از آن داخل بخش Interface اضافه کنید. در بخش Peer، عبارتهای REPLACE را با کلید عمومی روتر و IP یا نام عمومی واقعی دفتر جایگزین کنید؛ متن زیر قبل از جایگزینی قابل استفاده نیست. مقدار PrivateKey نمونه یا کلید یک کارمند دیگر را وارد نکنید.
Address = 10.77.0.2/32
DNS = 192.168.50.53
[Peer]
PublicKey = REPLACE_WITH_ROUTER_PUBLIC_KEY
AllowedIPs = 192.168.50.10/32, 192.168.50.53/32
Endpoint = REPLACE_WITH_OFFICE_PUBLIC_IP_OR_NAME:51820Save و سپس Activate را بزنید. AllowedIPs کلاینت فقط این دو مقصد را به تونل میفرستد؛ 0.0.0.0/0 یا ::/0 در این نمونه لازم نیست. این محدودیتِ روی دستگاه کاربر، جای فایروال سمت شرکت نیست چون کاربر میتواند مسیرهای کلاینت را تغییر دهد. اگر از خروجی آماده یا QR روتر استفاده میکنید، AllowedIPs واقعی آن را بررسی کنید؛ خروجی پیشفرض ممکن است مسیر همه اینترنت باشد.
DNS=192.168.50.53 به معنی تنظیم Split DNS فقط برای دامنه شرکت نیست. رفتار نامگشایی ویندوز و برنامه را بررسی کنید؛ DNS داخلی باید درخواستهای مجاز این کارمند و نامهای لازم را پاسخ دهد. مرورگری با Secure DNS مستقل ممکن است نام داخلی را از DNS شرکت نپرسد. اگر سیاست سازمان فقط نامهای داخلی را به DNS شرکت میفرستد، تنظیم اختصاصی سیستمعامل لازم است و در این مثال ساخته نشده است.
اگر کلاینت پشت NAT پس از بیکاری مشکل دریافت دارد، میتوان در بخش Peer کلاینت PersistentKeepalive = 25 را افزود و نتیجه را سنجید. این گزینه نگاشت NAT را زنده نگه میدارد؛ اینترنت قطع یا CGNAT سمت دفتر را به مسیر ورودی تبدیل نمیکند و برای همه اتصالها ضروری نیست.
دسترسی مجاز و ممنوع را از بیرون دفتر بسنجید
با اینترنتی خارج از LAN شرکت، مثل اینترنت همراه، به نام واقعی برنامه متصل شوید. در WinBox بخش Peers، last-handshake و rx/tx را هنگام تلاش تازه ببینید. handshake تازه، تبادل رمزنگاری را نشان میدهد؛ مشاهده آن جای بررسی DNS، مسیر برگشت، حساب برنامه و مجوز منابع را نمیگیرد.
| آزمون | نتیجه موردنیاز |
|---|---|
| برنامه روی نام واقعی و TCP/443 | بازشود و کاربر فقط با حساب و مجوز خودش کار کند؛ IP مقصد با .10 تطبیق داشته باشد. |
| DNS داخلی با UDP و TCP | نام موردنیاز پاسخ بگیرد؛ سیاست سرویس DNS مبدأ 10.77.0.2 را بشناسد. |
| پورت دیگری روی همان .10 | دسترسی ممنوع بماند؛ شمارنده drop زنجیره و ارسال واقعی درخواست بررسی شوند. |
| مقصد داخلی دیگر و مدیریت روتر | روی کلاینت آزمایشی، موقتاً /32 همان مقصد ممنوع را به AllowedIPs اضافه و درخواست را واقعاً به تونل بفرستید؛ فایروال شرکت باید رد کند. سپس مسیر موقت را بردارید. |
| اینترنت عمومی کارمند | مسیر عمومی از اتصال خودش بماند؛ تنظیم DNS را از مسیر داده جدا بررسی کنید. |
| غیرفعالکردن peer همان کارمند | عبور داده و امکان اتصال دوباره قطع شود؛ دسترسی دستگاههای دیگر مستقلاً کنترل شود. |
برای دیدن همه ستونها، جدول را به چپ یا راست بکشید؛ با کیبورد از کلیدهای جهت استفاده کنید.
نبود مسیر در کلاینت، آزمون فایروال شرکت نیست؛ برای آزمون منفی باید بسته به تونل برسد و ردشدن آن در شمارنده قاعده مربوط دیده شود. ping به آدرس روتر یا برنامه نیز در این سیاست مجاز نشده است؛ شکست آن بهتنهایی خرابی WireGuard را نشان نمیدهد. آزمون محدودکردن پورت را با سرویسی تحت اختیار که قبل از اعمال سیاست پاسخگو بوده انجام دهید تا «سرویس خاموش» با «مسدودشدن» اشتباه نشود.
رفع مشکل و پایان دسترسی
بدون handshake تازه، ابتدا Endpoint، رسیدن UDP، هدایت مودم، کلید عمومی دو سمت و فعالبودن peer را بررسی کنید. با handshake ولی بدون برنامه، AllowedIPs، شمارنده forward، مسیر برگشت و فایروال میزبان را ببینید. اگر برنامه با IP قابل دسترسی است ولی نام آن حل نمیشود، DNS و تنظیم کلاینت را جدا کنترل کنید؛ خطای گواهی را با خاموشکردن بررسی گواهی حل نکنید.
برای صفحههای ناقص یا انتقالهای متوقفشونده، کیفیت مسیر و MTU نیز ممکن است درگیر باشند؛ یک عدد MTU عمومی را بدون آزمون به همه دستگاهها تحمیل نکنید. قواعد و تغییرهای این صفحه را با نمونه چنداینترنتی روی یک روتر ترکیب نکنید؛ پاسخ WireGuard باید از مسیر ورودی مناسب برگردد و آن سناریو تنظیم جدا میخواهد.
برای قطع دسترسی دستگاه گمشده یا پایان همکاری، peer همان دستگاه را در روتر Disable کنید و قطع واقعی انتقال و اتصال مجدد را بسنجید. حساب و نشست داخل برنامه نیز طبق مسئولیت کاربر لغو شود؛ حذف فایل کلاینت از یک لپتاپ، جای قطع دسترسی سمت شرکت نیست. کلید دستگاه جایگزین مستقل باشد.
برای برگشت از کل تمرین، نخست peer و رابط wg-staff را غیرفعال کنید و دسترسی محلی را کنترل کنید. سپس فقط قواعد NM-WG و آدرس/رابط ساختهشده این تمرین و هدایت UDP مربوط در مودم را حذف کنید؛ بعد از حذف jump، زنجیره اختصاصی نیز قابل جمعکردن است. وضعیت FastTrack را طبق ثبت اولیه برگردانید. در صورت پذیرش طرح، با Ctrl+X از Safe Mode خارج شوید و اطلاعات مالک دستگاه، مجوزها و نتیجه واقعی آزمون را بدون کلید خصوصی ثبت کنید.