Internets on tohutu hulk informatsiooni Wi-Fi juurdepÀÀsupunktide loomisest ĂŒheplaaniliselt Raspberry Pi arvutitel. TĂŒĂŒpiliselt eeldatakse, et kasutatakse 'malinka' jaoks mĂ”eldud operatsioonisĂŒsteemi - Raspbian.
RPM-pĂ”histe sĂŒsteemide pooldajana ei saanud ma mööda sellest vĂ€ikesest imest ja ei proovinud oma lemmik- CentOS-i sellel.
Artiklis on juhend 5GHz/AC Wi-Fi ruuteri valmistamiseks Raspberry Pi 3 Model B+ baasil operatsioonisĂŒsteemi CentOS abil. Ootavad mĂ”ned standardsed, kuid vĂ€he teada trikid ning boonuseks on joonis, kuidas ĂŒhendada 'malinkale' tĂ€iendavat Wi-Fi seadmeid, mis vĂ”imaldab tal samal ajal töötada mitmes reĆŸiimis (2,4+5GHz).

(piltide segu vabast ligipÀÀsust)
Tuleb kohe mĂ€rkida, et mingisuguseid kosmilisi kiirus ei tule. Ekstraheerin oma 'malinkast' Ă”hu kaudu maksimaalselt 100 Mbit, ja see katab minu Interneti pakkuja kiirus. Miks on vaja sellist nĂ”rk AC-d, kui isegi N-standardiga teoreetiliselt saab poole gigabiti? Kui te kĂŒsite endalt sellise kĂŒsimuse, siis minge poodi tĂ”elise ruuteri jĂ€rele, kus on kaheksa vĂ€list antenni.
0. Mida on vaja
- Ehkki 'malina' seade on: Pi 3 Model B+ (5GHz kiirus ja kanalite saavutamiseks);
- Hea kvaliteediga microSD >= 4GB;
- Tööstusjaam Linuxiga ja microSD lugemise/kirjutamise seade;
- Piisavad oskused Linuxis, artikkel - ettevalmistatud geekidele;
- Kabeldatud vĂ”rgu (eth0) ĂŒhendus Raspberry ja Linuxi vahel, töötav DHCP-server kohaliku vĂ”rgu sees ja juurdepÀÀs Internetile mĂ”lemalt seadmest.
VĂ€ike kommentaar viimasest punktist. 'Mis ilmnes esimesena, muna vĂ”i...' kuidas teha Wi-Fi ruuteril, kui mingit juurdepÀÀsupunkti Internetis ei ole? JĂ€tame selle köitva harjutuse artikli raamidest vĂ€lja ja lihtsalt eeldame, et Raspberry on kaabliga kohaliku vĂ”rgu kĂŒljes ja tal on juurdepÀÀs Internetile. Sel juhul ei ole meil vaja tĂ€iendavat telerit ja manipulaatorit 'malinka' seadistamiseks.
1. CentOS-i installimine
KĂ€esoleva artikli kirjutamise ajal on seadmel töötav versioon CentOS - 32-bitine. Kusagil globaalses veebis olen kohanud arvamusi, et selliste opsĂŒsteemide jĂ”udlus 64-bitises ARM-i arhitektuuris vĂ”ib langeda isegi kuni 20%. JĂ€tan selle punkt ilma kommentaarita.
Linuxis laadime alla minimaalse pildi tuumaga '-RaspberryPI-» ja salvestame selle microSD-le:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Enne pildi kasutamise alustamist eemaldame sellest SWAP osa, laiendame juureketast kogu saadaval olevale mahule ja vabaneme SELinuxist. Algoritm on lihtne: teeme Linuxis juure koopia, kustutame microSD-l kÔik osad peale esimese (\/boot), loome uue juure ja taastame selle sisu koopiast.
NÀide vajalikest toimingutest (toore konsooli vÀljund)
# 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
PĂ€rast juure jaotuse sisu ĂŒlespakkimist on just Ă”ige aeg sellele teatud muudatusi teha.
KĂ€ivitage SELinuxis /mnt/etc/selinux/config:
SELinuxi seadistamine
Redigeerime /mnt/etc/fstab, jÀttes sinna ainult kaks kirjet jaotuste kohta: laadimisseade (\/boot, muutmata) ja juure (muutke UUID vÀÀrtust, mille saab teada Linuxi blkid kÀsku uurides):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 \/ ext4 defaults,noatime 0 0
UUID=6938-F4F2 \/boot vfat defaults,noatime 0 0
LÔpuks muutke kernel'i kÀivitamisparameetreid: mÀÀrake uue juure asukoht, keelake tÔrkeinfo kuvamine ja (valikuliselt) keelake IPv6 aadresside mÀÀramine vÔrknÀidikutel:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Toome sisu /mnt/cmdline.txt jĂ€rgnevasse vormi (ĂŒks rida ilma reavahetusteta):
root=\/dev\/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Valmis:
# cd
# umount /mnt
# sync
Paigaldame microSD "malinasse", kĂ€ivitame ja saame sellele vĂ”rguĂŒhenduse ssh kaudu (root\/centos).
2. CentOS seadistamine
Esimesed kolm muutumatut liigutust: passwd, yum -y update, taaskÀivita.
VÔrgu haldamise anname networkd:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Loome faili (koos kataloogidega) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
TaaskĂ€ivitame "malina" ja saame taas sellele vĂ”rguĂŒhenduse ssh kaudu (IP-aadress vĂ”ib muutuda). Pange tĂ€hele, et kasutatakse /etc/resolv.conf, mille lĂ”i varem Network Manager. Seega, kui tekib probleeme resolve'iga, redigeerige selle sisu. Kasutada systemd-resolved me ei hakka.
Eemaldame "liigse", parandame ja kiirendame operatsioonisĂŒsteemi kĂ€ivitamist:
# 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
Kellele on vajalik cron ja kes ei talu sisse ehitatud , vĂ”ivad installida vajaliku. /var/log- ja vaatame lĂ€bi journalctl. Kui on vaja ĆŸurnaalihistooriat (vaikimisi salvestatakse teavet ainult sĂŒsteemi kĂ€ivitamise hetkedest):
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Keelame IPv6 kasutamise peamistes teenustes (kui on vajalik)/etc/ssh/sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
Aja Ă”iglus "malinas" â oluline asi. Kuna "karbist vĂ€lja" puudub riistvaraline vĂ”imalus sĂ€ilitada kĂ€ekellade kĂ€imasolek taaskĂ€ivitamisel, on vajalik sĂŒnkroniseerimine. VĂ€ga hea ja kiire teenus selleks on chrony â on juba paigaldatud ja kĂ€ivitatakse automaatselt. Saate muuta NTP-servereid lĂ€himatele.
/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
Kella ajavööndi seadistamise jaoks kasutame trikki. Kuna meie eesmĂ€rk on luua Wi-Fi ruuter, mis töötab 5GHz sagedustel, valmistame end ette ĂŒllatusteks regulaator:
# yum info crda
KokkuvÔte: Reguleerimise vastavuse demon 802.11 juhtmevaba vÔrgustikku
See kaval konstruktsioon, mis arvestab ka ajavööndit, âkeelabâ (Venemaal) 5GHz sageduste ja "suurte" kanalite numbrite kasutamise. Trikk seisneb ajavööndi seadistamises ilma kontinente/linna nimesid kasutamata, st selle asemel, et:
# timedatectl set-timezone Europe/Moscow
Surume sisse:
# timedatectl set-timezone Etc/GMT-3
Ja sĂŒsteemi viimistlemiseks viimased puudutused:
# hostnamectl set-hostname router
/root/.bash_profile:
. . .
# Kasutaja spetsiifiline keskkond ja kÀivitusprogrammid
export PROMPT_COMMAND="vcgencmd measure_temp"
export LANG=en_US.UTF-8
export PATH=$PATH:$HOME/bin
3. CentOS tÀiendused
KĂ”ike, millest eelnevalt rÀÀgiti, vĂ”ib pidada lĂ”plikuks juhiseks âpuhtaâ CentOS-i installimiseks Raspberry Pi-le. Te peaksite saama arvuti, mis (taas)kĂ€ivitub vĂ€hem kui 10 sekundiga, kasutab vĂ€hem kui 15 megabaiti RAM-i ja 1.5 gigabaidi microSD (realistis vĂ€hem kui 1 gigabaidist, kuna /boot ei ole tĂ€ielik, aga olgem ausad kuni lĂ”puni).
Wi-Fi juurdepÀÀsupunkti tarkvara installimiseks sellele sĂŒsteemile on vaja pisut laiendada CentOS-i tavalise jaotuse vĂ”imalusi. Esiteks âtĂ”stameâ sisseehitatud Wi-Fi adapteri draiveri (firmavĂ€rskenduse) taset. Projekte lehelt öeldakse:
Wifi Raspberry 3B ja 3B+
Raspberry PI 3B/3B+ firmavÀrskendusfailide jagamine ei ole CentOS Projekti poolt lubatud. Saate kasutada alljÀrgnevaid artikleid, et mÔista probleemi, saada firmavÀrskendust ja seadistada wifi.
Kuna CentOS projektile ei ole see lubatud, ei ole see meile isiklikuks kasutamiseks keelatud. Asendame CentOS-i jaotuse Wi-Fi firmavĂ€rskenduse sobivaga Broadcom-i arendajatelt (need sĂŒgavalt vihatud binaarsed blobidâŠ). See vĂ”imaldab kasutada AC reĆŸiimis juurdepÀÀsupunktina.
Wi-Fi firmavÀrskenduse vÀrskendamineSelgitame vÀlja seadme mudeli ja praeguse firmavÀrskenduse versiooni:
# 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
NÀeme, et firmavÀrskendusversioon on 7.45.18, kuupÀevaga 01.03.2015, ja meenutame jÀrgmiste numbrite kogumit: 43455 (brcmfmac43455-sdio.bin).
. Laiskade tĂ”enĂ€oliselt saavad pildi kirjutada microSD-le ja sealt vĂ”tta failid firmavĂ€rskenduseks. VĂ”i vĂ”ite montaaĆŸi Linuxis juurkoha pildist ja kopeerida vajalikud sealt:
# 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
Saadud Wi-Fi adapteri firmavĂ€rskenduse failid tuleb kopeerida asendamisega âmalinasseâ katalooge /usr/lib/firmware/brcm/
TaaskÀivitame tulevase ruuteri ja naeratame rahulolevalt:
# 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
Versioon: 7.45.154, kuupÀevaga 27.02.2018.
Ja muidugi 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. VÔrgukonfiguratsioon ja tulevased raskused
Nagu eelnevalt kokku leppisime, on âmalinaâ ĂŒhendatud âkaabliâ kaudu kohaliku vĂ”rgu. Oletame, et ka teenusepakkuja pakub Interneti-ĂŒhendust tĂ€pselt sama moodi: avaliku vĂ”rgu aadress mÀÀratakse dĂŒnaamiliselt DHCP serveri poolt (vĂ”ib-olla MAC-aadressiga seotud). Sel juhul, pĂ€rast âmalinaâ lĂ”plikku seadistamist, piisab, kui âĂŒhendadaâ see teenusepakkuja kaabliga ja kĂ”ik on valmis. Autoriseerimine systemd-networkd on eraldi teema ja siin ei kĂ€sitleta.
Wi-Fi liides(d) Raspberryl on kohaliku vĂ”rgu, samas kui sisseehitatud Ethernet adapter (eth0) on vĂ€lisveer. MÀÀratleme kohaliku vĂ”rgu staatiliselt, nĂ€iteks: 192.168.0.0/24. âMalinaâ aadress: 192.168.0.1. VĂ€listes vĂ”rkudes (Internetis) töötab DHCP server.
ja on kaks probleemi, mis ootavad igaĂŒht, kes tegeleb vĂ”rguliideste ja teenuste seadistamisega systemd jaotustes.
Paralleelne kaos (liriline tagasiside)Lennart Poettering koostas oma programmi systemd vÀga hÀsti. See systemd kÀivitab teisi programme nii kiiresti, et need, ei jÔua kohtuniku vilistamise tÔttu arugi saada, kukuvad startimisel ja ei saa isegi tÔkkejooksu alustamisega alustama.
Aga tĂ”siselt öeldes, agressiivne kĂ€ivitamise protsesside paralleelimine systemd-keskkonnas on teatud âeesel-sildâ kogenud jĂ€rjestikuste LSB-de jaoks. Ănneks osutub selle âparalleelse kaoseâ kordaajamine lihtsaks, kuigi mitte alati ilmseks.
Loome kaks virtuaalset silda (bridge) pĂŒsivate nimedega: lan ja wan. Esimesele âĂŒhendameâ Wi-Fi adapter(id), teisele â eth0 âmalinaâ.
/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=yes vabastab vajadusest sysctl'i kaudu tuumale marsruutimise lubamise kohta vihjata.
MACAddress= eemaldame kommentaarid ja muudame vajadusel.
Esmalt âĂŒhendameâ eth0. Peame meeles ânimeandmise ĂŒhtsuse probleemiâ ja kasutame ainult selle liidese MAC aadressi, mille teada saamiseks vĂ”ib kasutada nĂ€iteks jĂ€rgmist:
# cat /sys/class/net/eth0/address
Loome /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Kustutame varasema eth0 konfiguratsioonifaili, taaskĂ€ivitame âmalinaâ ja saame sellele vĂ”rguĂŒhenduse (IP aadress muutub tĂ”enĂ€oliselt):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5. DNSMASQ
Wi-Fi ligipunktide valmistamiseks pole paremat midagi kui magus paarike dnsmasq + hostapd . Minu arvates.
Kui keegi on unustanud, siis... â see on asi, mis haldab Wi-Fi adaptereid (eriti vĂ”tab enda peale nende ĂŒhendamise virtuaalse lan «malina»), autoriseerib ja registreerib traadita kliente.
â seadistab klientide vĂ”rgustikku: annab vĂ€lja IP-aadresse, DNS-servereid, vaikevĂ€ravaid ja muid selliseid iluasju.
Alustame dnsmasq'iga:
# yum install dnsmasq
Mall /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
redigeerime seda vastavalt oma maitsele.
Minimalistlik /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
Siin on "vĂ”lu" parameetris bind-dynamic, mis ĂŒtleb dnsmasq demonile, et ta ootaks, kuni sĂŒsteemis ilmub interface=lan, mitte ei kukuks uhkest ĂŒksildusest kokku pĂ€rast kĂ€ivitamist.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
Ja lÔpuks, maagilised hostapd konfiguratsioonid. Ma ei kahtle, et keegi loeb seda artiklit just nende ihaldatud ridade otsimiseks.
Enne hostapd installimist tuleb vĂ”idelda "ĂŒhtsuse probleemiga". Sisseehitatud Wi-Fi adapter wlan0 vĂ”ib hĂ”lpsasti muuta oma nime wlan1, kui lisate USB Wi-Fi seadme. Seega fikseeritakse liideste nimetused jĂ€rgmiselt: anname (traadita) adapteritele unikaalsed nimed ja seome need MAC-aadressidega.
Sisseehitatud Wi-Fi adapteri jaoks, mis on veel wlan0:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Loome /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
NĂŒĂŒd oleme kindlad, et wl0 â see on sisseehitatud Wi-Fi. TaaskĂ€ivitame "malina", et selles veenduda.
Installime:
# yum install hostapd wireless-tools
Konfiguratsioonifail /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
Ărgem unustagem hetkeks , muudame vajalikud parameetrid ja kontrollime neid kĂ€sitsi töövalmiduse osas:
# hostapd /etc/hostapd/hostapd.conf
hostapd kĂ€ivitub interaktiivses reĆŸiimis, edastades oma olekut konsoolile. Kui vigu ei esine, saavad AC-reĆŸiimi toetavad kliendid juba pÀÀseda juurde juurdepÀÀsupunktile. Hostapd'i peatamiseks - Ctrl-C.
JÀÀb ĂŒle lubada hostapd sĂŒsteemi automaatlaadimisse. Kui toimida standardsete meetoditega (systemctl enable hostapd), siis pĂ€rast jĂ€rgmist taaskĂ€ivitamist vĂ”ib tekkida "veres lamav" demon, kellel on diagnoos "interfÀÀsi wl0 ei leitud". Tulemuseks on see, et "paralleelse kaose" tĂ”ttu kĂ€ivitus hostapd kiiremini, kui sĂŒdamik leidis juhtmevaba adapteri.
Interneti on tĂ€is ravimeid: alates sundajast, mis seab enne deemonit (mingi minutite arvu) ja kuni teise deemonini, mis jĂ€lgib interfÀÀri ilmumist ja (uuesti) kĂ€ivitab hostapd. Lahendused on tĂ€iesti töötavad, kuid jubedad. Kutsume appi suure systemd oma "eesmĂ€rkide" ja "ĂŒlesannete" "sĂ”ltuvustega".
Kopeerime jaotuse teenuse faili /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
ja toome selle sisu jÀrgmise nÀo:
[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS autentifikaator
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
Uuendatud teenuse faili maagia seisneb hostapd dĂŒnaamilises sidumises uue eesmĂ€rgi â interfÀÀri wl0 â juurde. Kui interfÀÀr ilmub â demon kĂ€ivitatakse, kui see kaob â see peatatakse. Ja see kĂ”ik toimub veebis â ilma sĂŒsteemi taaskĂ€ivitamata. Eriti kasulik on see tehnika, kui ĂŒhendada "malin" USB Wi-Fi adapteriga.
NĂŒĂŒd saab:
# systemctl enable hostapd
# reboot
7. IPTABLES
"Mis???" © Jah-jah! Ăkski systemd. Ăkski uue aja kombain (nagu firewalld), mis lĂ”puks teeb ĂŒhte ja sama.
Kasutame vana head iptables, mille teenused pĂ€rast oma kĂ€ivitamist laadivad kernelisse vĂ”rgu reeglid ja lĂ”petavad töö rahulikult, jÀÀdes residentideks ja mitte tarbides ressursse. Systemd-l on elegantne IPMasquerade=, kuid aadresside tĂ”lkimise (NAT) ja tulemĂŒĂŒri usaldame siiski iptables'ile.
Installime:
# yum install iptables-services
# systemctl enable iptables ip6tables
Eelistab salvestada iptables'i konfiguratsiooni skriptina (nÀidis):
#!/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
KĂ€ivitame ĂŒlaltoodud skripti ja kaotame vĂ”imaluse luua uusi juhtmeid ssh-ĂŒhendusi "malinaga". KĂ”ik on Ă”ige, oleme valmistanud Wi-Fi ruuteri, millele juurdepÀÀs "internetis" on vaikimisi keelatud â nĂŒĂŒd ainult "Ă”hu kaudu". Ăhendame teenusepakkuja juhe Ethernetisse ja hakkame surfama!
8. Boonus: +2,4GHz
Kui ma kogusin oma esimese Raspberry ruuteri vastavalt ĂŒlaltoodud skeemile, avastasin, et mul on mitmeid seadmeid, mis oma konstruktiivsete piirangute tĂ”ttu ei suutnud Wi-Fi "malinat" ĂŒldse tuvastada. Ruuteri seadistamine 802.11b/g/n reĆŸiimi, et see töötaks, oleks olnud ebaaus, kuna maksimaalne kiirus "Ă”hus" ei ĂŒletanud sellisel juhul 40 Mbit, samas kui minu lemmik Interneti-teenuse pakkuja pakub mulle 100 (kaabli kaudu).
Tegelikult oli probleemile juba lahendus vĂ€lja mĂ”eldud: teine Wi-Fi liides, mis töötab sagedusel 2,4GHz, ja teine ligipÀÀsupunkt. Ostsin lĂ€himast poodist mitte esimese, vaid teise USB Wi-Fi "nipeti". MĂŒĂŒjat piinasin kĂŒsimustega kiibistikust, ĂŒhilduvusest ARM-i Linuxi tuumadega ja vĂ”imalusest töötada AP reĆŸiimis (tema kĂŒsis esimesena).
Seame "nipeti" ĂŒles nagu sisseehitatud Wi-Fi adapteri.
Esmalt â nimetame selle ĂŒmber 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
Uue Wi-Fi liidese juhtimise usaldame eraldi demonile hostapd, mis kÀivitub ja peatub sÔltuvalt kindlast mÀÀratletud "nipetist": wl1.
Konfiguratsioonifail /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]
Selle faili sisu sÔltub otseselt USB Wi-Fi adapteri mudelist, seega vÔib tavaline copy/paste teid petta.
Kopeerime jaotuse teenuse faili /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
ja toome selle sisu jÀrgmise nÀo:
[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS autentifikaator
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
JÀÀnud on aktiveerida uus hostapdi eksemplar:
# systemctl enable hostapd2
Siin see on! Liigutage "nipet" ja ise "malinat", vaadake, millised traadita vĂ”rgud ĂŒmberringi on.
Ja lĂ”petuseks tahan hoiatada USB Wi-Fi adapteri ja Raspberry toitmise kvaliteedi eest. Kuumalt ĂŒhendatud "nipet" vĂ”ib mĂ”nikord pĂ”hjustada "malina" hangumist ajutiste elektrihĂ€irete tĂ”ttu.
Allikas: habr.com
