Yanıtlar:
Raspbian Buster Lite 2020-02-13 ile 2020-04-11'de güncellenmiş bir Raspberry Pi 4B üzerinde test edildi.
Güncellemeler ile yapıldı sudo apt update && sudo apt full-upgrade && sudo reboot
.
Raspbian Stretch ile çalışmaz !
Burada Raspbian Stretch Lite için son test edilmiş revizyonu bulacaksınız .
systemd-networkd
Varsayılan yerine kullanmak dhcpcd
elbette mümkündür. Ancak her durumda anlamlı değildir.
networkd, ağ arayüzlerini yapılandırmak için küçük ve yalın bir hizmettir, çoğunlukla hotplugged ve virtualized networking içeren bir dünyada sunucu kullanım durumları için tasarlanmıştır. Yapılandırması ruh ve soyutlama düzeyinde ifupdown'a benzer, ancak köprüleri, bağları, vlanları vb. Yapılandırmak için herhangi bir ekstra pakete ihtiyacınız yoktur. Henüz WLAN'ları yönetmek için çok uygun değildir; NetworkManager bu tür Masaüstü kullanım durumları için hala çok daha uygundur. [1]
Ancak bir TV veya amplifikatör tarafından yakın duran bir raspi için ve ses veya video akışı veya kamera vb.Için 7/24 çalışmalarını yapmak systemd-networkd
iyi bir seçimdir. Ama tam bir anahtar yapmalısınız. networking
Ve / veya ile karıştırmanın bir yolu yoktur dhcpcd
. Lütfen NetworkManager'ın kutudan çıkardığı Raspbian tarafından desteklenmediğini de unutmayın.
Referans için Raspbian Buster Lite'ın yeni bir flaşlı SD Kartı kullanıyorum .
Sadece ssh ile başsız bir kuruluma dikkat edeceğim. Bunu kullanıyorsanız, yazım hatalarını iki kez kontrol edin, aksi takdirde kopuk bir bağlantıyla kaybedilirsiniz. Başsız bir kurulum istiyorsanız, SSH'ye (Güvenli Kabuk) bakın ve bölüm 3'ü izleyin. Başsız bir Raspberry Pi'de SSH'yi etkinleştirin (başka bir makinedeki SD karta dosya ekleyin) .
Eski şeyleri devre dışı bırakın. Herhangi bir hizmeti durdurmayın, yalnızca devre dışı bırakın! Bu yüzden sadece bir sonraki önyüklemede geçerli olacaktır. Nasıl yapılır sadece takip
Bu dosyayı ayarlarınızla oluşturun. Bunu, cat
hem EOF ile başlayan hem de EOF dahil olmak üzere komut satırınıza tek bir blokta kopyalayıp yapıştırabilirsiniz (EOF ayırıcısı dosyanın bir parçası olmayacaktır):
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
Bu dosyayı ayarlarınızla oluşturun:
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
Kur bu dosya ve ayarlarınıza wpa_supplicant country=
, ssid=
ve psk=
ve etkinleştirmek:
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:~ $
Yeniden başlat ve iyi şanslar ;-)
RasPi'nin yeni bir IP adresi alması mümkündür, bu nedenle ssh ile bir sonraki bağlantı için bakmanız gerekebilir .
Yukarıda açıklandığı gibi her iki arabirimin de ayarlanmış ve çalışıyor olması gerekir. Her iki arabirim de yükseldiğinde sorun değil. Çekirdek önce en düşük metriğe sahip arayüzü kullanacaktır . Burada önce ethernet arayüzü kullanılacaktır. Ancak bunun büyük bir dezavantajı var. ip -4 -brief addr
Her arayüzde görebileceğiniz gibi, kendi ip adresi vardır. Çekirdek, biri aşağı indiği için arayüzü değiştirirse, yeni kaynak ip adresini de kullanır. Bu, ssh, akış, oturum açma oturumları vb. Gibi yerleşik durumdaki TCP iletişimini keser. Değiştirilen kaynak ip adresinden yeni bir bağlantı kullanabilirsiniz, ancak eski bağlantılar takılı kaldı. Gerçekten istediğimiz bu değil.
Bu sorunun çözümü yapıştırmadır . bond0
Ayarlarını değiştirmeyen bir ara arabirim oluşturuyoruz . Kablolu ve wifi arayüzü geçecektir bond0
.
Önce tek ethernet ve wifi ağ dosyalarını devre dışı bırakın:
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~
Ardından bu dört dosyayla bağlantı kur:
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
Ama bu tüm hikaye değil. systemd-networkd , başlatmaya bağlı hizmetlere devam etmeden önce tüm arabirimlerin açık olup olmadığını kontrol eder . Bağlanma ile, asla yukarıda olduklarını göstermeyen köle arayüzlerimiz (eth0, wlan0) var. Sadece kölelerinden en az biri bağlandığında ortaya çıkan bağ arabirimi. Bu nedenle, hatalar ve önyüklemede uzun süre beklemekle kontrol başarısız olur. Bunu yönetmek için systemd-networkd-wait-online.service
. Nasıl yapılır, lütfen aşağıdaki talimatları izleyin
Bunu bitirdiyseniz, yeniden başlatma zamanı.
RasPi'nin yeni bir IP adresi alması mümkündür, bu nedenle ssh ile bir sonraki bağlantı için bakmanız gerekebilir.
Ardından yapıştırma durumunu kontrol edebilirsiniz:
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
Test yapıştırma: yukarıdaki yapıştırma durumu ile Currently Active Slave:
iradenin değişeceğini ve MII Status:
azaldığını göreceksiniz .
Başsızsanız, down
her iki arabirimi birlikte kullanmayın ;-)
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 ayarlandıktan sonra sabırlı olun. Yönlendiriciye yeniden bağlanmak ve bağlamayı yönetmek biraz zaman alabilir. Bu sefer ssh
yanıt vermeyecek.
Bağlamanın daha ayrıntılı bir incelemesi için, Ethernet üzerinden wifi'ye öncelik veren Dinamik ağ yük devretme'ye bakabilirsiniz .
referanslar:
[1] /usr/share/doc/systemd/README.Debian.gz
[2] man systemd.netdev
[3] man systemd.network
[4] https://wiki.debian.org/Bonding
[5] https://www.kernel.org/doc/Documentation/networking/bonding.txt
DNS=192.168.1.1
için /etc/systemd/network/04-eth.network
. (Statik IP ile bir kurulum kullanıyorum)…
Cevabı @Ingo'dan hazırlamak için: lütfen bağlantıyı kullanmayı düşünün
ln -s /run/systemd/resolve/stub-resolv.conf resolv.conf
yerine bağlantı /run/systemd/resolve/resolv.conf
. Bu, "tümleşik" DNS saplamasını etkinleştirir ve arabirim başına DNS sunucusu gibi, herkese açık olmayan girişlerle kendi DNS sunucularını sağlayan VPN'leri kullanırsanız önemli olabilecek şeyleri etkinleştirir.