هات اسپات میکروتیک: راه اندازی Hotspot برای وای فای مهمان
راه اندازی Hotspot در RouterOS 7 برای وای فای مهمان؛ ویزارد، پروفایل کاربر با rate-limit، walled garden، صفحهی ورود فارسی، ورود HTTPS و User Manager.
در این صفحه
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=staffsession-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) |
روش کار:
- پوشهی
hotspotرا از منوی Files در Winbox یا با FTP روی کامپیوتر کپی کنید. login.htmlرا با یک ویرایشگر متن ساده ویرایش کنید؛ طبق مستندات، ابزارهای خودکار ویرایش HTML ممکن است صفحه را خراب کنند.- فرم را دست نزنید:
actionآن$(link-login-only)است و فیلدهایusername،password،dstوpopupباید بمانند. برایhttp-chap،md5.jsو تابعdoLogin()پیش از ارسال فرم لازماند. - فایل را UTF-8 ذخیره کنید و به تگ
htmlمقدارهایdir="rtl"وlang="fa"بدهید. پیامهایerrors.txtرا هم ترجمه کنید. - تصویرها و CSS را داخل همین پوشه بگذارید؛ کاربری که وارد نشده به سایتهای بیرونی دسترسی ندارد.
- پوشه را با نام تازه، مثلاً
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-limit)، profile (مدت اعتبار با validity)، profile-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 در راهنمای جامع میکروتیک آمده است.
منابع
- MikroTik Documentation — HotSpot - Captive portal help.mikrotik.com
- MikroTik Documentation — Hotspot customisation help.mikrotik.com
- MikroTik Documentation — User Manager help.mikrotik.com
- MikroTik Documentation — RADIUS help.mikrotik.com
- MikroTik Documentation — Certificates help.mikrotik.com
- RFC 8952 — Captive Portal Architecture www.rfc-editor.org