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

VLAN در میکروتیک با bridge VLAN filtering

VLAN در میکروتیک با bridge VLAN filtering در RouterOS 7؛ پورت access و trunk، اینترفیس VLAN، DHCP برای هر VLAN، شبکه‌ی مهمان و جلوگیری از قفل شدن پشت روتر.

نوشته‌ی تیم پیکوگاید آخرین بازبینی فنی: ۵ دقیقه مطالعه
در این صفحه
  1. سناریو
  2. مرحله‌ی ۱: bridge و پورت‌ها
  3. مرحله‌ی ۲: جدول VLAN
  4. مرحله‌ی ۳: اینترفیس VLAN و آدرس
  5. مرحله‌ی ۴: DHCP برای هر VLAN
  6. مرحله‌ی ۵: سخت گیری روی پورت‌ها
  7. مرحله‌ی ۶: روشن کردن VLAN filtering
  8. مرحله‌ی ۷: جدا کردن شبکه‌ی مهمان
  9. بررسی
  10. کارایی
  11. مشکلات رایج

در RouterOS 7 روش پیشنهادی برای VLAN، bridge VLAN filtering است: همه‌ی پورت‌ها در یک bridge قرار می‌گیرند، جدول VLAN مشخص می‌کند هر پورت در کدام VLAN با تگ یا بدون تگ باشد، و برای هر VLANی که روتر باید بین آن‌ها مسیریابی کند، یک اینترفیس VLAN روی همان bridge ساخته می‌شود. مهم‌ترین نکته‌ی عملی: vlan-filtering=yes را آخر از همه روشن کنید.

اگر با مفهوم VLAN، پورت access و trunk آشنا نیستید، اول VLAN چیست و چطور پیکربندی می‌شود را بخوانید.

سناریو

پورت نقش VLAN
ether1 اینترنت (WAN)
ether2 trunk به access point یا سوییچ ۱۰ و ۲۰ با تگ
ether3، ether4 کاربران ۱۰ بدون تگ
ether5 مهمان ۲۰ بدون تگ
VLAN نام subnet gateway
۱۰ کاربران 10.10.10.0/24 10.10.10.1
۲۰ مهمان 10.10.20.0/24 10.10.20.1

مرحله‌ی ۱: bridge و پورت‌ها

bridge را بدون VLAN filtering بسازید و پورت‌ها را اضافه کنید. pvid مشخص می‌کند فریم‌های بدون تگی که از هر پورت وارد می‌شوند، به کدام VLAN تعلق دارند:

/interface bridge add name=bridge1 vlan-filtering=no
/interface bridge port
add bridge=bridge1 interface=ether2
add bridge=bridge1 interface=ether3 pvid=10
add bridge=bridge1 interface=ether4 pvid=10
add bridge=bridge1 interface=ether5 pvid=20

مرحله‌ی ۲: جدول VLAN

هر VLAN مشخص می‌کند روی کدام پورت‌ها با تگ و روی کدام بدون تگ باشد. خود bridge1 باید در فهرست tagged باشد؛ این یعنی CPU روتر هم عضو VLAN است و می‌تواند بین VLANها مسیریابی کند:

/interface bridge vlan
add bridge=bridge1 vlan-ids=10 tagged=bridge1,ether2 untagged=ether3,ether4
add bridge=bridge1 vlan-ids=20 tagged=bridge1,ether2 untagged=ether5

مرحله‌ی ۳: اینترفیس VLAN و آدرس

/interface vlan
add name=vlan10-users interface=bridge1 vlan-id=10
add name=vlan20-guests interface=bridge1 vlan-id=20
/ip address
add address=10.10.10.1/24 interface=vlan10-users
add address=10.10.20.1/24 interface=vlan20-guests

آدرس IP را روی اینترفیس VLAN بگذارید، نه روی خود bridge.

مرحله‌ی ۴: DHCP برای هر VLAN

/ip pool
add name=pool-users ranges=10.10.10.100-10.10.10.200
add name=pool-guests ranges=10.10.20.100-10.10.20.250
/ip dhcp-server
add name=dhcp-users interface=vlan10-users address-pool=pool-users
add name=dhcp-guests interface=vlan20-guests address-pool=pool-guests
/ip dhcp-server network
add address=10.10.10.0/24 gateway=10.10.10.1 dns-server=10.10.10.1
add address=10.10.20.0/24 gateway=10.10.20.1 dns-server=10.10.20.1

مرحله‌ی ۵: سخت گیری روی پورت‌ها

پورت access فقط باید فریم بدون تگ قبول کند و پورت trunk فقط فریم با تگ. این کار جلوی دستگاهی را می‌گیرد که با فرستادن فریم تگ دار، خودش را وارد VLAN دیگری کند:

/interface bridge port
set [find interface=ether2] frame-types=admit-only-vlan-tagged ingress-filtering=yes
set [find interface=ether3] frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes
set [find interface=ether4] frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes
set [find interface=ether5] frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes

مرحله‌ی ۶: روشن کردن VLAN filtering

همه چیز را یک بار دیگر بررسی کنید و مطمئن شوید از پورتی به روتر وصل هستید که بعد از روشن شدن filtering هم دسترسی دارد (مثلاً ether3 در VLAN کاربران، و آدرس کامپیوترتان در 10.10.10.0/24 است). بعد:

/interface bridge set bridge1 vlan-filtering=yes

مرحله‌ی ۷: جدا کردن شبکه‌ی مهمان

VLANها در لایه‌ی ۲ جدا هستند، ولی روتر به صورت پیش فرض بین آن‌ها مسیریابی می‌کند. برای این که مهمان‌ها فقط به اینترنت دسترسی داشته باشند:

/interface list add name=GUEST
/interface list member add list=LAN interface=vlan10-users
/interface list member add list=GUEST interface=vlan20-guests
/ip firewall filter
add chain=forward action=drop in-interface-list=GUEST out-interface-list=!WAN place-before=0 comment="guests: internet only"
add chain=input action=accept in-interface-list=GUEST protocol=udp dst-port=53,67 place-before=0 comment="guests: DNS and DHCP"
add chain=input action=accept in-interface-list=GUEST protocol=tcp dst-port=53 place-before=0 comment="guests: DNS over TCP"

قانون‌های پایه‌ی input با in-interface-list=LAN برای کاربران کار می‌کنند؛ مهمان‌ها به جز DNS و DHCP به خود روتر دسترسی ندارند. مجموعه‌ی کامل قوانین در فایروال میکروتیک آمده است.

بررسی

/interface bridge vlan print
/interface bridge port print
/interface bridge host print

در خروجی bridge vlan print، ستون‌های CURRENT-TAGGED و CURRENT-UNTAGGED نشان می‌دهند روتر واقعاً چه چیزی را اعمال کرده است. bridge host print نشان می‌دهد هر آدرس MAC از کدام پورت و در کدام VLAN دیده شده.

کارایی

روی سوییچ‌های CRS3xx، VLAN filtering با تراشه‌ی سوییچ و بدون درگیر کردن CPU انجام می‌شود. روی بعضی روترها، روشن کردن VLAN filtering باعث می‌شود ترافیک بین پورت‌های bridge از CPU عبور کند. پیش از طراحی شبکه‌ای با ترافیک داخلی سنگین، جدول hardware offloading مدل دستگاه را در مستندات میکروتیک ببینید.

مشکلات رایج

  • دستگاه‌های VLAN ۱۰ آدرس نمی‌گیرند: DHCP server روی vlan10-users تعریف شده یا روی bridge1؟ باید روی اینترفیس VLAN باشد.
  • access point کلاینت‌های وای فای را به VLAN درست نمی‌برد: پورت روتر (ether2) باید برای هر دو VLAN tagged باشد و روی access point هم هر SSID به VLAN خودش وصل شده باشد.
  • VLAN کار می‌کند ولی بین VLANها ارتباطی نیست (یا برعکس، هست ولی نباید باشد): این کار فایروال است، نه جدول VLAN. قوانین forward را بررسی کنید.

بقیه‌ی راهنماهای میکروتیک، به ترتیب یادگیری، در راهنمای جامع میکروتیک آمده‌اند.

منابع

  1. MikroTik Documentation — Bridge VLAN Table help.mikrotik.com
  2. MikroTik Documentation — Bridging and Switching help.mikrotik.com