━━━ Menyiapkan titik akses ━━━
Kita berbicara tentang titik akses bersama dengan port ethernet eth0 .
Jika Anda ingin titik akses bersama-sama dengan koneksi klien wlan0 ke jaringan wifi lain (wlan repeater) kemudian lihat Access point sebagai WiFi router / repeater, opsional dengan bridge .
Dimungkinkan untuk mengkonfigurasi Raspbian Stretch sebagai titik akses wifi tanpa menginstal perangkat lunak tambahan. Semua komponen yang diperlukan tersedia: jaringan, server DHCP dan bridging dilengkapi dengan systemd-networkd dan wifi dapat diatur dengan wpa_supplicant . Menghubungkan dua antarmuka eth0 dan wlan0 dapat dilakukan dengan routing atau bridging. Pertama di bawah ini pengaturan untuk instalasi cepat dan kemudian detailnya. Pertama kita harus beralih ke systemd-networkd .
Diuji dengan
Raspbian Buster Lite 2019-09-26 pada Raspberry Pi 4B yang diperbarui pada 2020-01-18.
Pembaruan dilakukan dengan sudo apt update && sudo apt full-upgrade && sudo reboot
.
Di sini Anda dapat menemukan revisi teruji terakhir untuk versi Raspbian sebelumnya .
♦ Pengaturan umum
Beralih ke systemd-networkd
Untuk informasi terperinci lihat (1) dan Cara mengkonfigurasi resolusi nama dengan systemd-networkd . Di sini hanya singkat. Jalankan perintah ini:
# 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
# enable systemd-networkd
rpi ~# systemctl enable systemd-networkd.service
# setup systemd-resolved
rpi ~# systemctl enable systemd-resolved.service
rpi ~# apt --autoremove purge avahi-daemon
rpi ~# apt install libnss-resolve
rpi ~# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Konfigurasikan wpa_supplicant sebagai titik akses
Untuk mengkonfigurasi wpa_supplicant sebagai titik akses membuat file ini dengan pengaturan Anda untuk country=
, ssid=
, psk=
dan mungkin frequency=
. Anda bisa menyalin dan menempel ini dalam satu blok ke baris perintah Anda yang dimulai dengan cat
dan termasuk kedua EOF (pembatas EOF tidak akan mendapatkan bagian dari file):
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
Penyiapan Umum selesai. Kembali.
♦ Mengatur titik akses yang berdiri sendiri
Contoh untuk pengaturan ini:
wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
\ /
(dhcp) 192.168.4.1
Lakukan "Pengaturan umum" kemudian buat file berikut untuk mengkonfigurasi wlan0 . Kami hanya memiliki titik akses. Tidak ada perangkat ethernet yang dikonfigurasi.
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
EOF
Jika Anda menginginkan ini maka reboot.
Itu dia.
Jika tidak, lanjutkan, tidak perlu reboot saat ini.
♦ Mengatur titik akses dan dengan eth0, tanpa routing
Contoh untuk pengaturan ini:
|
wifi | wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / | \ /
(dhcp) 192.168.4.1 | (dhcp) 192.168.50.1
Mempersiapkan
Lakukan "Mengatur titik akses yang berdiri sendiri" lalu buat file berikut untuk mengkonfigurasi 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
Mulai ulang.
Itu dia.
Detail
Antarmuka eth0 dihubungkan dengan kabel ethernet ke router internet dan mendapatkannya konfigurasi oleh DHCP dari router internet. Tidak ada masalah untuk memberikannya alamat ip statis misalnya dengan Address=192.168.50.2
bukan DHCP=yes
.
Tanpa perutean, Anda tidak dapat masuk ke internet dengan ponsel-ponsel. Anda hanya bisa memasukinya dari RPi sendiri untuk mendapatkan pembaruan atau semacamnya.
♦ Menyiapkan titik akses dan dengan eth0, dengan NAT (disarankan)
Contoh untuk pengaturan ini:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \
(dhcp) 192.168.4.1 (dhcp)
Mempersiapkan
Lakukan "Pengaturan umum" kemudian buat file-file berikut untuk mengkonfigurasi wlan0 dan eth0 . Jika Anda telah mencoba salah satu dari pengaturan sebelumnya maka Anda bisa menimpa kedua file tersebut. Pastikan Anda menggunakan subnet berbeda untuk jalur akses dari pada router. Router dalam contoh ini tidak menggunakan subnet 192.168.4.0/24. Jika Anda memerlukan subnet lain maka ubah saja baris Alamat, mis 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
Mulai ulang.
Itu dia.
Detail
Jika Anda tidak memiliki akses ke router internet Anda dapat memalsunya dengan NAT (terjemahan alamat jaringan) untuk mengatakan bahwa semua paket berasal dari RasPi AP Anda. Tapi ini bukan routing yang bersih dan memiliki keterbatasan. Klien di subnet router tidak dapat terhubung ke klien di wifi. Tetapi dalam kebanyakan kasus ini tidak diperlukan sehingga pengaturan ini direkomendasikan karena menyederhanakan pengaturan. Jika Anda perlu terhubung ke klien wifi dari jaringan router maka Anda harus menggunakan perutean penuh seperti yang dijelaskan di bagian selanjutnya.
♦ Mengatur titik akses dan dengan eth0, dengan routing
Contoh untuk pengaturan ini:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \ /
(dhcp) 192.168.4.1 192.168.50.2 192.168.50.1
Mempersiapkan
Lakukan "Pengaturan umum" kemudian buat file-file berikut untuk mengkonfigurasi wlan0 dan eth0 . Jika Anda telah mencoba salah satu dari pengaturan sebelumnya maka Anda bisa menimpa kedua file tersebut. Pastikan Anda menggunakan subnet yang berbeda untuk titik akses dan jaringan router. Kita harus menggunakan alamat ip statis karena kita harus menggunakannya sebagai gateway.
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
Mulai ulang.
Untuk mendapatkan routing yang berfungsi, Anda harus mengatur rute statis di router internet Anda sehingga dapat menemukan rute untuk paket yang datang kembali melalui Raspi ke klien yang terhubung dengan wifi ke titik akses. Pada sebagian besar router internet Anda dapat mengatur rute statis tetapi bagaimana melakukannya bervariasi dari model ke model. Terserah Anda untuk mengetahuinya. Misalnya antarmuka RasPi eth0 Anda memiliki alamat ip statis 192.168.50.2. Kemudian pada router Anda gateway (hop berikutnya) adalah 192.168.50.2, jaringan tujuan adalah 192.168.4.0/24 (atau 192.168.4.0 netmask 255.255.255.0).
Itu berarti untuk router internet: "kirim semua paket milik subnet 192.168.4.0/24
(jaringan tujuan dari AP) ke router berikutnya di subnet saya, RasPi AP 192.168.50.2
(gateway). Ia tahu ke mana harus pergi."
Itu dia.
♦ Mengatur titik akses dengan jembatan
Contoh untuk pengaturan ini:
RPi
wifi ┌──────bridge──────┐ wired wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
\ | / DHCP-server
(dhcp (dhcp 192.168.50.1
from router) from router)
Jika Anda sudah memiliki jaringan ethernet dengan DHCP server dan router internet dan Anda ingin memperluasnya dengan jalur akses wifi tetapi dengan alamat ip yang sama maka Anda menggunakan jembatan. Ini sering digunakan sebagai uplink ke router.
Mempersiapkan
Lakukan "Pengaturan umum" kemudian buat tiga file berikut untuk mengonfigurasi antarmuka jaringan. Jika Anda telah mencoba salah satu pengaturan sebelumnya maka Anda dapat menghapus semua file /etc/systemd/network/
kecuali 99-default.link
jika ada. Alamat ip adalah contoh. Anda harus menggunakan milik Anda sendiri.
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
Sekarang kita harus memberitahu wpa_supplicant untuk menggunakan jembatan. Kami melakukannya dengan memodifikasi layanannya dengan:
rpi ~# systemctl edit wpa_supplicant@wlan0.service
Di editor kosong masukkan pernyataan ini, simpan dan keluar dari editor:
[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
Mulai ulang.
Itu dia.
Detail
Kita harus memberi tahu wpa_supplicant bahwa antarmuka wlan0 adalah slave of a bridge. Kalau tidak, ia akan menolak koneksi klien dengan "kata sandi yang salah" berarti negosiasi kunci tidak berfungsi. Ketika kita memberi tahu / sbin / wpa_supplicant dengan opsi -dbr0
untuk menggunakan jembatan untuk wlan0 maka antarmuka harus sudah menjadi anggota jembatan. Itulah yang kami lakukan dengan drop in file (overlay) untuk layanan wpa_supplicant . Pernyataan kosong ExecStart=
menghapus entri lama. Kalau tidak, Anda memiliki dua baris ExecStart=
dan wpa_supplicant akan mulai dua kali. Dokumen asli ExecStart=
yang dapat Anda lihat systemctl cat wpa_supplicant@wlan0.service
.
Biasanya router Anda terhubung dengan kabel ethernet memiliki server DHCP diaktifkan. Bridge juga transparan untuk permintaan DHCP dari stasiun (perangkat yang terhubung ke titik akses) sehingga Anda tidak perlu khawatir tentang konfigurasi antarmuka dengan alamat dan opsi ip. Router akan melayani itu.
excursus:
Tetapi jika router tidak memiliki server DHCP, Anda dapat mengaturnya di RasPi. systemd-networkd memiliki opsi untuk mengkonfigurasi server DHCP bawaannya tetapi masalahnya adalah bahwa systemd-networkd menganggap itu berjalan pada router itu sendiri dan itu tidak benar dalam kasus ini. Ini akan menyajikan opsi yang salah ke stasiun, khususnya opsi router . Tidak ada cara untuk mengkonfigurasinya. Jadi kita harus menginstaldnsmasq
dalam hal ini yang dapat dikonfigurasi sesuai kebutuhan. Instal dan konfigurasikan dengan (misalnya, gunakan alamat ip Anda sendiri):
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 ~$
Dalam contoh ini adalah alamat ip 192.168.50.128 hingga 192.168.50.164 dicadangkan untuk diberikan kepada stasiun. Untuk alamat ip statis lainnya gunakan satu di luar kolam ini, juga alamat ip untuk jembatan itu sendiri.
♦ Mengoptimalkan
Saat memulai wpa_supplicant, Anda sebagian besar mendapatkan pesan ini di jurnal:
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
Itu bukan masalah besar. wpa_supplicant membutuhkan angka acak untuk menghasilkan kunci penyandian. Ini dilakukan agak lambat sehingga harus menunggu. Untungnya RasPi memiliki bangunan di T rue R andom N umber G enerator (TRNG). Kita dapat menggunakannya dan mempercepat mendapatkan nomor acak dengan menginstal perangkat lunak (3) dengan:
rpi ~$ sudo apt install rng-tools
Pembaruan:
Sejak Raspbian Stretch 2019-04-08 tidak perlu menginstal rng-tools
. Mereka diinstal secara default.
♦ Pemecahan masalah
systemd-networkd
Lihatlah status layanan:
rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status wpa_supplicant@wlan0.service
Atau bahkan lebih:
rpi ~$ journalctl --boot --pager-end
Saya merasa terbantu untuk mengikuti pembalakan yang sedang berlangsung:
rpi ~$ journalctl --boot --follow
Jika Anda telah membuat file drop-in, Anda dapat melihat hasilnya:
rpi ~$ systemctl cat wpa_supplicant@wlan0.service
Untuk memeriksa lingkungan runtime dari suatu unit Anda dapat menunjukkannya dan misalnya melihat apakah ada dua ExecStart=
baris:
rpi ~$ systemctl show wpa_supplicant@wlan0.service
Dan jika tidak ada orang lain yang membantu Anda dapat mengaktifkan opsi debug /sbin/wpa_supplicant
dengan -d
dalam setetes file:
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
Outputnya ada di jurnal. Dengan cara ini saya telah menemukan masalah dengan negosiasi kunci yang salah.
Wifi
Jika Anda sudah mengatur jalur akses Anda harus menemukannya dengan ponsel. Menampilkan jaringan yang tersedia, disajikan dengan nama RPiNet dan Anda dapat terhubung dengannya. Pada Raspi Anda juga dapat menggunakan perintah:
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
Seperti yang Anda lihat itu adalah tipe AP (titik akses) dan juga akan menunjukkan kepada Anda saluran apa yang digunakannya. Masalahnya mungkin menerjemahkan saluran ke frekuensi. Frekuensi harus cocok dengan saluran. Anda dapat melihat (2) untuk daftar saluran WLAN. Misalnya penggunaan channel 36 pada band 5.1 GHz Anda harus menetapkan frequency=5180
di /etc/wpa_supplicant\wpa_supplicant.conf
. Tetapi Anda harus yakin bahwa wifi Anda mendukung pita 5,1 GHz. Anda bisa memeriksanya sudo iw phy
. Ini akan memberi Anda banyak informasi. Itu juga harus mengandung frekuensi yang didukung di atas 5000 MHz. Jika Anda hanya melihat frekuensi 24xx MHz maka tentu saja Anda hanya dapat menggunakan ini.
Poin lainnya bisa berupa angka acak. Untuk mengenkripsi kunci untuk koneksi aman, wpa_supplicant memerlukan angka acak. Menghasilkan ini sangat lambat pada Raspberry Pi. Jika tidak memiliki cukup entropi untuk menghasilkan kunci enkripsi, wpa_supplicant akan menolak otentikasi. Anda dapat melihat dengan cat /proc/sys/kernel/random/entropy_avail
berapa banyak entropi yang tersedia. Seharusnya> 1000 untuk bekerja cukup cepat. Untuk mempercepat ini, rng-tools
diinstal secara default. Lihatlah bagian itu Mengoptimalkan untuk informasi lebih lanjut.
referensi:
[1] Cara bermigrasi dari jaringan ke systemd-networkd dengan failover dinamis
[2] Daftar saluran WLAN
[3] Rng-tools