D'r is in enoarme hoemannichte ynformaasje op it ynternet oer it meitsjen fan Wi-Fi-tagongspunten basearre op in Raspberry single-board PC. As regel betsjuttet dit it brûken fan it Raspbian-bestjoeringssysteem native to the Raspberry.
As oanhinger fan RPM-basearre systemen, koe ik dit lytse wûnder net passe en myn leafste CentOS derop net besykje.
It artikel jout ynstruksjes foar it meitsjen fan in 5GHz / AC Wi-Fi-router fan in Raspberry Pi 3 Model B+ basearre op it CentOS-bestjoeringssysteem. D'r sille ferskate standert, mar min bekende trúkjes wêze, en as bonus - in tekening foar it ferbinen fan ekstra Wi-Fi-apparatuer oan 'e Raspberry, wêrtroch it tagelyk kin operearje yn ferskate modi (2,4 + 5GHz).
(miks fan frij beskikbere ôfbyldings)
Lit ús daliks opmerke dat guon kosmyske snelheden net wurkje. Ik squeeze maksimaal 100 Mbps út myn Raspberry oer de loft, en dit beslacht de snelheid fan myn ynternetprovider. Wêrom hawwe jo sa'n trage AC nedich, as jo yn teory in heale gigabit sels op N krije kinne? As jo hawwe frege dysels dizze fraach, gean dan nei de winkel te keapjen in echte router mei acht eksterne antennes.
0. Wat jo nedich hawwe
- Eigentlik is it "framboosprodukt" sels fan kaliber: Pi 3 Model B+ (om de begeerde 5GHz-snelheden en kanalen te berikken);
- Goede microSD>= 4GB;
- Wurkstasjon mei Linux en microSD lêzer / skriuwer;
- Beskikberens fan genôch feardichheden yn Linux, it artikel is foar in trained Geek;
- Wired netwurk (eth0) ferbining tusken Raspberry en Linux, running DHCP tsjinner op it lokale netwurk en Ynternet tagong fan beide apparaten.
In lytse opmerking oer it lêste punt. "Wat kaam earst, it aai of ..." hoe kinne jo in Wi-Fi-router meitsje by it ûntbrekken fan apparatuer foar ynternet tagong? Litte wy dizze fermaaklike oefening bûten it berik fan it artikel litte en gewoan oannimme dat de Raspberry is ferbûn mei it lokale netwurk fia draad en hat tagong ta it ynternet. Yn dit gefal sille wy gjin ekstra tv en in manipulator nedich hawwe om de "raspberry" yn te stellen.
1. Ynstallearje CentOS
Op it momint fan it skriuwen fan dit artikel is de rinnende ferzje fan CentOS op it apparaat 32-bit. Earne op it World Wide Web kaam ik mieningen tsjin dat de prestaasjes fan sokke OS's op 64-bit ARM-arsjitektuer mei safolle as 20% fermindere wurde. Ik sil ferlitte dit momint sûnder kommentaar.
Download op Linux de minimale ôfbylding mei de kernel "-RaspberryPI-"en skriuw it nei microSD:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Foardat jo de ôfbylding begjinne te brûken, sille wy de SWAP-partysje derút fuortsmite, de root útwreidzje nei it heule beskikbere folume en SELinux kwytreitsje. It algoritme is ienfâldich: meitsje in kopy fan 'e root op Linux, wiskje alle partysjes fan' e microSD útsein de earste (/boot), meitsje in nije root en bring de ynhâld werom fan 'e kopy.
Foarbyld fan fereaske aksjes (swiere konsole-útfier)
# mount /dev/mmcblk0p3 /mnt
# cd /mnt
# tar cfz ~/pi.tgz . --no-selinux
# cd
# umount /mnt
# parted /dev/mmcblk0
(parted) unit s
(parted) print free
Model: SD SC16G (sd/mmc)
Disk /dev/mmcblk0: 31116288s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
63s 2047s 1985s Free Space
1 2048s 1370111s 1368064s primary fat32 boot, lba
2 1370112s 2369535s 999424s primary linux-swap(v1)
3 2369536s 5298175s 2928640s primary ext4
5298176s 31116287s 25818112s Free Space
(parted) rm 3
(parted) rm 2
(parted) print free
Model: SD SC16G (sd/mmc)
Disk /dev/mmcblk0: 31116288s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
63s 2047s 1985s Free Space
1 2048s 1370111s 1368064s primary fat32 boot, lba
1370112s 31116287s 29746176s Free Space
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext4
Start? 1370112s
End? 31116287s
(parted) set
Partition number? 2
Flag to Invert? lba
New state? on/[off]? off
(parted) print free
Model: SD SC16G (sd/mmc)
Disk /dev/mmcblk0: 31116288s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
63s 2047s 1985s Free Space
1 2048s 1370111s 1368064s primary fat32 boot, lba
2 1370112s 31116287s 29746176s primary ext4
(parted) quit
# mkfs.ext4 /dev/mmcblk0p2
mke2fs 1.44.6 (5-Mar-2019)
/dev/mmcblk0p2 contains a swap file system labelled '_swap'
Proceed anyway? (y,N) y
Discarding device blocks: done
Creating filesystem with 3718272 4k blocks and 930240 inodes
Filesystem UUID: 6a1a0694-8196-4724-a58d-edde1f189b31
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
# mount /dev/mmcblk0p2 /mnt
# tar xfz ~/pi.tgz -C /mnt --no-selinux
Nei it útpakke fan 'e ynhâld fan' e root-partysje, is it tiid om wat feroaringen oan te meitsjen.
Skeakelje SELinux yn /mnt/etc/selinux/config:
SELINUX=disabled
Bewurkje /mnt/etc/fstab, wêryn mar twa yngongen oer de partysjes litte: boot (/boot, gjin feroaringen) en root (wy feroarje de UUID-wearde, dy't fûn wurde kin troch de útfier fan it kommando blkid op Linux te bestudearjen):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Uteinlik feroarje wy de kernel-bootparameters: wy spesifisearje in nije lokaasje foar de root-partysje, skeakelje de útfier fan debuggenynformaasje út en (opsjoneel) ferbiede de kernel om IPv6-adressen op netwurkynterfaces ta te jaan:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Hjir is de ynhâld /mnt/cmdline.txt nei de folgjende foarm (ien rigel sûnder koppeltekens):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Done:
# cd
# umount /mnt
# sync
Wy feroarje de microSD yn 'e "raspberry", lansearje it en krije netwurk tagong ta it fia ssh (root / centos).
2. CentOS ynstelle
De earste trije unshakable bewegingen: passwd, yum -y update, lit herstarten.
Wy jouwe netwurkbehear fuort netwurkd:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Meitsje in triem (tegearre mei mappen) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
Wy herstarte de "raspberry" en krije opnij netwurk tagong ta it fia ssh (it IP-adres kin feroarje). Jou omtinken oan wat brûkt wurdt /etc/resolv.conf, earder makke troch Network Manager. Dêrom, yn gefal fan problemen mei oplossing, bewurkje de ynhâld. Brûke systemd-oplost Wy sille net.
Wy ferwiderje de "ûnnedige", reparearje en fersnelle it laden fan it OS:
# systemctl set-default multi-user.target
# yum remove GeoIP Network* aic* alsa* cloud-utils-growpart
cronie* dhc* firewal* initscripts iwl* kexec* logrotate
postfix rsyslog selinux-pol* teamd wpa_supplicant
Wa moat Cron en wa't it ynboude net fertart
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Skeakelje it gebrûk fan IPv6 út troch basistsjinsten (as nedich)/ etc / ssh / sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
De relevânsje fan tiid op 'e "raspberry" is in wichtich ding. Sûnt út 'e doaze d'r gjin hardware-mooglikheid is om de aktuele steat fan' e klok te bewarjen by it opnij opstarten, is syngronisaasje nedich. In hiel goede en snelle daemon foar dit is chrony - al ynstallearre en begjint automatysk. Jo kinne NTP-tsjinners feroarje nei de tichtste.
/etc/chrony.conf:
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst
Om de tiidsône yn te stellen sille wy brûke trick. Om't ús doel is om in Wi-Fi-router te meitsjen dy't wurket op 5GHz-frekwinsjes, sille wy ús foarôf tariede op ferrassingen regulator:
# yum info crda
Gearfetting: Daemon foar neilibjen fan regeljouwing foar 802.11 draadloze netwurken
Dit kweade ûntwerp, ek basearre op 'e tiidsône, "ferbiedt" it gebrûk (yn Ruslân) fan 5GHz-frekwinsjes en kanalen mei "hege" nûmers. De trúk is om in tiidsône yn te stellen sûnder de nammen fan kontininten/stêden te brûken, dat is ynstee fan:
# timedatectl set-timezone Europe/Moscow
Wy drukke op:
# timedatectl set-timezone Etc/GMT-3
En de lêste touch oan it kapsel fan it systeem:
# hostnamectl set-hostname router
/root/.bash_profile:
. . .
# User specific environment and startup programs
export PROMPT_COMMAND="vcgencmd measure_temp"
export LANG=en_US.UTF-8
export PATH=$PATH:$HOME/bin
3. CentOS Add-ons
Alles dat hjirboppe waard sein kin wurde beskôge as folsleine ynstruksjes foar it ynstallearjen fan "vanilla" CentOS op 'e Raspberry Pi. Jo moatte einigje mei in PC dy't (opnij) opstart yn minder as 10 sekonden, brûkt minder as 15 Megabyte RAM en 1.5 Gigabyte fan microSD (eins minder as 1 Gigabyte fanwege in ûnfolsleine /boot, mar litte wy earlik wêze).
Om Wi-Fi-tagongspuntsoftware op dit systeem te ynstallearjen, moatte jo de mooglikheden fan 'e standert CentOS-distribúsje wat útwreidzje. Litte wy earst de bestjoerder (firmware) fan 'e ynboude Wi-Fi-adapter opwurdearje. De thússide fan it projekt seit:
Wifi op de Raspberry 3B en 3B+
De Raspberry PI 3B/3B+ firmware-bestannen binne net tastien te fersprieden troch it CentOS Project. Jo kinne de folgjende artikels brûke om it probleem te begripen, de firmware te krijen en de wifi yn te stellen.
Wat is ferbean foar it CentOS-projekt is net ferbean foar ús foar persoanlik gebrûk. Wy ferfange de distribúsje Wi-Fi-firmware yn CentOS mei de oerienkommende fan 'e Broadcom-ûntwikkelders (dy deselde hate binêre blobs ...). Dit, benammen, lit jo AC brûke yn tagongspuntmodus.
Wi-Fi firmware upgradeFyn it apparaatmodel en aktuele firmwareferzje út:
# journalctl | grep $(basename $(readlink /sys/class/net/wlan0/device/driver))
Jan 01 04:00:03 router kernel: brcmfmac: F1 signature read @0x18000000=0x15264345
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43455-sdio.bin for chip 0x004345(17221) rev 0x000006
Jan 01 04:00:03 router kernel: usbcore: registered new interface driver brcmfmac
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Mar 1 2015 07:29:38 version 7.45.18 (r538002) FWID 01-6a2c8ad4
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 7.14.8 Compiler: 1.24.9 ClmImport: 1.24.9 Creation: 2014-09-02 03:05:33 Inc Data: 7.17.1 Inc Compiler: 1.26.11 Inc ClmImport: 1.26.11 Creation: 2015-03-01 07:22:34
Wy sjogge dat de firmware ferzje is 7.45.18 datearre 01.03.2015/XNUMX/XNUMX, en ûnthâlde de folgjende set fan nûmers: 43455 (brcmfmac43455-sdio.bin).
# wget https://downloads.raspberrypi.org/raspbian_lite_latest
# unzip -p raspbian_lite_latest > raspbian.img
# fdisk -l raspbian.img
Disk raspbian.img: 2 GiB, 2197815296 bytes, 4292608 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x17869b7d
Device Boot Start End Sectors Size Id Type
raspbian.img1 8192 532480 524289 256M c W95 FAT32 (LBA)
raspbian.img2 540672 4292607 3751936 1.8G 83 Linux
# mount -t ext4 -o loop,offset=$((540672 * 512)) raspbian.img /mnt
# cp -fv /mnt/lib/firmware/brcm/*43455* ...
'/mnt/lib/firmware/brcm/brcmfmac43455-sdio.bin' -> ...
'/mnt/lib/firmware/brcm/brcmfmac43455-sdio.clm_blob' -> ...
'/mnt/lib/firmware/brcm/brcmfmac43455-sdio.txt' -> ...
# umount /mnt
De resultearjende firmware-bestannen fan 'e Wi-Fi-adapter moatte wurde kopieare en ferfongen troch "raspberry" yn 'e map /usr/lib/firmware/brcm/
Wy starte de takomstige router opnij en glimkje tefreden:
# journalctl | grep $(basename $(readlink /sys/class/net/wlan0/device/driver))
Jan 01 04:00:03 router kernel: brcmfmac: F1 signature read @0x18000000=0x15264345
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43455-sdio.bin for chip 0x004345(17221) rev 0x000006
Jan 01 04:00:03 router kernel: usbcore: registered new interface driver brcmfmac
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Feb 27 2018 03:15:32 version 7.45.154 (r684107 CY) FWID 01-4fbe0b04
Jan 01 04:00:03 router kernel: brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 9.10.105 Compiler: 1.29.4 ClmImport: 1.36.3 Creation: 2018-03-09 18:56:28
Ferzje: 7.45.154 datearre 27.02.2018/XNUMX/XNUMX.
En fansels EPEL:
# cat > /etc/yum.repos.d/epel.repo << EOF
[epel]
name=Epel rebuild for armhfp
baseurl=https://armv7.dev.centos.org/repodir/epel-pass-1/
enabled=1
gpgcheck=0
EOF
# yum clean all
# rm -rfv /var/cache/yum
# yum update
4. Netwurk konfiguraasje en útdagings foarút
As wy hjirboppe ôfpraat hawwe, is de "raspberry" ferbûn troch "wire" oan it lokale netwurk. Lit ús der fan út dat de provider jout ynternet tagong op krekt deselde wize: it adres op it iepenbiere netwurk wurdt útjûn dynamysk troch de DHCP tsjinner (miskien mei MAC bining). Yn dit gefal, nei de definitive opset fan 'e raspberry, moatte jo gewoan de kabel fan' e provider yn 'e plug sette en jo binne dien. Autorisaasje mei help fan systemd-netwurk - it ûnderwerp fan in apart artikel en wurdt hjir net besprutsen.
Raspberry's Wi-Fi-ynterface (s) is in lokaal netwurk, en de ynboude Ethernet-adapter (eth0) is ekstern. Litte wy it lokale netwurk statysk nûmerje, bygelyks: 192.168.0.0/24. Raspberry adres: 192.168.0.1. In DHCP-tsjinner sil wurkje op it eksterne netwurk (ynternet).
Parallelle chaos (lyryske digression)Lennart Pottering hat in eigen programma gearstald systemd Heul goed. Dit systemd lanseart oare programma's sa fluch dat se, net hawwende tiid om te herstellen fan 'e slach fan' e skiedsrjochter, stroffelje en falle by it begjin sûnder sels har obstakelbaan te begjinnen.
Mar serieus, de agressive parallelisaasje fan lansearre prosessen oan it begjin fan it systemd OS is in soarte fan "ezelbrêge" foar erfarne opfolgjende LSB-spesjalisten. Gelokkich blykt it bringen fan oarder yn dizze "parallelle gaos" ienfâldich te wêzen, hoewol net altyd fanselssprekkend.
Wy meitsje twa firtuele brêge-ynterfaces mei konstante nammen: lan и wan. Wy sille de Wi-Fi-adapter(s) "ferbine" mei de earste, en de eth0 "raspberry" mei de twadde.
/etc/systemd/network/lan.netdev:
[NetDev]
Name=lan
Kind=bridge
/etc/systemd/network/lan.network:
[Match]
Name=lan
[Network]
Address=192.168.0.1/24
IPForward=yes
/etc/systemd/network/wan.netdev:
[NetDev]
Name=wan
Kind=bridge
#MACAddress=xx:xx:xx:xx:xx:xx
/etc/systemd/network/wan.network:
[Match]
Name=wan
[Network]
DHCP=ipv4
IPForward=yes
IPForward=ja elimineert de needsaak om te hingjen nei de kernel fia sysctl om routing yn te skeakeljen.
MACAadres= Litte wy kommentaar jaan en feroarje as it nedich is.
Earst wy "ferbine" eth0. Wy ûnthâlde it "uniformiteitsprobleem" en brûke allinich it MAC-adres fan dizze ynterface, dat kin wurde fûn, bygelyks, sa:
# cat /sys/class/net/eth0/address
Wy meitsje /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Wy wiskje it foarige konfiguraasjetriem eth0, start de Raspberry opnij en krije tagong ta it netwurk (it IP-adres sil nei alle gedachten feroarje):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Foar it meitsjen fan Wi-Fi tagongspunten, neat slacht in swiete pear dnsmaq + hostapd haw it noch net útfûn. Nei myn miening.
As immen it fergetten hat, dan...
Litte wy begjinne mei dnsmasq:
# yum install dnsmasq
Sjabloan /etc/resolv.conf:
nameserver 1.1.1.1
nameserver 1.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 77.88.8.8
nameserver 77.88.8.1
domain router.local
search router.local
bewurkje it nei jo smaak.
minimalistysk /etc/dnsmasq.conf:
domain-needed
bogus-priv
interface=lan
bind-dynamic
expand-hosts
domain=#
dhcp-range=192.168.0.100,192.168.0.199,255.255.255.0,24h
conf-dir=/etc/dnsmasq.d
De "magy" hjir leit yn 'e parameter binde-dynamyske, dy't de dnsmasq-daemon fertelt om te wachtsjen oant it op it systeem ferskynt ynterface=lan, en net flau fan in fit fan grutske iensumens nei it begjin.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
En as lêste, de magyske hostapd-konfiguraasjes. Ik haw gjin twifel dat immen dit artikel lêst op syk nei krekt dizze dierbere rigels.
Foardat jo hostapd ynstallearje, moatte jo it "uniformiteitsprobleem" oerwinne. De ynboude Wi-Fi-adapter wlan0 kin syn namme maklik feroarje yn wlan1 by it ferbinen fan ekstra USB Wi-Fi-apparatuer. Dêrom sille wy de ynterface-nammen op 'e folgjende manier reparearje: wy komme mei unike nammen foar de (draadloze) adapters en bine se oan MAC-adressen.
Foar de ynboude Wi-Fi-adapter, dy't noch wlan0 is:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Wy meitsje /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
No sille wy der wis fan wêze wl0 - Dit is ynboude Wi-Fi. Wy rebootje de Raspberry om der wis fan te wêzen.
Ynstallearje:
# yum install hostapd wireless-tools
Konfiguraasjetriem /etc/hostapd/hostapd.conf:
ssid=rpi
wpa_passphrase=1234567890
channel=36
country_code=US
interface=wl0
bridge=lan
driver=nl80211
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
macaddr_acl=0
hw_mode=a
wmm_enabled=1
# N
ieee80211n=1
require_ht=1
ht_capab=[MAX-AMSDU-3839][HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]
# AC
ieee80211ac=1
require_vht=1
ieee80211d=0
ieee80211h=0
vht_capab=[MAX-AMSDU-3839][SHORT-GI-80]
vht_oper_chwidth=1
vht_oper_centr_freq_seg0_idx=42
Sûnder in momint te ferjitten
# hostapd /etc/hostapd/hostapd.conf
hostapd sil begjinne yn ynteraktive modus, en syn steat útstjoere nei de konsole. As d'r gjin flaters binne, dan kinne kliïnten dy't AC-modus stypje kinne ferbine mei it tagongspunt. Om hostapd te stopjen - Ctrl-C.
Alles wat oerbliuwt is om hostapd yn te skeakeljen yn it opstarten fan it systeem. As jo it standert ding dogge (systemctl ynskeakelje hostapd), dan kinne jo nei de folgjende herstart in demon krije "yn bloed rôlje" mei de diagnoaze "ynterface wl0 net fûn". As gefolch fan "parallelle gaos" begon hostapd rapper dan de kernel de draadloze adapter fûn.
It ynternet is fol mei remedies: fan in twongen time-out foar it starten fan de daemon (ferskate minuten), nei in oare daemon dy't it uterlik fan 'e ynterface kontrolearret en it hostpad (opnij) start. De oplossingen binne frij wurkber, mar ferskriklik ûnsjoch. Wy roppe de grutte om help systemd mei syn "doelen" en "taken" en "ôfhinklikens".
Kopiearje it distribúsjetsjinstbestân nei /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
en ferminderje de ynhâld nei de folgjende foarm:
[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=sys-subsystem-net-devices-wl0.device
BindsTo=sys-subsystem-net-devices-wl0.device
[Service]
Type=forking
PIDFile=/run/hostapd.pid
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf -P /run/hostapd.pid -B
[Install]
WantedBy=sys-subsystem-net-devices-wl0.device
De magy fan it bywurke tsjinstbestân leit yn 'e dynamyske bining fan hostapd oan it nije doel - de wl0-ynterface. As de ynterface ferskynt, begjint de daemon; as it ferdwynt, stopt it. En dit is allegear online - sûnder it systeem opnij te starten. Dizze technyk sil benammen nuttich wêze as jo in USB Wi-Fi-adapter ferbine mei in Raspberry.
No kinsto:
# systemctl enable hostapd
# reboot
7. IPTABELS
"Wa???" © Ja, jo! Gjin systemd. Gjin newfangled kombinearret (yn 'e foarm firewalld), dy't úteinlik itselde ding dogge.
Lit ús de goede âlde brûke iptables, waans tsjinsten, nei it starten, netwurkregels yn 'e kernel sille laden en rêstich ôfslute sûnder bewenner te bliuwen en sûnder boarnen te konsumearjen. systemd hat in elegante IPMasquerade=, mar wy sille de adresoersetting (NAT) en firewall noch tafertrouwe oan iptables.
Ynstallearje:
# yum install iptables-services
# systemctl enable iptables ip6tables
Ik leaver de iptables-konfiguraasje op te slaan as in skript (foarbyld):
#!/bin/bash
#
# Disable IPv6
#
ip6tables --flush
ip6tables --delete-chain
ip6tables --policy INPUT DROP
ip6tables --policy FORWARD DROP
ip6tables --policy OUTPUT DROP
ip6tables-save > /etc/sysconfig/ip6tables
systemctl restart ip6tables
#
# Cleaning
#
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#
# Loopback, lan
#
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i lan -j ACCEPT
#
# Ping, Established
#
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# NAT
#
iptables -t nat -A POSTROUTING -o wan -j MASQUERADE
#
# Saving
#
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables
Wy fiere it boppesteande skript út en ferlieze de mooglikheid om nije bedrade SSH-ferbiningen te meitsjen mei de Raspberry. Dat is krekt, wy hawwe in Wi-Fi-router makke, tagong dêr't "fia it ynternet" standert ferbean is - no allinich "oer de loft". Wy ferbine de Ethernet-kabel fan 'e provider en begjinne te surfen!
8. bonus: +2,4GHz
Doe't ik de earste Raspberry-router gearstalde mei de hjirboppe beskreaune tekening, ûntduts ik in oantal gadgets yn myn húshâlding dy't, fanwegen har Wi-Fi-ûntwerpbeperkingen, de "raspberry" hielendal net koene sjen. De router opnij konfigurearje om te wurkjen yn 802.11b/g/n wie unsporting, om't de maksimale snelheid "oer de loft" yn dit gefal net mear as 40 Mbit wie, en myn favorite ynternetprovider biedt my 100 (fia kabel).
Yn feite is in oplossing foar it probleem al útfûn: in twadde Wi-Fi-ynterface dy't wurket op in frekwinsje fan 2,4 GHz, en in twadde tagongspunt. By in tichtby stall kocht ik net de earste, mar de twadde USB Wi-Fi "fluit" kaam ik tsjin. De ferkeaper waard pleage troch fragen oer de chipset, kompatibiliteit mei ARM Linux-kernels en de mooglikheid om te wurkjen yn AP-modus (hy wie de earste om te begjinnen).
Wy konfigurearje de "fluit" yn analogy mei de ynboude Wi-Fi-adapter.
Litte wy it earst omneame nei wl1:
# cat /sys/class/net/wlan0/address
b0:6e:bf:xx:xx:xx
/etc/systemd/network/wl1.link:
[Match]
MACAddress=b0:6e:bf:xx:xx:xx
[Link]
Name=wl1
Wy sille it behear fan 'e nije Wi-Fi-ynterface tafertrouwe oan in aparte hostapd-daemon, dy't sil begjinne en stopje ôfhinklik fan de oanwêzigens fan in strikt definieare "fluit" yn it systeem: wl1.
Konfiguraasjetriem /etc/hostapd/hostapd2.conf:
ssid=rpi2
wpa_passphrase=1234567890
#channel=1
#channel=6
channel=11
interface=wl1
bridge=lan
driver=nl80211
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
macaddr_acl=0
hw_mode=g
wmm_enabled=1
# N
ieee80211n=1
require_ht=1
ht_capab=[HT40][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]
De ynhâld fan dit bestân is direkt ôfhinklik fan it model fan 'e USB Wi-Fi-adapter, dus in banale kopiearje / plakke kin jo mislearje.
Kopiearje it distribúsjetsjinstbestân nei /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
en ferminderje de ynhâld nei de folgjende foarm:
[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=sys-subsystem-net-devices-wl1.device
BindsTo=sys-subsystem-net-devices-wl1.device
[Service]
Type=forking
PIDFile=/run/hostapd2.pid
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd2.conf -P /run/hostapd2.pid -B
[Install]
WantedBy=sys-subsystem-net-devices-wl1.device
Alles wat oerbliuwt is in nij eksimplaar fan hostapd ynskeakelje:
# systemctl enable hostapd2
Da's alles! Lûk de "fluit" en de "raspberry" sels, sjoch nei de draadloze netwurken om jo hinne.
En as lêste wol ik jo warskôgje oer de kwaliteit fan 'e USB Wi-Fi-adapter en stroomfoarsjenning fan' e Raspberry. Ferbûn "hot whistle" kin soms "framboos befriezen" feroarsaakje fanwege koarte termyn elektryske problemen.
Boarne: www.habr.com