DIY वायरलेस राउटर


  1. घटक चयन
  2. नेटवर्क इंटरफेस लॉन्च करें
  3. 802.11ac एक्सेस प्वाइंट (5 GHz) सेट करना
  4. Hostapd का उपयोग करके एक वर्चुअल SSID कॉन्फ़िगर करना

पिछले दस वर्षों से, मैंने लिनक्स कर्नेल से हटाए गए $ 500 से अधिक के लिए "फ़ंक्शंस" को वापस करने के लिए उस पर सस्ते नेटवर्क उपकरण खरीदे हैं और उस पर डीडी-डब्ल्यूआरटी स्थापित किया है, जिस पर स्टॉक फ़र्मवेयर आधारित है।

अस्थिर बिल्ड, बिना त्रुटि और विवादों के बावजूद, डीडी-डब्ल्यूआरटी अभी भी स्टॉक फर्मवेयर के लिए बेहतर है। लेकिन अब योग्य घटक पहले की तुलना में सस्ता हैं, और DIY समुदाय पूरी तरह से लिनक्स पर स्विच कर रहा है (मैं आपको, श्री रास्पबेरी को देख रहा हूं), इसलिए एक बार और सभी के लिए अपना वायरलेस राउटर क्यों नहीं बनाया जाए?

घटक चयन


सबसे पहले, आपको प्लेटफॉर्म पर निर्णय लेने की आवश्यकता है: x86 या एआरएम ? मैं प्रमुख अंतरों पर विस्तार से चर्चा नहीं करूंगा, लेकिन संक्षेप में: पूर्व में बेहतर प्रदर्शन है, जबकि बाद वाला सस्ता और अधिक ऊर्जा कुशल है। रास्पबेरी पाई बोर्ड (और समतुल्य) सबसे वायरलेस वाणिज्यिक राउटर की तुलना में बेहद सस्ते और शायद अधिक शक्तिशाली हैं, लेकिन x86 प्लेटफॉर्म व्यापक हैं और मानकीकृत फॉर्म कारकों और विस्तार बंदरगाहों का लाभ है।

बेशक, सबसे महत्वपूर्ण विवरण चिपसेट है। आज, वास्तविक तथ्य मानक 802.11n (2.4 गीगाहर्ट्ज) और 802.11ac (5 गीगाहर्ट्ज) हैं, लेकिन लिनक्स के लिए ड्राइवरों को चुनना अभी भी एक चुनौती है , विशेष रूप से एपी (एक्सेस प्वाइंट) मोड के लिए समर्थन। संक्षेप में, यदि आप समस्याएं नहीं चाहते हैं, तो एथेरोस चिपसेट चुनें। Ath9k और Ath10k ड्राइवर अच्छी तरह से समर्थित हैं, आप उन्हें आसानी से यूएसबी और / या मिनी-पीसीआई इंटरफेस के साथ पा सकते हैं।

कम से कम एक नेटवर्क इंटरफ़ेस नियंत्रक (एनआईसी) एक आवश्यक न्यूनतम है, और अपने स्वाद के लिए रैम और भंडारण चुनें।

सामग्री सूची


कीमत और बिजली की खपत का त्याग करने के बाद, मैंने अपग्रेड के लिए उपलब्ध मॉड्यूलर, अपेक्षाकृत शक्तिशाली कॉन्फ़िगरेशन के लिए x86 प्लेटफॉर्म को चुना।

यदि आपको एआरएम की आवश्यकता नहीं है, तो एक प्रशंसक आवश्यक नहीं है।


आवास विशाल है, जिसमें एसी / डीसी प्लग के लिए दो तैयार छेद हैं। मदरबोर्ड, रैम और पिको-पीएसयू को सुचारू रूप से स्थापित करना:


लोहे की पोर्न

मिनी-पीसीआई वाईफाई को स्थापित करना सबसे मुश्किल निकला, क्योंकि बोर्ड केवल आधे आकार के कार्ड का समर्थन करता है: यहां एमपीसीआई एक्सटेंशन केबल बचाव के लिए आया था। मैंने एडेप्टर के दोनों किनारों को जोड़ने के लिए एक 20 सेमी एफएफसी केबल (शामिल) लिया और मिनी-पीसीआई को चेसिस पर डबल-साइड टेप का उपयोग करके तय किया।




मिनी-पीसीआई विस्तारक

सौभाग्य से, चेसिस तीन प्री-कट एंटीना छेद के साथ आता है। यहाँ अंतिम परिणाम है:





सॉफ्टवेयर


यह स्पष्ट है कि हम लिनक्स डालते हैं। हार्डवेयर के आधार पर, यह रास्पियन (रास्पबेरी पाई के लिए) या आपके द्वारा पसंद किए जाने वाले किसी भी अन्य लिनक्स वितरण की तरह एक अनुकूलित वितरण हो सकता है। चूंकि मैं कई वर्षों से उबंटू का उपयोग कर रहा हूं, मैंने उबंटू सर्वर 18.04 एलटीएस को चुना, जिसके साथ काम करने के लिए मैं अधिक आदी हूं और जिसके पास दीर्घकालिक समर्थन है।

इस लेख के बाकी ने माना कि आप डेबियन-आधारित वितरण का उपयोग कर रहे हैं।

यदि इंस्टॉलेशन ठीक चला और आप कंसोल पर गए, तो इंटरफ़ेस नामों को परिभाषित करें:

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

मदरबोर्ड पर दो अंतर्निहित एनआईसी हैं: ये हैं enp1s0 और enp2s0 । वायरलेस कार्ड wlp5s0 रूप में प्रकट होता है और एपी मोड का समर्थन करता है, जैसा कि इरादा है:

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

अब हम यह रेखांकित कर सकते हैं कि हमें क्या चाहिए: हमने पहला NIC एक WAN पोर्ट के रूप में डाला, और दूसरा हम वायरलेस इंटरफ़ेस से कनेक्ट करते हैं:



नेटवर्क


यदि आपके पास उबंटू 18.04 है, तो / etc / नेटवर्क / इंटरफेस के लिए समर्थन पर लौटने के लिए तुरंत netplan से छुटकारा netplan :

 $ 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 

चूंकि हम post-up हुक के माध्यम से dnsmasq प्रक्रिया शुरू और कॉन्फ़िगर करेंगे, बूट समय पर डेमॉन को अक्षम करना याद रखें:

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

हम नेटवर्क इंटरफेस के प्रारंभिक विन्यास को आरेख के अनुसार dnsmasq , जिसमें 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 इंटरफ़ेस विशेष रूप से wlp5s0 में निर्दिष्ट नहीं है, क्योंकि hostapd इसे स्वचालित रूप से पुल में जोड़ देगा (इंटरफ़ेस को मोड बदलने के लिए hostapd प्रारंभ होने से पहले brctl इसे करने से मना कर सकता है)।

dnsmasq प्रलेखन देखें।

अब आप नेटवर्क ( sudo service networking restart ) को पुनरारंभ कर सकते हैं या केवल यह सत्यापित करने के लिए रिबूट कर सकते हैं कि नेटवर्क कॉन्फ़िगरेशन सही है।

कृपया ध्यान दें: हालांकि हम वर्तमान में enp2s0 से डीएचसीपी प्राप्त कर सकते हैं, हमारे पास न तो वायरलेस कनेक्शन होगा (इस पर बाद में), और न ही इंटरनेट एक्सेस (नीचे देखें)।

मार्ग


इस बिंदु पर, आपको LAN ( enp2s0 ) और WAN ( enp1s0 ) enp1s0 बीच पैकेट को रूट करना होगा और नेटवर्क एड्रेस ट्रांसलेशन को सक्षम करना होगा।

पैकेट अग्रेषण को सक्षम करना आसान है:

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

अंतिम कमांड सुनिश्चित करता है कि कॉन्फ़िगरेशन अगले रिबूट तक सहेजा गया है।

नेटवर्क एड्रेस ट्रांसलेशन एक और बात है, आमतौर पर आपको iptables से निपटना होता है (या लड़ना)। सौभाग्य से, पाषाण युग लंबे समय से अधिक है, और फायरहोल के लोगों ने अमूर्तता के आवश्यक स्तर को जोड़ने में बहुत प्रयास किया:

 $ sudo apt-get install firehol 

फायरहोल एक अत्याधुनिक सुरक्षित फ़ायरवॉल भाषा है, इसका विन्यास समझने में आसान और सुलभ है। आपको अब iptables स्टेटमेंट लिखने की आवश्यकता नहीं है: कॉन्फ़िगरेशन फ़ाइल को ही iptables स्टेटमेंट में अनुवादित किया जाता है और आवश्यकतानुसार लागू किया जाता है। पृष्ठभूमि में कोई डेमॉन नहीं।

न्यूनतम फ़ायरवॉल नियमों को जोड़ने के साथ लैन इंटरफेस के लिए नेटवर्क पते का अनुवाद सक्रिय रूप से किया जाता है:

 $ 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 ( sudo firehol start ) sudo firehol start करके और LAN पोर्ट से लैपटॉप को कनेक्ट करके सेटिंग्स की जांच कर सकते हैं : अब आप WAN पोर्ट कनेक्ट होने पर ऑनलाइन जा सकते हैं

रिबूट करने से पहले, फायरहॉल को बूट पर शुरू करने की अनुमति देने के लिए /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 n / 2.4 Ghz / 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 प्रलेखन के hostpad.conf देखें

वर्णित कॉन्फ़िगरेशन को मैन्युअल रूप से परीक्षण किया जा सकता है:

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

यदि सब कुछ ठीक हो जाता है, तो एक वायरलेस कनेक्शन दिखाई देगा । यदि आप परिणाम से संतुष्ट हैं, तो इंटरफ़ेस hostapd ही 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 GHz) सेट करना


निष्क्रिय स्कैन


Airetos AEX-QCA9880-NX डॉक्यूमेंटेशन के अनुसार, चिपसेट 802.11ac सपोर्ट करता है, जिससे हम भीड़ वाले 2.4 GHz चैनल को स्वर्ग 5 GHz में छोड़ सकते हैं।

आइए देखें कि क्या आवृत्तियों का समर्थन किया जाता है:

 $ 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 GHz) चैनलों और 36-165 (5 GHz) चैनलों का समर्थन करता है, लेकिन क्या आपने no IR ध्वज no IR देखा है?

no IR ध्वज नो-आरंभ-विकिरण (यानी निष्क्रिय स्कैनिंग ) को इंगित करता है। इसका मतलब है कि यह मोड उस स्थिति में निषिद्ध है जब डिवाइस विकिरण ( बीकन सहित) शुरू करने वाला पहला है। दूसरे शब्दों में, आप इन चैनलों पर पहुँच बिंदु नहीं चला सकते हैं !



नियामक आवश्यकताओं


उपरोक्त स्थिति को लिनक्स की नियामक आवश्यकताओं द्वारा समझाया गया है, जो देश के आधार पर रेडियो आवृत्ति स्पेक्ट्रम के उपयोग को नियंत्रित करता है

लेकिन हे!

मैं यूएसए में रहता हूं, और लिंक कहता है कि मुझे 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 



पैच!


सौभाग्य से, नियामक आवश्यकताओं को चालक स्तर पर संसाधित किया जाता है, इसलिए उन्हें आसानी से बदला जा सकता है: हम ओपन-डब्ल्यूआरटी स्रोत कोड में पैच पाते हैं।

सबसे पहले, /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 

अपने कर्नेल स्रोत डाउनलोड करें:

 $ apt-get source linux 

चूंकि मूल ओपन-डब्ल्यूआरटी पैच को "उतने" तक नहीं लगाया जा सकता है, क्योंकि उबंटू गिरी के पेड़ के निर्माण प्रणाली में सूक्ष्म अंतर के कारण, मुझे इसे ठीक करना पड़ा:

 $ 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 

यदि कोई समस्या नहीं है, तो अब आप पिछले कर्नेल के शीर्ष पर निश्चित कर्नेल स्थापित कर सकते हैं:

 $ 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) ... 

स्वचालित अपडेट से बचने के लिए, आपको लिनक्स कर्नेल संस्करण को ठीक करने की आवश्यकता हो सकती है।

विन्यास


नई hostapd कॉन्फ़िगरेशन hostapd काफी सरल होगी: hw_mode=a जिसमें 5 गीगाहर्ट्ज़ बैंड शामिल हैं, और ieee80211ac=1 में 802.11ac (VHT) शामिल हैं। ieee80211d=1 country_code=US साथ ieee80211d=1 विकल्प उस नियामक डोमेन को निर्दिष्ट करता है जिसके तहत हम काम करते हैं।

बैंडविड्थ का अधिकतम लाभ ht_capab , 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 प्रलेखन के hostpad.conf देखें

इस बिंदु पर, वायरलेस राउटर पूरी तरह से चालू है, और यदि आपको अधिक जटिल कॉन्फ़िगरेशन की आवश्यकता है, तो आप अब कॉन्फ़िगरेशन फ़ाइलों में गोता लगा सकते हैं।

Hostapd का उपयोग करके एक वर्चुअल SSID कॉन्फ़िगर करना


भले ही आप किसी अतिथि पहुंच बिंदु या अपने वीपीएन के लिए समर्पित वायरलेस नेटवर्क को कॉन्फ़िगर करना चाहते हों, किसी बिंदु पर आपको एक आभासी एसएसआईडी को कॉन्फ़िगर करना होगा।

चार्ट


वर्तमान कॉन्फ़िगरेशन के आधार पर, यहां एक अद्यतन आरेख है जिसे हम प्राप्त करना चाहते हैं। मान लें कि wlp5s0 भौतिक वायरलेस इंटरफ़ेस है, वर्चुअल SSID अपने स्वयं के 192.168.2.0/24 सबनेट का उपयोग करके wlan0 वर्चुअल इंटरफ़ेस पर चलेगा:



ट्रेनिंग


पहले, जांचें कि आपका वायरलेस डिवाइस कई SSID का समर्थन करता है:

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

जैसा कि आप देख सकते हैं, चिपसेट एक चैनल पर आठ पहुंच बिंदुओं का समर्थन करता है। इसका मतलब है कि आप अधिकतम सात वर्चुअल SSID को कॉन्फ़िगर कर सकते हैं, और ये सभी एक ही चैनल पर काम करेंगे।

नेटवर्क इंटरफ़ेस


Hostapd.conf में प्रलेखन के अनुसार, भौतिक इंटरफ़ेस के मैक पते और वर्चुअल इंटरफेस के बीएसएसआईडी के बीच एक सख्त संबंध है:

होस्टपेड उन बीएसएसआईडी के आधार पर एक बीएसएसआईडी मुखौटा उत्पन्न करेगा जो कॉन्फ़िगर किए गए हैं। hostapd सत्यापित करेगा कि dev_addr & MASK == dev_addr । यदि यह मामला नहीं है, तो होस्टपैड शुरू करने से पहले रेडियो का मैक पता बदलना होगा। यदि प्रत्येक माध्यमिक BSS के लिए BSSID कॉन्फ़िगर किया गया है, तो यह सीमा hostapd पर लागू नहीं होती है और अन्य मास्क का उपयोग किया जा सकता है यदि ड्राइवर उनका समर्थन करता है (उदाहरण के लिए, स्थानीय रूप से प्रशासित बिट स्वैप)

बीएसएसआईडी को प्रत्येक बीएसएस के क्रम में सौंपा गया है, जब तक कि एक स्पष्ट बीएसएसआईडी 'बीएसएसआईडी' पैरामीटर का उपयोग करके निर्दिष्ट नहीं किया जाता है।

यदि एक स्पष्ट बीएसएसआईडी निर्दिष्ट है, तो उसे इस तरह चुना जाना चाहिए:
- एक मान्य MASK में परिणाम होता है जो इसे और dev_addr को कवर करता है
- रेडियो के मैक पते के समान नहीं है
- किसी अन्य द्वारा स्पष्ट रूप से निर्दिष्ट बीएसएसआईडी के समान नहीं है

इन आवश्यकताओं को पूरा करने के लिए और hostapd स्वचालित रूप से वर्चुअल इंटरफ़ेस (s) के BSSID को असाइन hostapd अनुमति hostapd , हम चार कम से कम महत्वपूर्ण बिट्स को शून्य करके भौतिक वायरलेस इंटरफ़ेस के मैक पते को अपडेट करते हैं। यह 15 आभासी बीएसएसआईडी के लिए पर्याप्त है - आवश्यकता से बहुत अधिक।

सबसे पहले, वर्तमान मैक पते का निर्धारण करें:

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

यदि आप अंतिम चार बिट्स को साफ़ करते हैं और U / L बिट सेट करते हैं, तो आपको MAC पता 46:c3:06:00:03:e0

अब हम इंटरफ़ेस को लोड करने से पहले सही मैक पते को सेट करने के लिए कॉन्फ़िगरेशन को अपडेट करेंगे, और हमारे आरेख के अनुसार एक आभासी वायरलेस इंटरफ़ेस भी घोषित करेंगे:

 $ 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 ... 

बहुत बढ़िया। मैं एक DHCP सर्वर के रूप में dnsmasq उपयोग करता dnsmasq - जो भी आपको पसंद है उसे बदलने के लिए स्वतंत्र महसूस करें। कृपया ध्यान दें कि वर्चुअल इंटरफ़ेस के सही ढंग से काम करने के लिए, allow-hotplug की आवश्यकता है।

पहुंच बिंदु कॉन्फ़िगरेशन


अब सरलतम बात: वर्तमान hostapd कॉन्फ़िगरेशन में वर्चुअल SSID जोड़ें। इसे मौजूदा 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 )। आप घोषित और सही ढंग से कॉन्फ़िगर किए गए वर्चुअल इंटरफेस के अनुसार कॉन्फ़िगरेशन फ़ाइल में लाइनों को जोड़कर अधिक आभासी एसएसआईडी जोड़ सकते हैं।

अब रिबूट करें - और अपने नए एसएसआईडी को नए वायरलेस इंटरफ़ेस (मैक पते पर ध्यान दें) के साथ देखें:

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

यही है दोस्तों!

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


All Articles