━━━ एक पहुंच बिंदु स्थापित करना access
हम एक ईथरनेट पोर्ट eth0 के साथ एक एक्सेस प्वाइंट के बारे में बात कर रहे हैं ।
यदि आप wlan0 क्लाइंट कनेक्शन के साथ एक और wifi नेटवर्क (wlan repeater) के साथ एक एक्सेस प्वाइंट चाहते हैं तो एक्सेस प्वाइंट को WiFi राउटर / रिपीटर के रूप में देखें, जो ब्रिज के साथ वैकल्पिक है ।
अतिरिक्त सॉफ़्टवेयर को स्थापित किए बिना, रास्पियन खिंचाव को वाईफ़ाई पहुंच बिंदु के रूप में कॉन्फ़िगर करना संभव है । सभी आवश्यक घटक उपलब्ध हैं: नेटवर्किंग, डीएचसीपी सर्वर और ब्रिजिंग सिस्टमड-नेटवर्कड के साथ आती है और वाईफाई को wpa_supplicant के साथ सेटअप किया जा सकता है । दो इंटरफेस eth0 और wlan0 को कनेक्ट करके रूटिंग या ब्रिजिंग द्वारा किया जा सकता है। त्वरित स्थापना के लिए पहले सेटअप और फिर विवरण के नीचे। पहले हमें systemd-networkd पर स्विच करना होगा ।
2020-01-18 पर अपडेट की गई रास्पबेरी पाई 4 बी पर रास्पियन बस्टर लाइट 2019-09-26 के साथ परीक्षण किया गया।
के साथ किए गए अपडेट sudo apt update && sudo apt full-upgrade && sudo reboot
।
यहां आप पिछले रास्पियन संस्करणों के लिए अंतिम परीक्षण संशोधन पा सकते हैं ।
♦ सामान्य सेटअप
Systemd-networkd पर स्विच करें
विस्तृत जानकारी के लिए (1) देखें और सिस्टम रिज़ॉल्यूशन के साथ नाम रिज़ॉल्यूशन को कैसे कॉन्फ़िगर करें । यहाँ केवल संक्षेप में। इन आदेशों का पालन करें:
# deinstall classic networking
rpi ~$ sudo -Es
rpi ~# apt --autoremove purge ifupdown dhcpcd5 isc-dhcp-client isc-dhcp-common
rpi ~# rm -r /etc/network /etc/dhcp
# setup systemd-resolved
rpi ~# apt --autoremove purge avahi-daemon
rpi ~# apt install libnss-resolve
rpi ~# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
rpi ~# systemctl enable systemd-resolved.service
# enable systemd-networkd
rpi ~# systemctl enable systemd-networkd.service
पहुंच बिंदु के रूप में wpa_supplicant कॉन्फ़िगर करें
कॉन्फ़िगर करने के लिए wpa_supplicant पहुँच बिंदु के रूप में के लिए अपनी सेटिंग के साथ इस फ़ाइल बनाने country=
, ssid=
, psk=
और हो सकता है frequency=
। आप केवल cat
EOF के साथ और अपनी कमांड लाइन में इसे एक ब्लॉक में कॉपी और पेस्ट कर सकते हैं, जिसमें दोनों EOF (फाइलर ईओएफ को फाइल का हिस्सा नहीं मिलेगा) शामिल हैं:
rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="RPiNet"
mode=2
frequency=2437
#key_mgmt=NONE # uncomment this for an open hotspot
# delete next 3 lines if key_mgmt=NONE
key_mgmt=WPA-PSK
proto=RSN WPA
psk="password"
}
EOF
rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant.service
rpi ~# systemctl enable wpa_supplicant@wlan0.service
सामान्य सेटअप समाप्त। वापस जाओ।
Access एक स्टैंड अलोन एक्सेस प्वाइंट की स्थापना
इस सेटअप के लिए उदाहरण:
wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
\ /
(dhcp) 192.168.4.1
करो "जनरल सेटअप" तो कॉन्फ़िगर करने के लिए निम्न फ़ाइल बनाने wlan0 । हमारे पास केवल पहुंच बिंदु है। कोई ईथरनेट डिवाइस कॉन्फ़िगर नहीं किया गया है।
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
EOF
अगर आप ऐसा चाहते हैं तो रिबूट करें।
बस।
अन्यथा इस समय, रीबूट करने की आवश्यकता नहीं है।
। रूटिंग के बिना, एक्सेस प्वाइंट और eth0 के साथ सेट करना
इस सेटअप के लिए उदाहरण:
|
wifi | wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / | \ /
(dhcp) 192.168.4.1 | (dhcp) 192.168.50.1
सेट अप
"स्टैंड अप अलोन एक्सेस प्वाइंट सेट करें " तो eth0 को कॉन्फ़िगर करने के लिए निम्न फ़ाइल बनाएं ।
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
EOF
रीबूट।
बस।
विवरण
इंटरफ़ेस eth0 इंटरनेट राउटर से एक ईथरनेट केबल के साथ जुड़ा हुआ है और इसे इंटरनेट राऊटर से DHCP द्वारा कॉन्फ़िगरेशन मिलता है। इसके Address=192.168.50.2
बजाय उदाहरण के साथ इसे एक स्थिर आईपी पता देने के लिए कोई समस्या नहीं है DHCP=yes
।
बिना रूट किए आप मोबाइल-फोन के साथ इंटरनेट में नहीं जा सकते। आप केवल अपडेट या कुछ और प्राप्त करने के लिए आरपीआई से ही इसमें प्रवेश कर सकते हैं।
Recommended नैट (अनुशंसित) के साथ एक पहुंच बिंदु और eth0 के साथ स्थापित करना
इस सेटअप के लिए उदाहरण:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \
(dhcp) 192.168.4.1 (dhcp)
सेट अप
करो "जनरल सेटअप" तो कॉन्फ़िगर करने के लिए निम्न फ़ाइलों को बनाने के wlan0 और eth0 । यदि आपने पिछले सेटअप में से किसी एक को आज़माया है तो आप बस दो फाइलों को अधिलेखित कर सकते हैं। सुनिश्चित करें कि आप राउटर से पहुंच बिंदु के लिए एक अलग सबनेट का उपयोग करते हैं। इस उदाहरण में राउटर सबनेट 192.168.4.0/24 का उपयोग नहीं करता है। अगर आपको एक और सबनेट की जरूरत है तो बस एड्रेस लाइन को बदल दें, जैसे Address=192.168.5.1/24
।
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
# IPMasquerade is doing NAT
IPMasquerade=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
IPForward=yes
EOF
रीबूट।
बस।
विवरण
यदि आपके पास इंटरनेट राउटर तक पहुंच नहीं है, तो आप इसे एनएटी (नेटवर्क एड्रेस ट्रांसलेशन) के साथ नकली बना सकते हैं ताकि यह झूठ हो सके कि सभी पैकेज आपके रासपी एपी से आ रहे हैं। लेकिन यह स्वच्छ मार्ग नहीं है और इसकी सीमाएँ हैं। राउटर के सबनेट पर ग्राहक वाईफ़ाई पर ग्राहकों से जुड़ नहीं सकते। लेकिन ज्यादातर मामलों में इसकी आवश्यकता नहीं होती है, इसलिए इस सेटअप की सिफारिश की जाती है क्योंकि यह सेटअप को सरल करता है। यदि आपको राउटर नेटवर्क से वाईफाई क्लाइंट से कनेक्ट करने की आवश्यकता है, तो आपको अगले भाग में डिबार किए गए के रूप में पूर्ण रूटिंग का उपयोग करना होगा।
। रूटिंग के साथ एक एक्सेस पॉइंट और eth0 के साथ सेट करना
इस सेटअप के लिए उदाहरण:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \ /
(dhcp) 192.168.4.1 192.168.50.2 192.168.50.1
सेट अप
करो "जनरल सेटअप" तो कॉन्फ़िगर करने के लिए निम्न फ़ाइलों को बनाने के wlan0 और eth0 । यदि आपने पिछले सेटअप में से किसी एक को आज़माया है तो आप बस दो फाइलों को अधिलेखित कर सकते हैं। सुनिश्चित करें कि आप एक्सेस पॉइंट और राउटर नेटवर्क के लिए अलग-अलग सबनेट का उपयोग करते हैं। हमें स्थैतिक आईपी पते का उपयोग करना होगा क्योंकि हमें उन्हें गेटवे के रूप में उपयोग करना चाहिए।
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.2/24
Gateway=192.168.50.1
DNS=84.200.69.80 1.1.1.1
IPForward=yes
EOF
रीबूट।
रूटिंग को पूरा करने के लिए आपको अपने इंटरनेट राउटर में एक स्थैतिक मार्ग सेट करना होगा ताकि यह रासपी पर आने वाले पैकेजों के लिए मार्ग का पता लगा सके जो वाईफाई से जुड़े ग्राहकों तक पहुंच बिंदु तक हो। अधिकांश इंटरनेट राउटर पर आप एक स्थैतिक मार्ग सेट कर सकते हैं लेकिन यह कैसे करें कि मॉडल से मॉडल में भिन्न हो। यह आपको पता लगाना है। उदाहरण के लिए आपके RasPi eth0 इंटरफ़ेस में स्थिर IP पता 192.168.50.2 है। फिर आपके राउटर पर गेटवे (अगला हॉप) 192.168.50.2, गंतव्य नेटवर्क 192.168.4.0/24 (या 192.168.4.0 नेटमास्क 255.255.255.0) है।
इंटरनेट राउटर के लिए इसका मतलब है: "सबनेट से संबंधित पैकेज 192.168.4.0/24
(एपी से गंतव्य नेटवर्क) को अगले राउटर पर मेरे सबनेट, रासपी एपी 192.168.50.2
(गेटवे) पर भेजें । यह जानता है कि कहां जाना है।"
बस।
Access एक पुल के साथ एक पहुंच बिंदु स्थापित करना
इस सेटअप के लिए उदाहरण:
RPi
wifi ┌──────bridge──────┐ wired wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
\ | / DHCP-server
(dhcp (dhcp 192.168.50.1
from router) from router)
यदि आपके पास पहले से ही डीएचसीपी सर्वर और इंटरनेट राउटर के साथ एक ईथरनेट नेटवर्क है और आप इसे वाईफाई एक्सेस प्वाइंट के साथ विस्तारित करना चाहते हैं, लेकिन समान आईपी पते के साथ तो आप एक पुल का उपयोग करते हैं। यह अक्सर एक राउटर के अपलिंक के रूप में उपयोग किया जाता है।
सेट अप
करो "जनरल सेटअप" तो नेटवर्क इंटरफेस कॉन्फ़िगर करने के लिए निम्नलिखित तीन फ़ाइलों को बनाने के। यदि आपने पिछले सेटअप में से एक का प्रयास किया है, तो आप केवल वर्तमान में /etc/systemd/network/
छोड़कर सभी फ़ाइलों को हटा सकते हैं 99-default.link
। आईपी पते उदाहरण हैं। आपको अपना खुद का उपयोग करना होगा।
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/02-br0.netdev <<EOF
[NetDev]
Name=br0
Kind=bridge
EOF
rpi ~# cat > /etc/systemd/network/04-br0_add-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Bridge=br0
EOF
rpi ~# cat > /etc/systemd/network/12-br0_up.network <<EOF
[Match]
Name=br0
[Network]
MulticastDNS=yes
DHCP=yes
# to use static IP uncomment these and comment DHCP=yes
#Address=192.168.50.60/24
#Gateway=192.168.50.1
#DNS=84.200.69.80 1.1.1.1
EOF
अब हमें पुल का उपयोग करने के लिए wpa_supplicant बताना है । हम इसकी सेवा को संशोधित करके करते हैं:
rpi ~# systemctl edit wpa_supplicant@wlan0.service
खाली संपादक में इन कथनों को डालें, उन्हें सहेजें और संपादक को छोड़ दें:
[Service]
ExecStartPre=/sbin/iw dev %i set type __ap
ExecStartPre=/bin/ip link set %i master br0
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0
ExecStopPost=-/bin/ip link set %i nomaster
ExecStopPost=-/sbin/iw dev %i set type managed
रीबूट।
बस।
विवरण
हमें wpa_supplicant बताना होगा कि इसका इंटरफ़ेस wlan0 एक पुल का गुलाम है। अन्यथा यह क्लाइंट को "गलत पासवर्ड" से जोड़ता है जिसका अर्थ है कि महत्वपूर्ण बातचीत काम नहीं करती है। जब हम wlan0 के -dbr0
लिए पुल का उपयोग करने के विकल्प के साथ / sbin / wpa_supplicant बताते हैं तो इंटरफ़ेस पहले से ही पुल का सदस्य होना चाहिए। यही हम wpa_supplicant सेवा के लिए फ़ाइल (ओवरले) में गिरावट के साथ करते हैं । खाली स्टेटमेंट ExecStart=
पुरानी प्रविष्टि को हटा देता है। अन्यथा आपके पास दो लाइनें हैं ExecStart=
और wpa_supplicant दो बार शुरू होगा। मूल ExecStart=
आप के साथ देख सकते हैं systemctl cat wpa_supplicant@wlan0.service
।
आम तौर पर आप जिस राउटर से ईथरनेट केबल से जुड़े होते हैं, उसमें डीएचसीपी सर्वर सक्षम होता है। यह पुल स्टेशनों से डीएचसीपी अनुरोधों (एक्सेस प्वाइंट से जुड़े उपकरणों) के लिए भी पारदर्शी है, इसलिए आपको आईपी पते और विकल्पों के साथ इसके इंटरफेस के कॉन्फ़िगरेशन के बारे में चिंता करने की ज़रूरत नहीं है। राउटर इसे सर्व करेगा।
भ्रमण:
लेकिन यदि राउटर में डीएचसीपी सर्वर नहीं है, तो आप रासपी पर एक सेटअप कर सकते हैं। systemd-networkd में इसके अंतर्निहित DHCP सर्वर को कॉन्फ़िगर करने के विकल्प हैं, लेकिन समस्या यह है कि systemd-networkd यह मानता है कि यह राउटर पर ही चल रहा है और यह इस मामले में सच नहीं है। यह स्टेशनों को गलत विकल्प प्रदान करेगा, विशेष रूप से राउटर विकल्प। इसे कॉन्फ़िगर करने का कोई तरीका नहीं है। इसलिए हमें इंस्टॉल करना होगाdnsmasq
इस मामले में जिसे आवश्यकतानुसार कॉन्फ़िगर किया जा सकता है। इसे स्थापित करें और इसे कॉन्फ़िगर करें (उदाहरण के लिए, अपने स्वयं के आईपी पते का उपयोग करें):
rpi ~$ sudo -Es
rpi ~# apt install dnsmasq
rpi ~# systemctl stop dnsmasq
rpi ~# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
rpi ~# cat > /etc/dnsmasq.conf <<EOF
interface=br0
dhcp-range=192.168.50.128,192.168.50.164,255.255.255.0,24h
dhcp-option=option:router,192.168.50.1
dhcp-option=option:dns-server,8.8.8.8,1.1.1.1
EOF
rpi ~# systemctl start dnsmasq
rpi ~# exit
rpi ~$
इस उदाहरण में आईपी पते 192.168.50.128 से 192.168.50.164 स्टेशनों को देने के लिए आरक्षित हैं। अन्य स्थिर आईपी पते इस पूल के बाहर एक का उपयोग करते हैं, पुल के लिए भी आईपी पता।
♦ अनुकूलन
जब आप wpa_supplicant शुरू करते हैं तो आपको ज्यादातर यह संदेश पत्रिका में मिलते हैं:
wpa_supplicant[427]: random: Cannot read from /dev/random: Resource temporarily unavailable
wpa_supplicant[427]: random: Only 12/20 bytes of strong random data available from /dev/random
wpa_supplicant[427]: random: Not enough entropy pool available for secure operations
wpa_supplicant[427]: WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
यह कोई बड़ा मुद्दा नहीं है। wpa_supplicant encrpyting कुंजी उत्पन्न करने के लिए यादृच्छिक संख्या की आवश्यकता है। यह थोड़ा धीमा किया जाता है इसलिए इसे इंतजार करना पड़ता है। सौभाग्य से RasPi के पास T rue R andom N umber G enerator (TRNG) है। हम इसका इस्तेमाल और सॉफ्टवेयर का एक टुकड़ा स्थापित करके यादृच्छिक संख्या हो रही तेजी लाने के कर सकते हैं (3) के साथ:
rpi ~$ sudo apt install rng-tools
अपडेट:
चूंकि रास्पियन स्ट्रेच 2019-04-08 को स्थापित करने की कोई आवश्यकता नहीं है rng-tools
। वे डिफ़ॉल्ट रूप से स्थापित हैं।
Hooting समस्या निवारण
systemd-networkd
सेवा की स्थिति देखें:
rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status wpa_supplicant@wlan0.service
या थोड़ा और भी:
rpi ~$ journalctl --boot --pager-end
मुझे चल रहे लॉगिंग का पालन करना सहायक लगा:
rpi ~$ journalctl --boot --follow
यदि आपने फ़ाइल में कोई कमी की है तो आप परिणाम देख सकते हैं:
rpi ~$ systemctl cat wpa_supplicant@wlan0.service
एक इकाई के रनटाइम वातावरण की जांच करने के लिए आप इसे दिखा सकते हैं और उदाहरण के लिए देखो कि क्या दो ExecStart=
लाइनें हैं:
rpi ~$ systemctl show wpa_supplicant@wlan0.service
और अगर कुछ भी नहीं दूसरों की मदद आप फ़ाइल में एक बूंद के /sbin/wpa_supplicant
साथ डीबग विकल्प सक्षम कर सकते हैं -d
:
rpi ~$ sudo systemctl edit wpa_supplicant@wlan0.service
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 -d
आउटपुट जर्नल में है। इस तरह मैंने इस मुद्दे को गलत महत्वपूर्ण बातचीत के साथ पाया है।
वाई - फाई
यदि आपके पास एक्सेस प्वाइंट सेट है तो आपको इसे मोबाइल फोन से ढूंढना चाहिए। उपलब्ध नेटवर्कों को दिखाते हुए , इसे RPiNet नाम के साथ प्रस्तुत किया गया है और आप इससे जुड़ सकते हैं। RasPi पर आप कमांड का उपयोग भी कर सकते हैं:
rpi ~$ sudo iw dev wlan0 info
phy#0
Interface wlan0
ifindex 3
wdev 0x2
addr b8:27:eb:06:e8:8b
ssid RPiNet
type AP
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
जैसा कि आप देख सकते हैं कि यह एपी (एक्सेस प्वाइंट) है और यह आपको यह भी दिखाएगा कि यह किस चैनल का उपयोग कर रहा है। एक समस्या आवृत्ति में एक चैनल का अनुवाद करने के लिए हो सकती है। आवृत्ति को एक चैनल से मेल खाना चाहिए। आप WLAN चैनलों की सूची के लिए (2) देख सकते हैं। उदाहरण के लिए आपको 5.1 गीगाहर्ट्ज बैंड पर चैनल 36 का उपयोग करना frequency=5180
है /etc/wpa_supplicant\wpa_supplicant.conf
। लेकिन आपको यकीन होना चाहिए कि आपकी वाईफाई 5.1 गीगाहर्ट्ज बैंड को सपोर्ट करती है। आप के साथ जाँच कर सकते हैं sudo iw phy
। यह आपको जानकारी का एक गुच्छा देगा। इसमें 5000 मेगाहर्ट्ज से ऊपर समर्थित आवृत्तियाँ भी होनी चाहिए। यदि आप केवल 24xx मेगाहर्ट्ज की आवृत्तियों को देखते हैं तो निश्चित रूप से आप केवल इसका उपयोग कर सकते हैं।
एक और बिंदु यादृच्छिक संख्या हो सकता है। सुरक्षित कनेक्शन के लिए कुंजी एन्क्रिप्ट करने के लिए wpa_supplicant को यादृच्छिक संख्या की आवश्यकता होती है। रास्पबेरी पाई पर यह उत्पन्न करना बहुत धीमा है। यदि यह एन्क्रिप्ट करने वाली कुंजी उत्पन्न करने के लिए पर्याप्त एन्ट्रापी नहीं है तो wpa_supplicant प्रमाणीकरण को अस्वीकार कर देगा। आप देख सकते हैं cat /proc/sys/kernel/random/entropy_avail
कि कितने एंट्रोपी उपलब्ध हैं। यह त्वरित पर्याप्त काम करने के लिए> 1000 होना चाहिए। इसे गति देने के लिए, rng-tools
डिफ़ॉल्ट रूप से इंस्टॉल किए जाते हैं। अधिक जानकारी के लिए ऑप्टिमाइज़ करने वाले अनुभाग को देखें।
संदर्भ:
[1] Howto विस्थापित गतिशील विफलता के साथ systemd-networkd नेटवर्किंग से
[2] WLAN चैनलों की सूची
[3] RNG उपकरण