Access Bir erişim noktası kurma ━━━
Ethernet portu eth0 ile birlikte bir erişim noktasından bahsediyoruz .
Başka bir wifi ağına (wlan tekrarlayıcı) wlan0 istemci bağlantısı ile birlikte bir erişim noktası istiyorsanız , Erişim noktasına köprü ile isteğe bağlı olarak WiFi yönlendirici / tekrarlayıcı olarak bakın .
Raspbian Stretch'i ek bir yazılım yüklemeden bir wifi erişim noktası olarak yapılandırmak mümkündür . Gerekli tüm bileşenler mevcuttur: ağ, DHCP sunucusu ve köprüleme systemd-networkd ile birlikte gelir ve wifi wpa_supplicant ile kurulabilir . Eth0 ve wlan0 iki arayüzünün bağlanması , yönlendirme veya köprüleme ile yapılabilir. Önce hızlı kurulum ayarları ve daha sonra detaylar. Önce systemd-networkd'ye geçmeliyiz .
2020-01-18'de güncellenen bir Raspberry Pi 4B'de Raspbian Buster Lite 2019-09-26 ile test edildi .
Güncellemeler ile yapıldı sudo apt update && sudo apt full-upgrade && sudo reboot
.
Burada önceki Raspbian sürümleri için son test edilmiş revizyonu bulabilirsiniz .
♦ Genel kurulum
Systemd-networkd'ye geç
Ayrıntılı bilgi için (1) ve Systemd-networkd ile ad çözümlemesi nasıl yapılandırılır konusuna bakın . Burada sadece kısaca. Şu komutları yürütün:
# 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'ı erişim noktası olarak yapılandırın
Yapılandırmak için wpa_supplicant erişim noktası olarak için ayarlarla bu dosya oluşturmak country=
, ssid=
, psk=
ve belki frequency=
. 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):
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
Genel kurulum tamamlandı. Geri dön.
♦ Bağımsız erişim noktası kurma
Bu kurulum için örnek:
wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
\ /
(dhcp) 192.168.4.1
Do "Genel kurulum" sonra yapılandırmak için aşağıdaki dosya oluşturmak wlan0 . Sadece erişim noktamız var. Yapılandırılmış bir ethernet cihazı yok.
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
EOF
Bunu istiyorsanız yeniden başlatın.
Bu kadar.
Aksi takdirde, şu anda yeniden başlatmaya gerek yok.
♦ Yönlendirme olmadan bir erişim noktası kurma ve eth0 ile
Bu kurulum için örnek:
|
wifi | wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / | \ /
(dhcp) 192.168.4.1 | (dhcp) 192.168.50.1
Kurmak
Do "bağımsız bir erişim noktası kurma" sonra yapılandırmak için aşağıdaki dosya oluşturmak 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
Yeniden Başlatma.
Bu kadar.
ayrıntılar
Eth0 arayüzü internet yönlendiricisine bir ethernet kablosuyla bağlanır ve internet yönlendiricisinden DHCP ile yapılandırılmasını sağlar. Örneğin Address=192.168.50.2
yerine statik bir IP adresi vermek sorun değil DHCP=yes
.
Yönlendirme olmadan cep telefonu ile internete giremezsiniz. Güncellemeler veya benzeri bir şey almak için RPi'nin içinden girebilirsiniz.
♦ NAT ile bir erişim noktası ve eth0 ile kurulum (önerilir)
Bu kurulum için örnek:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \
(dhcp) 192.168.4.1 (dhcp)
Kurmak
Do "Genel kurulum" sonra yapılandırmak için aşağıdaki dosyaları oluşturmak wlan0 ve eth0 . Önceki kurulumlardan birini denediyseniz, iki dosyanın üzerine yazabilirsiniz. Erişim noktası için yönlendiriciden farklı bir alt ağ kullandığınızdan emin olun. Bu örnekteki yönlendirici 192.168.4.0/24 alt ağını kullanmaz. Başka bir alt ağa ihtiyacınız varsa Adres satırını değiştirin, örn 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
Yeniden Başlatma.
Bu kadar.
ayrıntılar
İnternet yönlendiricisine erişiminiz yoksa, tüm paketlerin RasPi AP'nizden geldiğini söylemek için NAT (ağ adresi çevirisi) ile taklit edebilirsiniz. Ancak bu temiz bir yönlendirme değildir ve sınırlamaları vardır. Yönlendiricinin alt ağındaki istemciler wifi üzerindeki istemcilere bağlanamıyor. Ancak çoğu durumda bu gerekli değildir, bu nedenle kurulumu basitleştirdiği için bu kurulum önerilir. Yönlendirici ağından wifi istemcilerine bağlanmanız gerekiyorsa, bir sonraki bölümde açıklandığı gibi tam yönlendirmeyi kullanmanız gerekir.
♦ Erişim noktası ve eth0 ile yönlendirme
Bu kurulum için örnek:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \ /
(dhcp) 192.168.4.1 192.168.50.2 192.168.50.1
Kurmak
Do "Genel kurulum" sonra yapılandırmak için aşağıdaki dosyaları oluşturmak wlan0 ve eth0 . Önceki kurulumlardan birini denediyseniz, iki dosyanın üzerine yazabilirsiniz. Erişim noktası ve yönlendirici ağı için farklı alt ağlar kullandığınızdan emin olun. Statik ip adresleri kullanmalıyız çünkü ağ geçidi olarak kullanmalıyız.
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
Yeniden Başlatma.
Yönlendirmenin tam olarak çalışmasını sağlamak için internet yönlendiricinizde statik bir rota ayarlamanız gerekir, böylece RasPi üzerinden wifi ile erişim noktasına bağlı istemcilere geri gelen paketler için rota bulabilir. Çoğu internet yönlendiricisinde statik bir rota ayarlayabilirsiniz, ancak bunun nasıl yapılacağı modele göre değişir. Bunu bulmak size kalmış. Örneğin RasPi eth0 arayüzünüzün 192.168.50.2 statik ip adresine sahiptir. Ardından yönlendiricinizde ağ geçidi (sonraki atlama) 192.168.50.2, hedef ağ 192.168.4.0/24 (veya 192.168.4.0 netmask 255.255.255.0).
İnternet yönlendiricisi için şu anlama gelir: "alt ağa ait tüm paketleri 192.168.4.0/24
(AP'den hedef ağ) alt ağımdaki bir sonraki yönlendiriciye, RasPi AP'ye 192.168.50.2
(ağ geçidi) gönder. Nereye devam edeceğini bilir."
Bu kadar.
♦ Köprü ile erişim noktası kurma
Bu kurulum için örnek:
RPi
wifi ┌──────bridge──────┐ wired wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
\ | / DHCP-server
(dhcp (dhcp 192.168.50.1
from router) from router)
Zaten DHCP sunucusu ve internet yönlendiricisi olan bir ethernet ağınız varsa ve bir wifi erişim noktasıyla ancak aynı ip adresleriyle genişletmek istiyorsanız, bir köprü kullanırsınız. Bu genellikle bir yönlendiriciye bir bağlantı olarak kullanılır.
Kurmak
Do "Genel kurulum" ardından ağ arayüzleri yapılandırmak için aşağıdaki üç dosya oluşturun. Önceki kurulumlardan birini denediyseniz, varsa /etc/systemd/network/
dışındaki tüm dosyaları silebilirsiniz 99-default.link
. IP adresleri örnektir. Kendinizi kullanmalısınız.
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
Şimdi wpa_supplicant'a bir köprü kullanmasını söylemeliyiz . Hizmetini şu şekilde değiştirerek yapıyoruz:
rpi ~# systemctl edit wpa_supplicant@wlan0.service
Boş düzenleyiciye bu ifadeleri ekleyin, kaydedin ve düzenleyiciden çıkın:
[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
Yeniden Başlatma.
Bu kadar.
ayrıntılar
Wpa_supplicant'a wlan0 arayüzünün köprünün kölesi olduğunu söylemeliyiz . Aksi takdirde "yanlış şifre" ile istemci bağlantılarını reddedecek anahtar müzakere çalışmıyor demektir. Biz anlatınca / sbin / wpa_supplicant seçeneğiyle -dbr0
için bir köprü kullanmak wlan0 sonra arayüz zaten köprünün bir üyesi olmalıdır. Wpa_supplicant hizmeti için dosyadaki bırakma (kaplama) ile bunu yaparız . Boş deyim ExecStart=
eski girişi siler. Aksi takdirde iki satırınız olur ExecStart=
ve wpa_supplicant iki kez başlar. İle ExecStart=
görüntüleyebileceğiniz orijinal systemctl cat wpa_supplicant@wlan0.service
.
Normalde ethernet kablosuyla bağlı olduğunuz yönlendiricide bir DHCP sunucusu etkinleştirilir. Köprü ayrıca istasyonlardan (erişim noktasına bağlı cihazlar) DHCP istekleri için şeffaftır, bu nedenle IP adresleri ve seçenekleriyle arabirimlerinin yapılandırılması konusunda endişelenmenize gerek yoktur. Yönlendirici buna hizmet edecektir.
excursus:
Ancak yönlendiricinin bir DHCP sunucusu yoksa, RasPi'de bir tane kurabilirsiniz. systemd-networkd , yerleşik DHCP sunucusunu yapılandırma seçeneklerine sahiptir, ancak sorun şu ki systemd-networkd , yönlendiricinin kendisinde çalıştığını varsayar ve bu durumda bu doğru değildir. İstasyonlara, özellikle de yönlendirici seçeneğine yanlış seçenekler sunacaktır . Yapılandırmanın bir yolu yok. Bu yüzden yüklemeliyizdnsmasq
bu durumda gerektiği gibi yapılandırılabilir. Bunu kurun ve yapılandırın (örnek, kendi ip adreslerinizi kullanın):
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 ~$
Bu örnekte, istasyonlara vermek üzere ayrılmış 192.168.50.128 - 192.168.50.164 ip adresleri bulunmaktadır. Diğer statik ip adresleri için bu havuzun dışında bir tane kullanın, köprünün kendisi için de ip adresi.
♦ Optimizasyon
Wpa_supplicant'ı başlatırken çoğunlukla bu iletileri dergide alırsınız:
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
Bu büyük bir mesele değil. wpa_supplicant şifreleme anahtarları oluşturmak için rasgele sayılara ihtiyaç duyar. Bu biraz yavaş yapılır, bu yüzden beklemek zorunda. Neyse ki Raspi bir yapı yer alır T rue R Andom N , toprak rengi G enerator (TRNG). Bunu kullanarak bir yazılım parçası (3) yükleyerek rastgele sayılar elde etmeyi hızlandırabiliriz :
rpi ~$ sudo apt install rng-tools
Güncelleme: Raspbian Stretch 2019-04-08'den
beri yüklemeye gerek yok . Varsayılan olarak kurulurlar.
rng-tools
♦ Sorun Giderme
systemd-networkd
Bir servisin durumuna bakın:
rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status wpa_supplicant@wlan0.service
Ya da biraz daha:
rpi ~$ journalctl --boot --pager-end
Devam eden günlük kaydını takip etmeyi yararlı buldum:
rpi ~$ journalctl --boot --follow
Dosyada bir düşüş yaptıysanız sonuca bakabilirsiniz:
rpi ~$ systemctl cat wpa_supplicant@wlan0.service
Bir birimin çalışma ortamını kontrol etmek için onu gösterebilir ve örneğin iki ExecStart=
satır olup olmadığına bakabilirsiniz :
rpi ~$ systemctl show wpa_supplicant@wlan0.service
Ve başka hiçbir şey yardımcı olmazsa, hata ayıklama seçeneğini dosyadaki bir damla /sbin/wpa_supplicant
ile etkinleştirebilirsiniz -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
Çıktı dergide. Bu şekilde sorunu yanlış anahtar görüşmesi ile buldum.
kablosuz internet
Erişim noktasını ayarladıysanız, bir cep telefonu ile bulmalısınız. Kullanılabilir ağlar gösterildiğinde, RPiNet adıyla sunulur ve bu ağa bağlanabilirsiniz. RasPi'de şu komutu da kullanabilirsiniz:
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
Gördüğünüz gibi AP tipi (erişim noktası) ve aynı zamanda hangi kanalı kullandığını da gösterecek. Bir sorun, bir kanalı frekansa çevirmek olabilir. Frekans bir kanalla eşleşmelidir. WLAN kanallarının listesi için (2) 'ye bakabilirsiniz . 5.1 GHz bandında kullanım kanalına 36 Örneğin ayarlamak zorunda frequency=5180
içinde /etc/wpa_supplicant\wpa_supplicant.conf
. Ancak wifi'nizin 5.1 GHz bandını desteklediğinden emin olmalısınız. İle kontrol edebilirsiniz sudo iw phy
. Bu size bir sürü bilgi verecektir. Ayrıca 5000 MHz'in üzerinde desteklenen frekanslar içermelidir. Sadece 24xx MHz frekansları görüyorsanız elbette bunu kullanabilirsiniz.
Başka bir nokta rastgele sayılar olabilir. Güvenli bağlantılar için anahtarları şifrelemek için wpa_supplicant rastgele sayılara ihtiyaç duyar. Bunu üretmek Raspberry Pi'de çok yavaş. Şifreleme anahtarları oluşturmak için yeterli entropi yoksa wpa_supplicant kimlik doğrulamasını reddeder. cat /proc/sys/kernel/random/entropy_avail
Kaç tane entropinin mevcut olduğuna bakabilirsiniz . Yeterince hızlı çalışmak için> 1000 olmalıdır. Bunu hızlandırmak için, rng-tools
varsayılan olarak yüklenir. Daha fazla bilgi için Optimizasyon bölümüne bakın .
referanslar:
[1] Dinamik yük devretme ile ağdan sistemd-networkd'e geçiş
[2] WLAN kanallarının listesi
[3] Rng-tools