راوتر لاسلكي DIY


  1. اختيار المكون
  2. إطلاق واجهات الشبكة
  3. إعداد نقطة وصول 802.11ac (5 جيجا هرتز)
  4. تكوين SSID الظاهري باستخدام hostapd

على مدى السنوات العشر الماضية ، اشتريت معدات شبكة رخيصة وقمت بتثبيت DD-WRT عليها من أجل إرجاع "الوظائف" لأكثر من 500 دولار تمت إزالتها من نواة Linux ، والتي تستند إليها البرامج الثابتة للسهم.

على الرغم من الثغرات غير المستقرة والأخطاء والنزاعات غير المصححة ، لا يزال DD-WRT أفضل من البرامج الثابتة الخاصة بالأوراق المالية. لكن المكونات الجديرة الآن أرخص من أي وقت مضى ، وقد تحول مجتمع DIY تمامًا إلى Linux (أنا أنظر إليك يا السيد Raspberry) ، فلماذا لا تبني جهاز التوجيه اللاسلكي الخاص بك مرة واحدة وإلى الأبد؟

اختيار المكون


بادئ ذي بدء ، تحتاج إلى اتخاذ قرار بشأن النظام الأساسي: x86 أو ARM ؟ لن أناقش بالتفصيل الاختلافات الرئيسية ، ولكن باختصار: الأول لديه أداء أفضل ، في حين أن الأخير هو أرخص وأكثر كفاءة في استخدام الطاقة. تعتبر لوحات Raspberry Pi (ومكافئاتها) رخيصة للغاية وربما أكثر قوة من معظم أجهزة التوجيه التجارية اللاسلكية ، ولكن منصات x86 واسعة الانتشار وتتمتع بعوامل شكل موحدة ومنافذ توسع.

بالطبع ، أهم التفاصيل هي مجموعة الشرائح. اليوم ، فإن المعايير الفعلية هي 802.11n (2.4 غيغاهرتز) و 802.11 aac (5 غيغاهرتز) ، ولكن التقاط برامج تشغيل Linux لا يزال يمثل تحديًا ، خاصة مع دعم وضع AP (نقطة الوصول). باختصار ، إذا كنت لا تريد المشكلات ، فاختر شرائح Atheros . برامج تشغيل ath9k و ath10k مدعومة جيدًا ، يمكنك العثور عليها بسهولة باستخدام واجهات USB و / أو mini-PCIe.

وحدة تحكم واحدة على الأقل لواجهة الشبكة (NIC) هي الحد الأدنى الضروري ، واختر RAM وتخزينها حسب ذوقك.

قائمة المواد


بعد التضحية باستهلاك السعر والطاقة ، اخترت النظام الأساسي x86 للتكوين المعياري القوي نسبيا المتاح للترقية.

إذا كنت لا تحتاج إلى ARM ، فليس من الضروري وجود مروحة.


السكن واسع ، به فتحتان معدتان لسد التيار المتردد / التيار المتردد. تم تثبيت اللوحة الأم وذاكرة الوصول العشوائي و Pico-PSU بسلاسة:


حديد الاباحية

لقد تبين أن تثبيت mini-PCIe WiFi هو الأصعب ، لأن اللوحة تدعم فقط البطاقات ذات الحجم الصغير: هنا تم تمديد كابل تمديد mPCIe. أخذت كبل FFC بحجم 20 سم (مضمن) لتوصيل كلاً من جانبي المهايئ وتثبيت mini-PCIe بالهيكل باستخدام شريط مزدوج الجوانب.




مصغرة PCIe المتوسع

لحسن الحظ ، يأتي الهيكل مع ثلاثة فتحات للهواء مسبقة القطع. ها هي النتيجة النهائية:





البرمجيات


من الواضح أننا نضع لينكس. حسب الجهاز ، يمكن أن يكون توزيعًا محسنًا مثل Raspbian (لـ Raspberry Pi) أو أي توزيع Linux آخر تريده. منذ أن كنت أستخدم Ubuntu لسنوات عديدة ، اخترت Ubuntu Server 18.04 LTS ، وأنا معتاد على العمل معه ولديه دعم طويل الأجل.

تفترض بقية هذه المقالة أنك تستخدم توزيعًا يستند إلى دبيان.

إذا تمت عملية التثبيت بشكل جيد وذهبت إلى وحدة التحكم ، فحدد أسماء الواجهة:

$ ip -br a | awk '{print $1}' lo enp1s0 enp2s0 wlp5s0 

هناك نوعان من بطاقات NIC مدمجة على اللوحة الأم: وهما enp1s0 و enp2s0 . تظهر البطاقة اللاسلكية كـ wlp5s0 وتدعم وضع AP ، على النحو المقصود:

 $ iw list ... Supported interface modes: * managed * AP * AP/VLAN * monitor * mesh point 

الآن يمكننا تحديد ما نحتاج إليه: لقد وضعنا بطاقة واجهة الشبكة (NIC) الأولى كمنفذ لشبكة WAN ، والثاني وصلنا بالواجهة اللاسلكية:



الشبكة


إذا كان لديك Ubuntu 18.04 ، فتخلص من netplan الفور للعودة إلى دعم / etc / network / واجهات:

 $ sudo apt-get install ifupdown bridge-utils $ sudo systemctl stop networkd-dispatcher $ sudo systemctl disable networkd-dispatcher $ sudo systemctl mask networkd-dispatcher $ sudo apt-get purge nplan netplan.io 

كخادم DHCP / DNS ، حدد dnsmasq :

 $ sudo apt-get install dnsmasq 

نظرًا لأننا سنبدأ عملية dnsmasq وتكوينها من خلال ربط post-up ، تذكر تعطيل البرنامج الخفي في وقت التمهيد:

 $ sudo sed -i "s/^ENABLED=1$/ENABLED=0/g" /etc/default/dnsmasq 

سنكتب التكوين الأولي لواجهات الشبكة وفقًا للمخطط ، بما في ذلك التكوين الأدنى لـ dnsmasq :

 $ cat /etc/network/interfaces # Loopback auto lo iface lo inet loopback # WAN interface auto enp1s0 iface enp1s0 inet dhcp # Bridge (LAN) auto br0 iface br0 inet static address 192.168.1.1 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 bridge_ports enp2s0 post-up /usr/sbin/dnsmasq \ --pid-file=/var/run/dnsmasq.$IFACE.pid \ --dhcp-leasefile=/var/lib/misc/dnsmasq.$IFACE.leases \ --conf-file=/dev/null \ --interface=$IFACE --except-interface=lo \ --bind-interfaces \ --dhcp-range=192.168.1.10,192.168.1.150,24h pre-down cat /var/run/dnsmasq.$IFACE.pid | xargs kill 

الوثائق /etc/network/interfaces هنا

كما ترون من قسم post-up ، يبدأ dnsmasq بمجرد ارتفاع الجسر. يتم إجراء التكوين الخاص به فقط بواسطة وسيطات سطر الأوامر ( --conf-file=/dev/null ) ، وستتوقف العملية عند إيقاف تشغيل الواجهة.

لم يتم bridge_ports واجهة bridge_ports وجه التحديد في wlp5s0 ، لأن hostapd إلى الجسر تلقائيًا (قد يرفض brctl القيام بذلك قبل بدء hostapd لتغيير وضع الواجهة).

انظر وثائق dnsmasq .

يمكنك الآن إعادة تشغيل الشبكة (إعادة تشغيل شبكة sudo service networking restart ) أو ببساطة إعادة التشغيل للتحقق من صحة تكوين الشبكة.

يرجى ملاحظة: على الرغم من أنه يمكننا حاليًا استلام DHCP من enp2s0 ، فلن يكون لدينا اتصال لاسلكي (أكثر في هذا لاحقًا) أو الوصول إلى الإنترنت (انظر أدناه).

التوجيه


في هذه المرحلة ، تحتاج إلى توجيه الحزم بين enp2s0 LAN ( enp2s0 ) و WAN ( enp1s0 ) وتمكين ترجمة عنوان الشبكة .

تمكين إعادة توجيه الحزم أمر سهل:

 $ sudo sysctl -w net.ipv4.ip_forward=1 $ echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf 

يضمن الأمر الأخير أن يتم حفظ التكوين حتى إعادة التمهيد التالي.

تعتبر ترجمة عنوان الشبكة مسألة أخرى ، عادة ما يتعين عليك التعامل مع (أو بالأحرى محاربة) iptables . لحسن الحظ ، انتهى العصر الحجري الطويل ، وبذل شباب FireHol الكثير من الجهد لإضافة المستوى الضروري من التجريد:

 $ sudo apt-get install firehol 

FireHOL هي لغة جدار حماية آمنة على أحدث طراز ، تكوينها سهل الفهم ويمكن الوصول إليها. لم تعد بحاجة لكتابة عبارات iptables : يتم ترجمة ملف التكوين نفسه إلى عبارات iptables وتطبيقه حسب الحاجة. لا الخفي في الخلفية.

يتم تمكين ترجمة عناوين الشبكة لواجهات LAN مع إضافة الحد الأدنى من قواعد جدار الحماية بشكل أساسي:

 $ cat /etc/firehol/firehol.conf version 6 # Accept all client traffic on WAN interface enp1s0 wan client all accept # Accept all traffic on LAN interface br0 lan server all accept client all accept # Route packets between LAN and WAN router lan2wan inface br0 outface enp1s0 masquerade route all accept 

مكتوب FireHOL من قبل الناس للأشخاص ، والوثائق هنا .

يمكنك التحقق من الإعدادات عن طريق بدء firehol يدويًا ( sudo firehol start ) وتوصيل الكمبيوتر المحمول بمنفذ LAN: يمكنك الآن الاتصال بالإنترنت إذا كان منفذ WAN متصلاً.

قبل إعادة التشغيل ، تأكد من تعديل /etc/default/firehol للسماح لـ /etc/default/firehol ببدء التشغيل:

 $ sudo sed -i -E "s/^START_FIREHOL=.+$/START_FIREHOL=YES/g" /etc/default/firehol 

لن أخوض في تفاصيل بناء جملة firehol بالكامل ، يشرح ملف التكوين نفسه ، أوصي firehol إلى الوثائق في حالة تكوين أكثر تعقيدًا. إذا كنت مهتمًا حقًا بما فعله firehol مع iptables ، فاكتب sudo firehol status في سطر الأوامر.

نقطة اتصال لاسلكية


من الواضح أننا سندير نقطة الوصول باستخدام hostapd :

 $ sudo apt-get install hostapd 

ستجد أدناه ملف تكوين 802.11 ن / 2.4 غيغاهرتز / WPA2-AES الحد الأدنى وغير المبرر تقريبًا:

 $ cat /etc/hostapd/hostapd-simple.conf #### Interface configuration #### interface=wlp5s0 bridge=br0 driver=nl80211 ##### IEEE 802.11 related configuration ##### ssid=iCanHearYouHavingSex hw_mode=g channel=1 auth_algs=1 wmm_enabled=1 ##### IEEE 802.11n related configuration ##### ieee80211n=1 ##### WPA/IEEE 802.11i configuration ##### wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wpa_passphrase=YouCantGuess 

راجع hostpad.conf الوثائق على /usr/share/doc/hostapd/examples/hostapd.conf .

يمكن اختبار التكوين الموصوف يدويًا:

 $ sudo hostapd /etc/hostapd/hostapd-simple.conf 

إذا سارت الأمور على ما يرام ، فسيظهر اتصال لاسلكي . إذا كنت راضيًا عن النتيجة ، فلا تنسَ تغيير التكوين لبدء hostapd بمجرد ارتفاع الواجهة (كما هو موضح أدناه).

إليك واجهاتك النهائية /etc/network/interfaces:

 $ cat /etc/network/interfaces # Loopback auto lo iface lo inet loopback # WAN interface auto enp1s0 iface enp1s0 inet dhcp # Bridge (LAN) auto br0 iface br0 inet static address 192.168.1.1 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 bridge_ports enp2s0 post-up /usr/sbin/hostapd \ -P /var/run/hostapd.$IFACE.pid \ -B /etc/hostapd/hostapd-simple.conf post-up /usr/sbin/dnsmasq \ --pid-file=/var/run/dnsmasq.$IFACE.pid \ --dhcp-leasefile=/var/lib/misc/dnsmasq.$IFACE.leases \ --conf-file=/dev/null \ --interface=$IFACE --except-interface=lo \ --bind-interfaces \ --dhcp-range=192.168.1.10,192.168.1.150,24h pre-down cat /var/run/dnsmasq.$IFACE.pid | xargs kill pre-down cat /var/run/hostapd.$IFACE.pid | xargs kill 

إعداد نقطة وصول 802.11ac (5 جيجا هرتز)


المسح السلبي


وفقًا لوثائق Airetos AEX-QCA9880-NX ، تدعم الشرائح 802.11ac ، حتى نتمكن من ترك قنوات 2.4 جيجا هرتز المزدحمة في الجنة 5 جيجاهرتز.

لنرى ما هي الترددات المدعومة:

 $ iw list ... Frequencies: * 2412 MHz [1] (20.0 dBm) * 2417 MHz [2] (20.0 dBm) * 2422 MHz [3] (20.0 dBm) * 2427 MHz [4] (20.0 dBm) * 2432 MHz [5] (20.0 dBm) * 2437 MHz [6] (20.0 dBm) * 2442 MHz [7] (20.0 dBm) * 2447 MHz [8] (20.0 dBm) * 2452 MHz [9] (20.0 dBm) * 2457 MHz [10] (20.0 dBm) * 2462 MHz [11] (20.0 dBm) * 2467 MHz [12] (disabled) * 2472 MHz [13] (disabled) * 2484 MHz [14] (disabled) ... Frequencies: * 5180 MHz [36] (17.0 dBm) (no IR) * 5200 MHz [40] (17.0 dBm) (no IR) * 5220 MHz [44] (17.0 dBm) (no IR) * 5240 MHz [48] (17.0 dBm) (no IR) * 5260 MHz [52] (23.0 dBm) (no IR, radar detection) * 5280 MHz [56] (23.0 dBm) (no IR, radar detection) * 5300 MHz [60] (23.0 dBm) (no IR, radar detection) * 5320 MHz [64] (23.0 dBm) (no IR, radar detection) * 5500 MHz [100] (23.0 dBm) (no IR, radar detection) * 5520 MHz [104] (23.0 dBm) (no IR, radar detection) * 5540 MHz [108] (23.0 dBm) (no IR, radar detection) * 5560 MHz [112] (23.0 dBm) (no IR, radar detection) * 5580 MHz [116] (23.0 dBm) (no IR, radar detection) * 5600 MHz [120] (23.0 dBm) (no IR, radar detection) * 5620 MHz [124] (23.0 dBm) (no IR, radar detection) * 5640 MHz [128] (23.0 dBm) (no IR, radar detection) * 5660 MHz [132] (23.0 dBm) (no IR, radar detection) * 5680 MHz [136] (23.0 dBm) (no IR, radar detection) * 5700 MHz [140] (23.0 dBm) (no IR, radar detection) * 5720 MHz [144] (23.0 dBm) (no IR, radar detection) * 5745 MHz [149] (30.0 dBm) (no IR) * 5765 MHz [153] (30.0 dBm) (no IR) * 5785 MHz [157] (30.0 dBm) (no IR) * 5805 MHz [161] (30.0 dBm) (no IR) * 5825 MHz [165] (30.0 dBm) (no IR) ... 

في القائمة أعلاه ، نرى أن الشرائح تدعم القنوات 1-14 (2.4 جيجا هرتز) والقنوات 36-165 (5 جيجا هرتز) ، لكن هل لاحظت no IR إشارة no IR ؟

تشير إشارة no IR إلى عدم بدء الإشعاع (أي المسح السلبي ). هذا يعني أن هذا الوضع محظور في الحالة التي يكون فيها الجهاز هو أول من يطلق الإشعاع (بما في ذلك المنارات ). بمعنى آخر ، لا يمكنك تشغيل نقطة الوصول على هذه القنوات !



المتطلبات التنظيمية


يتم شرح الموقف أعلاه من خلال المتطلبات التنظيمية لنظام Linux ، والتي تنظم استخدام طيف الترددات الراديوية حسب البلد .

لكن مهلا!

أنا أعيش في الولايات المتحدة الأمريكية ، ويقول الرابط إن لي الحق في إطلاق الإشعاع على القنوات 36-48 ، فما الأمر؟ لنرى النطاق التنظيمي المستخدم حاليًا:

 $ iw reg get country 00: DFS-UNSET (2402 - 2472 @ 40), (N/A, 20), (N/A) (2457 - 2482 @ 40), (N/A, 20), (N/A), NO-IR (2474 - 2494 @ 20), (N/A, 20), (N/A), NO-OFDM, NO-IR (5170 - 5250 @ 80), (N/A, 20), (N/A), NO-IR (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS, NO-IR (5490 - 5730 @ 160), (N/A, 20), (0 ms), DFS, NO-IR (5735 - 5835 @ 80), (N/A, 20), (N/A), NO-IR (57240 - 63720 @ 2160), (N/A, 0), (N/A) 

توضح المشكلة أن النطاق العالمي نشط حاليًا (أو غير مثبت) ، أي الحد الأدنى للقيم المسموح بها في كل بلد .

لسوء الحظ ، لا يمكنك تثبيت مجال sudo iw reg set يدويًا ، لأن المجال محمي في EEPROM:

 $ dmesg | grep EEPROM [ 12.123068] ath: EEPROM regdomain: 0x6c 



التصحيح!


لحسن الحظ ، تتم معالجة المتطلبات التنظيمية على مستوى برنامج التشغيل ، بحيث يمكن تغييرها بسهولة: نجد التصحيح في التعليمات البرمجية المصدر Open-WRT .

أولاً وقبل كل شيء ، لا تنس توصيل مستودع شفرة المصدر من /etc/apt/sources.list :

 $ cat /etc/apt/sources.list ... deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted ... 

ثم قم بإعداد البيئة عن طريق تثبيت التبعيات اللازمة:

 $ sudo apt-get install build-essential fakeroot $ sudo apt-get build-dep linux 

قم بتنزيل مصادر kernel:

 $ apt-get source linux 

نظرًا لأنه لا يمكن تطبيق تصحيح Open-WRT الأصلي "كما هو" على شجرة نواة Ubuntu نظرًا للاختلافات الطفيفة في نظام البناء ، كان علي إصلاحها:

 $ VERSION=$(uname -r) $ cd linux-${VERSION%%-*} $ wget -O - https://gist.github.com/renaudcerrato/02de8b2e8dc013bc71326defd2ef062c/raw/a2db325e520e6442c8c12f7599d64ac1b7596a3e/402-ath_regd_optional.patch | patch -p1 -b 

كل شيء جاهز للتجميع:

 $ fakeroot debian/rules clean $ fakeroot debian/rules binary-generic 

إذا لم تكن هناك مشكلات ، يمكنك الآن تثبيت kernel الثابت أعلى السابقة:

 $ cd .. $ sudo dpkg -i linux*.deb 

إعادة التشغيل ، وفويلا:

 $ sudo iw reg set US $ iw list ... Frequencies: * 5180 MHz [36] (17.0 dBm) * 5200 MHz [40] (17.0 dBm) * 5220 MHz [44] (17.0 dBm) * 5240 MHz [48] (17.0 dBm) * 5260 MHz [52] (23.0 dBm) (radar detection) * 5280 MHz [56] (23.0 dBm) (radar detection) * 5300 MHz [60] (23.0 dBm) (radar detection) * 5320 MHz [64] (23.0 dBm) (radar detection) * 5500 MHz [100] (23.0 dBm) (radar detection) * 5520 MHz [104] (23.0 dBm) (radar detection) * 5540 MHz [108] (23.0 dBm) (radar detection) * 5560 MHz [112] (23.0 dBm) (radar detection) * 5580 MHz [116] (23.0 dBm) (radar detection) * 5600 MHz [120] (23.0 dBm) (radar detection) * 5620 MHz [124] (23.0 dBm) (radar detection) * 5640 MHz [128] (23.0 dBm) (radar detection) * 5660 MHz [132] (23.0 dBm) (radar detection) * 5680 MHz [136] (23.0 dBm) (radar detection) * 5700 MHz [140] (23.0 dBm) (radar detection) * 5720 MHz [144] (23.0 dBm) (radar detection) * 5745 MHz [149] (30.0 dBm) * 5765 MHz [153] (30.0 dBm) * 5785 MHz [157] (30.0 dBm) * 5805 MHz [161] (30.0 dBm) * 5825 MHz [165] (30.0 dBm) ... 

لتجنب التحديثات التلقائية ، قد تحتاج إلى إصلاح إصدار Linux kernel .

التكوين


سيكون hostapd تكوين hostapd الجديد بسيطًا جدًا: hw_mode=a يتضمن نطاقات 5 جيجاهرتز ، و ieee80211ac=1 يتضمن 802.11ac (VHT). ieee80211d=1 الخيار ieee80211d=1 مع country_code=US المجال التنظيمي الذي نعمل بموجبه.

لتحقيق أقصى استفادة من النطاق الترددي ، يجب أن يعكس ht_capab و vht_capab قدرات الجهاز:

 $ iw list ... Band 1: Capabilities: 0x19e3 RX LDPC HT20/HT40 Static SM Power Save RX HT20 SGI RX HT40 SGI TX STBC RX STBC 1-stream Max AMSDU length: 7935 bytes DSSS/CCK HT40 ... Band 2: VHT Capabilities (0x338001b2): Max MPDU length: 11454 Supported Channel Width: neither 160 nor 80+80 RX LDPC short GI (80 MHz) TX STBC RX antenna pattern consistency TX antenna pattern consistency 

مع وضع ذلك في الاعتبار ، إليك هو hostapd.conf النهائي :

 $ cat /etc/hostapd/hostapd.conf #### Interface configuration #### interface=wlp5s0 bridge=br0 driver=nl80211 ##### IEEE 802.11 related configuration ##### ssid=iCanHearYouHavingSex hw_mode=a channel=0 auth_algs=1 wmm_enabled=1 country_code=US ieee80211d=1 ieee80211h=0 ##### IEEE 802.11n related configuration ##### ieee80211n=1 ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CK-40][LDPC][MAX-AMSDU-7935] ##### IEEE 802.11ac related configuration ##### ieee80211ac=1 vht_capab=[MAX-MPDU-11454][RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][MAX-A-MPDU-LEN-EXP7][TX-ANTENNA-PATTERN][RX-ANTENNA-PATTERN] vht_oper_chwidth=1 ##### WPA/IEEE 802.11i configuration ##### wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wpa_passphrase=YouCantGuess 

راجع hostpad.conf الوثائق على /usr/share/doc/hostapd/examples/hostapd.conf .

في هذه المرحلة ، يعمل جهاز التوجيه اللاسلكي بالكامل ، وإذا كنت بحاجة إلى تكوين أكثر تعقيدًا ، فيمكنك الآن الغوص في ملفات التكوين.

تكوين SSID الظاهري باستخدام hostapd


بغض النظر عما إذا كنت ترغب في تكوين نقطة وصول ضيف أو شبكة لاسلكية مخصصة لشبكة VPN الخاصة بك ، في مرحلة ما سيكون عليك تكوين SSID افتراضي.

الرسم البياني


استنادًا إلى التكوين الحالي ، إليك رسم تخطيطي محدث لما نريد الحصول عليه. بافتراض أن wlp5s0 هي الواجهة اللاسلكية المادية ، فسوف تعمل SSID الافتراضية على الواجهة الافتراضية wlan0 باستخدام الشبكة الفرعية 192.168.2.0/24 الخاصة بها:



التحضير


أولاً ، تحقق من أن جهازك اللاسلكي يدعم معرفات SSID متعددة:

 $ iw list ... valid interface combinations: * #{ AP, mesh point } <= 8, total <= 8, #channels <= 1, STA/AP BI must match ... 

كما ترون ، تدعم الشرائح ما يصل إلى ثماني نقاط وصول على قناة واحدة. هذا يعني أنه يمكنك تكوين ما يصل إلى سبعة معرفات SSID افتراضية ، وستعمل جميعها على نفس القناة.

واجهة الشبكة


وفقًا للوثائق الموجودة في hostapd.conf ، يوجد اتصال صارم بين عنوان MAC الخاص بالواجهة الفعلية و BSSID للواجهات الافتراضية:

سيقوم hostapd بإنشاء قناع BSSID استنادًا إلى BSSIDs التي تم تكوينها. سيتحقق hostapd من أن dev_addr & MASK == dev_addr . إذا لم تكن هذه هي الحالة ، فيجب تغيير عنوان MAC للراديو قبل بدء hostapd. إذا تم تكوين BSSID لكل BSS ثانوي ، فلن يتم تطبيق هذا القيد على hostapd ويمكن استخدام أقنعة أخرى إذا كان برنامج التشغيل يدعمها (على سبيل المثال ، تبديل البت المُدار محليًا)

يتم تعيين BSSID من أجل كل BSS ، إلا إذا تم تحديد BSSID صريح باستخدام المعلمة 'bssid'.

إذا تم تحديد BSSID صريح ، فيجب اختياره بحيث:
- ينتج قناعًا صالحًا يغطيه و dev_addr
- ليس هو نفسه عنوان MAC للراديو
- ليس هو نفسه أي BSSID المحدد صراحة

للوفاء بهذه المتطلبات والسماح لـ hostapd بتعيين hostapd تلقائيًا للواجهة (الواجهات) الافتراضية ، نقوم بتحديث عنوان MAC الخاص بالواجهة اللاسلكية الفعلية عن طريق التخلص من البتات الأربعة الأقل أهمية. هذا يكفي لمدة 15 BSSID الظاهري - أكثر بكثير من اللازم.

أولاً ، حدد عنوان MAC الحالي:

 $ ip addr show wlp5s0 | grep link | awk '{print $2}' 44:c3:06:00:03:eb 

إذا قمت بمسح البتات الأربعة الأخيرة وقمت بتعيين بت U / L ، فستحصل على عنوان MAC 46:c3:06:00:03:e0 .

سنقوم الآن بتحديث التكوين لضبط عنوان MAC الصحيح قبل تحميل الواجهة ، ونعلن أيضًا عن واجهة لاسلكية افتراضية وفقًا للمخطط:

 $ cat /etc/network/interfaces ... # Physical Wireless auto wlp5s0 iface wlp5s0 inet manual pre-up ip link set dev wlp5s0 address 46:c3:06:00:03:e0 # Virtual Wireless allow-hotplug wlan0 iface wlan0 inet static address 192.168.2.1 network 192.168.2.0 netmask 255.255.255.0 broadcast 192.168.2.255 post-up /usr/sbin/dnsmasq \ --pid-file=/var/run/dnsmasq-wlan0.pid \ --conf-file=/dev/null \ --interface=wlan0 --except-interface=lo \ --bind-interfaces \ --dhcp-range=192.168.2.10,192.168.2.150,24h post-down cat /var/run/dnsmasq-wlan0.pid | xargs kill ... 

عظيم يمكنني استخدام dnsmasq DHCP - لا تتردد في استبدال مع ما تريد. يرجى ملاحظة أنه لكي تعمل الواجهة الافتراضية بشكل صحيح ، يجب allow-hotplug .

تكوين نقطة الوصول


الآن أبسط شيء: إضافة SSID الظاهري إلى تكوين hostapd الحالي. فقط أضف هذا إلى نهاية ملف hostapd.conf الموجود:

 $ cat /etc/hostapd/hostapd.conf ... ### Virtual SSID(s) ### bss=wlan0 ssid=MyVirtualSSID wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wpa_passphrase=you_cant_guess 

في المثال ، استخدمت تشفير WPA2 ، لكن معظم خيارات واجهة الراديو متاحة هنا (على سبيل المثال ، channel ). يمكنك إضافة المزيد من معرفات مجموعة الخدمات (SSIDs) الافتراضية عن طريق إضافة الأسطر في ملف التكوين ببساطة وفقًا للواجهات الظاهرية المعلنة والمكوّنة بشكل صحيح.

الآن أعد التشغيل - وشاهد SSID الجديد مع الواجهة اللاسلكية الجديدة (انتبه إلى عنوان MAC):

 $ ip addr show wlan0 | grep link | awk '{print $2}' 46:c3:06:00:03:e1 

هذا كل شيء يا رفاق!

Source: https://habr.com/ru/post/ar437634/


All Articles