- اختيار المكون
- إطلاق واجهات الشبكة
- إعداد نقطة وصول 802.11ac (5 جيجا هرتز)
- تكوين 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
الوثائق /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
مكتوب 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
راجع hostpad.conf
الوثائق على /usr/share/doc/hostapd/examples/hostapd.conf
.
يمكن اختبار التكوين الموصوف يدويًا:
$ sudo hostapd /etc/hostapd/hostapd-simple.conf
إذا سارت الأمور على ما يرام ،
فسيظهر اتصال لاسلكي . إذا كنت راضيًا عن النتيجة ،
فلا تنسَ تغيير التكوين لبدء
hostapd
بمجرد ارتفاع الواجهة (كما هو موضح أدناه).
إليك واجهاتك النهائية /etc/network/interfaces:
$ cat /etc/network/interfaces
إعداد نقطة وصول 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
راجع 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: *
كما ترون ، تدعم الشرائح ما يصل إلى ثماني نقاط وصول على قناة واحدة. هذا يعني أنه يمكنك تكوين ما يصل إلى سبعة معرفات 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 ...
عظيم يمكنني استخدام
dnsmasq
DHCP - لا تتردد في استبدال مع ما تريد. يرجى ملاحظة أنه لكي تعمل الواجهة الافتراضية بشكل صحيح ، يجب
allow-hotplug
.
تكوين نقطة الوصول
الآن أبسط شيء: إضافة SSID الظاهري إلى تكوين
hostapd
الحالي. فقط أضف هذا
إلى نهاية ملف
hostapd.conf
الموجود:
$ cat /etc/hostapd/hostapd.conf ...
في المثال ، استخدمت تشفير WPA2 ، لكن معظم خيارات واجهة الراديو متاحة هنا (على سبيل المثال ،
channel
). يمكنك إضافة المزيد من معرفات مجموعة الخدمات (SSIDs) الافتراضية عن طريق إضافة الأسطر في ملف التكوين ببساطة وفقًا للواجهات الظاهرية المعلنة والمكوّنة بشكل صحيح.
الآن أعد التشغيل - وشاهد SSID الجديد مع الواجهة اللاسلكية الجديدة (انتبه إلى عنوان MAC):
$ ip addr show wlan0 | grep link | awk '{print $2}' 46:c3:06:00:03:e1
هذا كل شيء يا رفاق!