شبکه / میکروتیک

هات اسپات میکروتیک: راه اندازی Hotspot برای وای فای مهمان

راه اندازی Hotspot در RouterOS 7 برای وای فای مهمان؛ ویزارد، پروفایل کاربر با rate-limit، walled garden، صفحه‌ی ورود فارسی، ورود HTTPS و User Manager.

نوشته‌ی تیم پیکوگاید آخرین بازبینی فنی: ۱۱ دقیقه مطالعه
در این صفحه
  1. Hotspot چطور کار می‌کند
  2. پیش نیازها
  3. مرحله‌ی ۱: ویزارد setup
  4. مرحله‌ی ۲: پروفایل کاربر و کاربر
  5. مرحله‌ی ۳: بیرون گذاشتن مهمان‌ها از FastTrack
  6. مرحله‌ی ۴: روش‌های ورود
  7. مرحله‌ی ۵: walled garden
  8. مرحله‌ی ۶: صفحه‌ی ورود فارسی
  9. ورود HTTPS و گواهی
  10. RADIUS و User Manager
  11. بررسی
  12. مشکلات رایج

Hotspot میکروتیک یک captive portal است: کاربری که به شبکه‌ی مهمان وصل می‌شود، پیش از دسترسی به اینترنت یک صفحه‌ی ورود می‌بیند و با نام کاربری و رمز وارد می‌شود. کاربرها از فهرست داخلی روتر یا از یک سرور RADIUS خوانده می‌شوند و برای هر کدام می‌توانید سرعت، مدت نشست و حجم مصرف را محدود کنید؛ کاربرد رایج آن وای فای مهمان هتل، کافه و دفتر است. خلاصه‌ی کار: مهمان‌ها را روی یک VLAN جدا بگذارید، /ip hotspot setup را روی همان اینترفیس اجرا کنید، پروفایل کاربران را با rate-limit بسازید و شبکه‌ی مهمان را از FastTrack بیرون بگذارید.

Hotspot چطور کار می‌کند

  • دستگاه کاربر از DHCP آدرس می‌گیرد.
  • تا وقتی کاربر وارد نشده، فقط DNS، صفحه‌ی ورود و مقصدهای walled garden در دسترس‌اند.
  • اولین درخواست HTTP کاربر به صفحه‌ی ورود هدایت می‌شود. بیشتر سیستم عامل‌ها بعد از اتصال یک درخواست HTTP به آدرس ثابتی از سازنده‌ی خود می‌فرستند و اگر جواب مورد انتظار برنگردد، صفحه‌ی ورود را خودکار باز می‌کنند (RFC 8952).
  • Hotspot برای این کار قانون‌های پویا در NAT و filter می‌سازد (زنجیره‌هایی مثل hs-unauth و hs-input) و به کاربرها اجازه می‌دهد به سرویس ورود روی خود روتر (پورت‌های 64872 تا 64875) برسند.

پیش نیازها

مقدار در این راهنما
اینترفیس مهمان vlan20-guests
شبکه 10.10.20.0/24
آدرس روتر 10.10.20.1
نام DNS صفحه‌ی ورود wifi.example.com
  • اینترفیس جدا برای مهمان‌ها: یک VLAN، یک پورت یا یک bridge جدا. روش ساخت VLAN مهمان و جدا کردن آن از شبکه‌ی داخلی در VLAN در میکروتیک با bridge VLAN filtering آمده است. اگر Hotspot را روی bridge اجرا می‌کنید، مطمئن شوید پورت اینترنت عضو آن bridge نیست.
  • نام DNS: یک نام کامل (FQDN) مثل wifi.example.com. این نام آدرس صفحه‌ی ورود است و Hotspot آن را خودکار به عنوان رکورد static در DNS روتر اضافه می‌کند.
  • DNS و گواهی: در /ip dns سرور DNS بالادستی تنظیم شده باشد. گواهی فقط برای صفحه‌ی ورود HTTPS لازم است.

ویزارد برای اینترفیس آدرس، pool و DHCP server می‌سازد. اگر طبق مقاله‌ی VLAN این‌ها را قبلاً برای vlan20-guests ساخته‌اید، پیش از اجرای ویزارد حذفشان کنید تا تکراری ساخته نشوند:

/ip dhcp-server remove [find interface=vlan20-guests]
/ip dhcp-server network remove [find address=10.10.20.0/24]
/ip address remove [find interface=vlan20-guests]
/ip pool remove [find name=pool-guests]

قانون‌های فایروال مهمان (فقط دسترسی به اینترنت) سر جایشان می‌مانند.

مرحله‌ی ۱: ویزارد setup

مستندات میکروتیک پیشنهاد می‌کند سرور Hotspot را با ویزارد بسازید، چون همه‌ی تنظیمات لازم را یک جا اضافه می‌کند. در ترمینال /ip hotspot setup را اجرا کنید (در Winbox: IP > Hotspot > Hotspot Setup) و به پرسش‌ها این طور جواب دهید:

پرسش ویزارد جواب توضیح
hotspot interface vlan20-guests اینترفیسی که مهمان‌ها به آن وصل‌اند
local address of network 10.10.20.1/24 آدرس روتر در شبکه‌ی مهمان
masquerade network no اگر قانون masquerade برای WAN دارید؛ وگرنه yes
address pool of network 10.10.20.2-10.10.20.254 بازه‌ی آدرس کاربران
select certificate none HTTPS را بعداً اضافه می‌کنیم
ip address of smtp server 0.0.0.0 پیش فرض را نگه دارید
dns servers همان مقدار پیشنهادی از /ip dns روتر خوانده می‌شود
dns name wifi.example.com نام کامل لازم است
name of local hotspot user test یک کاربر برای آزمایش

اگر قانون masquerade با out-interface-list=WAN از فایروال میکروتیک را دارید، قانون ویزارد (بدون شرط اینترفیس خروجی) لازم نیست.

نتیجه یک سرور Hotspot (با نامی مثل hotspot1)، یک پروفایل سرور (مثل hsprof1؛ مثال‌های این راهنما همین نام را به کار می‌برند)، یک pool، یک DHCP server و قانونی غیرفعال با توضیح place hotspot rules here در NAT است:

/ip hotspot print
/ip hotspot profile print
/ip firewall nat print

حالا یک گوشی را به شبکه‌ی مهمان وصل کنید. صفحه‌ی ورود باید باز شود و با کاربر test وارد شوید.

مرحله‌ی ۲: پروفایل کاربر و کاربر

پروفایل کاربر (/ip hotspot user profile) تنظیمات مشترک یک گروه است و کاربر (/ip hotspot user) حساب ورود. پارامترهای مهم پروفایل:

پارامتر معنی پیش فرض
rate-limit سقف سرعت به شکل rx/tx از دید روتر: rx آپلود کاربر و tx دانلود اوست بدون محدودیت
shared-users تعداد ورودهای هم‌زمان با یک نام کاربری 1
session-timeout بعد از این مدت کاربر بدون شرط خارج می‌شود 0s (بدون محدودیت)
idle-timeout اگر کاربر وارد شده این مدت ترافیکی نداشته باشد، خارج می‌شود none

و پارامترهای کاربر: profile، limit-uptime (سقف کل زمان استفاده)، limit-bytes-total (سقف مجموع حجم ارسال و دریافت به بایت) و mac-address (ورود فقط از یک دستگاه).

/ip hotspot user profile
add name=guest rate-limit=2M/10M shared-users=1 session-timeout=4h idle-timeout=15m
add name=staff rate-limit=5M/30M shared-users=2
/ip hotspot user
add name=room101 password=Qe7-m2Lx profile=guest limit-uptime=1d
add name=staff01 password=Vr4-k9Tz profile=staff

session-timeout هر نشست را محدود می‌کند و limit-uptime جمع کل زمان استفاده‌ی حساب را. رمزها را خودتان بسازید. rate-limit از burst هم پشتیبانی می‌کند، مثلاً rate-limit="2M/10M 4M/20M 1500k/7500k 16s/16s"؛ معنی عددها در Queue و محدود کردن پهنای باند در میکروتیک آمده است.

مرحله‌ی ۳: بیرون گذاشتن مهمان‌ها از FastTrack

Hotspot برای هر کاربری که وارد می‌شود و rate-limit دارد، یک Simple Queue پویا می‌سازد. ترافیکی که FastTrack می‌شود از Simple Queue عبور نمی‌کند، پس با قانون fasttrack کانفیگ پیش فرض، rate-limit اثری ندارد. شبکه‌ی مهمان را از fasttrack بیرون بگذارید:

/ip firewall filter set [find action=fasttrack-connection] src-address=!10.10.20.0/24 dst-address=!10.10.20.0/24

مرحله‌ی ۴: روش‌های ورود

login-by در پروفایل سرور (hsprof1) مشخص می‌کند کاربر چطور وارد شود. پیش فرض http-chap,cookie است.

روش رفتار
http-chap نام کاربری و رمز با challenge-response و MD5
http-pap رمز به صورت متن ساده در شبکه می‌رود؛ استفاده نکنید
https تبادل نام کاربری و رمز در TLS؛ گواهی لازم دارد
cookie بعد از اولین ورود، مرورگر تا http-cookie-lifetime (پیش فرض ۳ روز) بدون فرم وارد می‌شود
mac ورود با آدرس MAC و بدون فرم
trial استفاده‌ی آزمایشی برای مدت محدود بدون ورود

مرحله‌ی ۵: walled garden

walled garden مقصدهایی است که کاربر پیش از ورود هم به آن‌ها دسترسی دارد؛ مثلاً سایت هتل یا صفحه‌ی قوانین استفاده. /ip hotspot walled-garden برای وب (HTTP و HTTPS) با نام دامنه و مسیر کار می‌کند و /ip hotspot walled-garden ip برای بقیه‌ی پروتکل‌ها یا بر اساس آدرس IP:

/ip hotspot walled-garden
add dst-host=www.example.com action=allow comment="hotel website"
add dst-host=*.example.com action=allow
/ip hotspot walled-garden ip
add dst-address=192.0.2.10 protocol=tcp dst-port=443 action=accept comment="booking server"

در dst-host و path علامت * هر تعداد نویسه را می‌پذیرد و مقداری که با : شروع شود regular expression است. walled garden را کوچک نگه دارید؛ هر مقصدی که اینجا باز می‌کنید، بدون ورود در دسترس است.

مرحله‌ی ۶: صفحه‌ی ورود فارسی

فایل‌های صفحه‌ی ورود در پوشه‌ای هستند که html-directory پروفایل سرور نشان می‌دهد (پیش فرض hotspot):

فایل کاربرد
login.html فرم ورود
alogin.html صفحه‌ی بعد از ورود موفق
status.html وضعیت و آمار کاربر
logout.html صفحه‌ی بعد از خروج
error.html خطاهای جدی
errors.txt متن پیام‌های خطا
md5.js محاسبه‌ی MD5 برای روش http-chap
api.json پاسخ captive portal برای دستگاه‌ها (بخش HTTPS)

روش کار:

  1. پوشه‌ی hotspot را از منوی Files در Winbox یا با FTP روی کامپیوتر کپی کنید.
  2. login.html را با یک ویرایشگر متن ساده ویرایش کنید؛ طبق مستندات، ابزارهای خودکار ویرایش HTML ممکن است صفحه را خراب کنند.
  3. فرم را دست نزنید: action آن $(link-login-only) است و فیلدهای username، password، dst و popup باید بمانند. برای http-chap، md5.js و تابع doLogin() پیش از ارسال فرم لازم‌اند.
  4. فایل را UTF-8 ذخیره کنید و به تگ html مقدارهای dir="rtl" و lang="fa" بدهید. پیام‌های errors.txt را هم ترجمه کنید.
  5. تصویرها و CSS را داخل همین پوشه بگذارید؛ کاربری که وارد نشده به سایت‌های بیرونی دسترسی ندارد.
  6. پوشه را با نام تازه، مثلاً hotspot-guests، روی روتر بفرستید و پروفایل را به آن وصل کنید:
/ip hotspot profile set hsprof1 html-directory=hotspot-guests

مسیر کامل پوشه را همان طور که در Files دیده می‌شود بدهید؛ روی دستگاه‌هایی که پوشه‌ی flash دارند، مسیر با flash/ شروع می‌شود.

ورود HTTPS و گواهی

دو موضوع جدا را با هم اشتباه نگیرید:

۱. کاربر یک سایت HTTPS را باز می‌کند. هدایت HTTP به صفحه‌ی ورود بی‌دردسر است، ولی برای یک سایت HTTPS روتر باید به جای آن دامنه جواب دهد و گواهی آن را ندارد؛ نتیجه خطای گواهی در مرورگر است. گزینه‌ی https-redirect (پیش فرض yes) همین هدایت را کنترل می‌کند. با https-redirect=no درخواست‌های HTTPS کاربر وارد نشده رد می‌شوند و او باید یک صفحه‌ی HTTP باز کند. تشخیص خودکار captive portal در سیستم عامل‌ها با HTTP کار می‌کند، پس بیشتر کاربران به این مشکل نمی‌خورند.

۲. خود صفحه‌ی ورود روی HTTPS باشد. برای این کار گواهی معتبری لازم است که برای همان dns-name صادر شده باشد. گواهی self-signed روی همه‌ی دستگاه‌ها هشدار می‌دهد. گواهی را import کنید و به پروفایل بدهید:

/certificate import file-name=wifi.example.com.p12 name=wifi-cert passphrase="YOUR-PASSPHRASE"
/ip hotspot profile set hsprof1 ssl-certificate=wifi-cert login-by=https,cookie

مستندات Certificates روش گرفتن گواهی از Let's Encrypt روی خود روتر را هم دارد؛ شرطش این است که دامنه به روتر اشاره کند و پورت TCP 80 از سمت اینترنت باز باشد.

RADIUS و User Manager

برای تعداد زیاد کاربر، voucher چاپی یا چند روتر با یک پایگاه کاربران، به جای /ip hotspot user از RADIUS استفاده کنید. سرور RADIUS خود RouterOS 7، User Manager، از نو نوشته شده و با پایگاه داده‌ی نسخه‌ی ۶ سازگار نیست. این بسته‌ی جداگانه‌ی user-manager است که باید با همان نسخه‌ی RouterOS نصب شود و برای معماری SMIPS وجود ندارد.

/user-manager set enabled=yes
/user-manager router add name=local address=127.0.0.1 shared-secret=Rad-Secret-2026
/user-manager user add name=guest001 password=Qe7-m2Lx
/radius add service=hotspot address=127.0.0.1 secret=Rad-Secret-2026
/ip hotspot profile set hsprof1 use-radius=yes

محدودیت‌ها در User Manager در چند منو تعریف می‌شوند: limitation (سرعت با rate-limit-rx و rate-limit-tx، حجم با transfer-limit و زمان با uptime-limitprofile (مدت اعتبار با validityprofile-limitation برای وصل کردن این دو و user-profile برای دادن پروفایل به کاربر. add-batch-users چند کاربر تصادفی می‌سازد و generate-voucher برگه‌ی چاپی تولید می‌کند. رابط وب آن در مسیر /um/ روی آدرس مدیریتی روتر است (مثلاً http://192.168.88.1/um/). برای سرور RADIUS جداگانه، آدرس آن را در /radius بدهید؛ پورت‌های پیش فرض ۱۸۱۲ (احراز هویت) و ۱۸۱۳ (accounting) است.

بررسی

/ip hotspot active print
/ip hotspot host print
/queue simple print where dynamic
/log print where topics~"hotspot"

active کاربرهای وارد شده را با آدرس، MAC، روش ورود و مدت نشست نشان می‌دهد و host همه‌ی دستگاه‌های متصل را، چه وارد شده باشند چه نه. برای هر کاربر با rate-limit باید یک queue پویا در queue simple ببینید. خارج کردن یک کاربر:

/ip hotspot active remove [find user=room101]

مشکلات رایج

  • صفحه‌ی ورود خودکار باز نمی‌شود: کاربر یک سایت HTTPS را باز کرده است؛ یک آدرس HTTP را امتحان کنید. اگر هیچ صفحه‌ای باز نمی‌شود، DNS روتر را بررسی کنید و ببینید قانون drop خودتان در filter پیش از قانون‌های پویای Hotspot ترافیک مهمان را رد نمی‌کند.
  • هشدار گواهی در مرورگر: یا گواهی برای dns-name صادر نشده، یا کاربر سایت HTTPS باز کرده و https-redirect=yes است.
  • rate-limit اعمال نمی‌شود: قانون fasttrack هنوز شبکه‌ی مهمان را می‌گیرد (مرحله‌ی ۳).
  • کاربر دوم با همان نام وارد نمی‌شود: shared-users به صورت پیش فرض 1 است. برای یک رمز مشترک در کافه، مقدار آن را در پروفایل بیشتر کنید.
  • پرینتر یا تلویزیون شبکه‌ی مهمان نمی‌تواند وارد شود: این دستگاه‌ها فرم ورود ندارند. مدیر شبکه می‌تواند آن‌ها را با /ip hotspot ip-binding add mac-address=... type=bypassed از ورود معاف کند، یا بهتر، روی VLAN دیگری بگذارد.
  • Hotspot با چند اینترنت درست کار نمی‌کند: با load balancing به روش PCC، اولین درخواست HTTP مهمان پیش از هدایت به صفحه‌ی ورود علامت PCC می‌گیرد و پاسخ روتر ممکن است به جدول یکی از اینترنت‌ها برود. مستندات میکروتیک برای این حالت می‌گوید ترافیک Hotspot باید از جدول اصلی مسیریابی شود. ساده‌ترین راه این است که شبکه‌ی مهمان را با شرط src-address=!10.10.20.0/24 از قانون‌های PCC بیرون بگذارید تا مهمان‌ها از مسیر پیش فرض استفاده کنند.
  • تغییرات صفحه‌ی ورود دیده نمی‌شود: html-directory هنوز به پوشه‌ی قدیمی اشاره می‌کند یا پیشوند flash/ جا افتاده است.

برای سهم مساوی پهنای باند بین همه‌ی مهمان‌ها، یک Simple Queue با PCQ روی 10.10.20.0/24 بسازید (Queue در میکروتیک). بقیه‌ی موضوع‌های RouterOS در راهنمای جامع میکروتیک آمده است.

منابع

  1. MikroTik Documentation — HotSpot - Captive portal help.mikrotik.com
  2. MikroTik Documentation — Hotspot customisation help.mikrotik.com
  3. MikroTik Documentation — User Manager help.mikrotik.com
  4. MikroTik Documentation — RADIUS help.mikrotik.com
  5. MikroTik Documentation — Certificates help.mikrotik.com
  6. RFC 8952 — Captive Portal Architecture www.rfc-editor.org