जवाबों:
रास्पबेरी
बस्टर लाइट के साथ एक रास्पबेरी पाई 4 बी पर परीक्षण किया गया 2020-02-13 2020-04-11 को अपडेट किया गया।
के साथ किए गए अपडेट sudo apt update && sudo apt full-upgrade && sudo reboot
।
यह रास्पियन खिंचाव के साथ काम नहीं करेगा !
यहां आपको रास्पियन स्ट्रेच लाइट के लिए अंतिम परीक्षण संशोधन मिलेगा ।
systemd-networkd
डिफ़ॉल्ट के बजाय का उपयोग करना dhcpcd
संभव है। लेकिन यह सभी मामलों में सार्थक नहीं है।
networkd नेटवर्क इंटरफेस को कॉन्फ़िगर करने के लिए एक छोटी और दुबली सेवा है, जिसे ज्यादातर दुनिया में हॉटप्लग्ड और वर्चुअलाइज्ड नेटवर्किंग के साथ सर्वर उपयोग के मामलों के लिए डिज़ाइन किया गया है। इसका विन्यास आत्मा और मतिहीनता के स्तर से लेकर ifupdown तक समान है, लेकिन आपको पुलों, बांडों, वलान आदि को कॉन्फ़िगर करने के लिए किसी अतिरिक्त पैकेज की आवश्यकता नहीं है। यह अभी तक WLAN के प्रबंधन के लिए बहुत उपयुक्त नहीं है; NetworkManager अभी भी ऐसे डेस्कटॉप उपयोग के मामलों के लिए अधिक उपयुक्त है। [1]
लेकिन एक टीवी या एम्पलीफायर के पास रस्सी बिछाने और ऑडियो या वीडियो स्ट्रीमिंग के लिए या कैमरे आदि के लिए 24/7 अपना काम systemd-networkd
करना एक अच्छा विकल्प है। लेकिन आपको एक पूर्ण स्विच करना होगा। साथ networking
और / या मिश्रण करने का कोई तरीका नहीं है dhcpcd
। कृपया यह भी ध्यान दें कि NetworkManager को रास्पियन बॉक्स से बाहर का समर्थन नहीं है।
संदर्भ के लिए मैं रास्पियन बस्टर लाइट से एक ताजा चमकता हुआ एसडी कार्ड का उपयोग करता हूं ।
मैं केवल ssh के साथ एक हेडलेस इंस्टालेशन पर ध्यान दूंगा। यदि आप इसका उपयोग कर रहे हैं, तो डबल चेक टाइपोस या अन्यथा आप टूटे हुए कनेक्शन के साथ खो गए हैं। यदि आप एक हेडलेस इंस्टालेशन चाहते हैं तो SSH (सिक्योर शेल) को देखें और सेक्शन 3. फॉलो करें। SSH को एक हेडलेस रास्पबेरी पाई पर सक्षम करें (किसी अन्य मशीन पर एसडी कार्ड में फाइल जोड़ें) ।
पुराने सामान को निष्क्रिय कर दें। किसी भी सेवा को बंद न करें, केवल उन्हें अक्षम करें! इसलिए यह अगले बूट पर ही प्रभावी होगा। यह कैसे करना है बस का पालन करें
इस फाइल को अपनी सेटिंग्स के साथ बनाएं। आप केवल cat
EOF के साथ और अपनी कमांड लाइन में इसे एक ब्लॉक में कॉपी और पेस्ट कर सकते हैं जिसमें दोनों EOF (सीमांकक EOF फ़ाइल का हिस्सा नहीं मिलेगा):
pi@raspberrypi: ~$ sudo -Es # if not already done
root@raspberrypi: ~# cat >/etc/systemd/network/04-eth.network <<EOF
[Match]
Name=e*
[Network]
# to use static IP (with your settings) toggle commenting the next 8 lines.
#Address=192.168.50.60/24
#DNS=84.200.69.80 1.1.1.1
#[Route]
#Gateway=192.168.50.1
#Metric=10
DHCP=yes
[DHCP]
RouteMetric=10
EOF
इस फाइल को अपनी सेटिंग्स के साथ बनाएं:
root@raspberrypi:~ # cat >/etc/systemd/network/08-wifi.network <<EOF
[Match]
Name=wl*
[Network]
# to use static IP (with your settings) toggle commenting the next 8 lines.
#Address=192.168.50.61/24
#DNS=84.200.69.80 1.1.1.1
#[Route]
#Gateway=192.168.50.1
#Metric=20
DHCP=yes
[DHCP]
RouteMetric=20
EOF
इस फ़ाइल और अपनी सेटिंग्स के साथ wpa_supplicant सेटअप करें country=
, ssid=
और psk=
इसे सक्षम करें:
root@raspberrypi:~ # cat >/etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE
network={
ssid="TestNet"
psk="realyNotMyPassword"
key_mgmt=WPA-PSK
proto=RSN WPA
}
EOF
root@raspberrypi:~ # chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
root@raspberrypi:~ # systemctl disable wpa_supplicant.service
root@raspberrypi:~ # systemctl enable wpa_supplicant@wlan0.service
root@raspberrypi:~ # rfkill unblock 0
root@raspberrypi:~ # exit
root@raspberrypi:~ $
रिबूट और अच्छी किस्मत ;-)
यह संभव है कि RasPi को एक नया आईपी एड्रेस मिले ताकि आपको ssh के साथ अगले कनेक्शन के लिए इसे देखना पड़े ।
जैसा कि ऊपर वर्णित है, आपके पास इंटरफेस और सेटअप दोनों होना चाहिए। यह कोई समस्या नहीं है जब दोनों इंटरफेस ऊपर हैं। कर्नेल पहले सबसे कम मीट्रिक के साथ इंटरफ़ेस का उपयोग करेगा । यहां सबसे पहले ईथरनेट इंटरफेस का इस्तेमाल किया जाएगा। लेकिन इसका एक बड़ा नुकसान है। जैसा कि आप ip -4 -brief addr
प्रत्येक इंटरफ़ेस के साथ देख सकते हैं इसका स्वयं का आईपी-पता है। यदि कर्नेल इंटरफ़ेस स्विच करता है क्योंकि एक नीचे चला गया है तो यह अपने नए स्रोत आईपी-पते का भी उपयोग करता है। यह किसी भी स्थापित स्टेटफुल टीसीपी संचार, जैसे ssh, स्ट्रीमिंग, लॉगिन सत्र आदि को तोड़ देगा। आप बदले हुए स्रोत आईपी पते से एक नए कनेक्शन का उपयोग कर सकते हैं लेकिन पुराने कनेक्शन अटके हुए हैं। यह वास्तव में हम क्या चाहते हैं नहीं है।
इस समस्या का समाधान संबंध है । हम एक अंतरिम इंटरफ़ेस बनाते हैं जो bond0
इसकी सेटिंग्स को नहीं बदलता है। वायर्ड और वाईफाई इंटरफेस चालू हो जाएगा bond0
।
पहले एकल ईथरनेट और वाईफाई नेटवर्क फ़ाइलों को अक्षम करें:
pi@raspberrypi:~ $ sudo -Es
root@raspberrypi:~ # cd /etc/systemd/network/
root@raspberrypi:~ # mv 04-eth.network 04-eth.network~
root@raspberrypi:~ # mv 08-wifi.network 08-wifi.network~
फिर इन चार फाइलों के साथ सेटअप संबंध:
root@raspberrypi:~ # cat >/etc/systemd/network/02-bond0.netdev <<EOF
[NetDev]
# status: cat /proc/net/bonding/bond0
Name=bond
Kind=bond
[Bond]
Mode=active-backup
# primary slave is defined in *eth.network
MIIMonitorSec=500ms
MinLinks=1
EOF
root@raspberrypi:~ # cat >/etc/systemd/network/12-bond0-add-eth.network <<EOF
[Match]
Name=e*
[Network]
Bond=bond0
PrimarySlave=yes
EOF
root@raspberrypi:~ # cat >/etc/systemd/network/16-bond0-add-wifi.network <<EOF
[Match]
Name=wl*
[Network]
Bond=bond0
EOF
root@raspberrypi:~ # cat >/etc/systemd/network/20-bond0-up.network <<EOF
[Match]
Name=bond0
[Network]
# to use static IP (with your settings) toggle commenting the next 4 lines.
DHCP=yes
#Address=192.168.50.60/24
#Gateway=192.168.50.1
#DNS=84.200.69.80 1.1.1.1
EOF
लेकिन कहानी यहीं पर खत्म नहीं हो जाती। systemd-networkd जाँचता है कि क्या सभी इंटरफेस सेवाओं के आधार पर स्टार्टअप के साथ आगे बढ़ने से पहले हैं। बॉन्डिंग के साथ हमारे पास दास इंटरफेस (eth0, wlan0) है जो कभी संकेत नहीं देते हैं कि वे ऊपर हैं। इसका केवल बॉन्ड इंटरफ़ेस जो आता है अगर उसका कम से कम एक दास जुड़ा हुआ है। तो चेक त्रुटियों के साथ विफल हो जाएगा और बूटअप पर लंबे समय तक प्रतीक्षा करेगा। इसे प्रबंधित करने के लिए आपको modifiy a करना होगा systemd-networkd-wait-online.service
। इसे कैसे करें, कृपया निर्देशों का पालन करें
यदि वह समाप्त हो गया, तो यह रिबूट करने का समय है।
यह संभव है कि RasPi को एक नया आईपी पता प्राप्त हो, ताकि आपको ssh के साथ अगले कनेक्शन के लिए इसे देखना पड़े।
फिर आप बॉन्डिंग स्थिति देख सकते हैं:
pi@raspberrypi:~ $ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 500
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: dc:a6:32:4c:08:1b
Slave queue ID: 0
Slave Interface: wlan0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: dc:a6:32:4c:08:1c
Slave queue ID: 0
टेस्ट बॉन्डिंग: ऊपर बॉन्डिंग स्टेटस के साथ आप देखेंगे कि Currently Active Slave:
वसीयत बदल जाएगी और MII Status:
डाउन हो जाएगी।
यदि आपका सिर बेकार है, तो down
दोनों एक साथ नहीं; ;-)
pi@raspberrypi:~ $ ip addr
pi@raspberrypi:~ $ sudo ip link set eth0 down
pi@raspberrypi:~ $ sudo ip link set eth0 up
pi@raspberrypi:~ $ sudo ip link set wlan0 down
pi@raspberrypi:~ $ sudo ip link set wlan0 up
Wlan0 की स्थापना के बाद धैर्य रखें। मुझे राउटर को फिर से कनेक्ट करने और बॉन्डिंग को प्रबंधित करने में कुछ समय लग सकता है। इस बार ssh
कोई जवाब नहीं देगा।
बॉन्डिंग की अधिक गहन समीक्षा के लिए, आप डायनेमिक नेटवर्क विफलता पर एक नज़र डाल सकते हैं, ईथरनेट पर वाईफाई को प्राथमिकता दें ।
संदर्भ:
[१] /usr/share/doc/systemd/README.Debian.gz
[२] आदमी systemd.netdev
[३] आदमी systemd.network
[४] https://wiki.debian.org/B न्ing
[५] https://www.kernel.org/doc/Documentation/networking/bonding.txt
DNS=192.168.1.1
को जोड़कर समस्या को हल कर सकता था /etc/systemd/network/04-eth.network
। (मैं स्थैतिक आईपी के साथ एक सेटअप का उपयोग कर रहा हूं) ...
@Ingo से उत्तर को विस्तृत करने के लिए: कृपया लिंक का उपयोग करने पर विचार करें
ln -s /run/systemd/resolve/stub-resolv.conf resolv.conf
के लिंक के बजाय /run/systemd/resolve/resolv.conf
। यह "एकीकृत" डीएनएस स्टब को सक्षम करता है और प्रति-इंटरफ़ेस डीएनएस सर्वर जैसी चीजों को सक्षम करता है जो कि अगर आप वीपीएन का उपयोग करते हैं जो गैर-सार्वजनिक प्रविष्टियों के साथ अपने स्वयं के DNS सर्वर प्रदान करते हैं तो यह महत्वपूर्ण हो सकता है।