Estas grandega kvanto da informoj en la Interreto pri kreado de Wi-Fi-alirpunktoj bazitaj sur Raspberry unu-estrara komputilo. Kiel regulo, ĉi tio signifas uzi la Raspbian operaciumon indiĝenan al la Raspberry.
Estante adepto de RPM-bazitaj sistemoj, mi ne povis preterpasi ĉi tiun eta miraklon kaj ne provi mian amatan CentOS pri ĝi.
La artikolo provizas instrukciojn por fari 5GHz/AC Wi-Fi-enkursigilon de Raspberry Pi 3 Model B+ bazita sur la mastruma sistemo CentOS. Estos pluraj normaj sed malmulte konataj lertaĵoj, kaj kiel gratifiko - desegnaĵo por konekti aldonan Wifi-ekipaĵon al Raspberry, permesante al ĝi funkcii samtempe en pluraj reĝimoj (2,4+5GHz).
(miksaĵo de libere haveblaj bildoj)
Ni tuj rimarku, ke iuj kosmaj rapidoj ne funkcios. Mi elpremas maksimume 100 Mbps el mia Raspberry super la aero, kaj ĉi tio kovras la rapidecon de mia interreta provizanto. Kial vi bezonas tiel malviglan AC, se teorie oni povas ricevi duonan gigabiton eĉ ĉe N? Se vi faris al vi ĉi tiun demandon, tiam iru al la vendejo por aĉeti veran enkursigilon kun ok eksteraj antenoj.
0. Kion vi bezonos
- Efektive, la "framboprodukto" mem estas de kalibro: Pi 3 Model B+ (por atingi la aviditajn 5GHz-rapidecojn kaj kanalojn);
- Bona microSD >= 4GB;
- Laborstacio kun Linukso kaj microSD leganto/verkisto;
- Havebleco de sufiĉaj kapabloj en Linukso, la artikolo estas por trejnita Geek;
- Kablita reto (eth0) konektebleco inter Raspberry kaj Linukso, funkcianta DHCP-servilon sur la loka reto kaj interreta aliro de ambaŭ aparatoj.
Eta komento pri la lasta punkto. "Kiu unue venis, la ovo aŭ..." kiel fari Wi-Fi-enkursigilon sen iu ajn interreta alira ekipaĵo? Ni lasu ĉi tiun amuzan ekzercon ekster la amplekso de la artikolo kaj simple supozu, ke la Frambo estas konektita al la loka reto per drato kaj havas aliron al la Interreto. En ĉi tiu kazo, ni ne bezonos plian televidilon kaj manipulanton por agordi la "frambon".
1. Instalu CentOS
En la momento de verkado de ĉi tiu artikolo, la funkcianta versio de CentOS sur la aparato estas 32-bita. Ie en la Tutmonda Reto mi renkontis opiniojn, ke la agado de tiaj OS-oj sur 64-bita ARM-arkitekturo estas reduktita eĉ je 20%. Mi lasos ĉi tiun momenton sen komento.
En Linukso, elŝutu la minimuman bildon kun la kerno "-RaspberryPI-"kaj skribu ĝin al microSD:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Antaŭ ol komenci uzi la bildon, ni forigos la SWAP-diskon de ĝi, vastigos la radikon al la tuta disponebla volumeno kaj forigos SELinux. La algoritmo estas simpla: faru kopion de la radiko en Linukso, forigu ĉiujn subdiskojn de la mikroSD krom la unua (/boot), kreu novan radikon kaj redonu ĝian enhavon el la kopio.
Ekzemplo de postulataj agoj (severa konzola eligo)
# 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
Post malpakado de la enhavo de la radika sekcio, estas tempo fari kelkajn ŝanĝojn al ĝi.
Malebligu SELinux en /mnt/etc/selinux/config:
SELINUX=disabled
Redaktado /mnt/etc/fstab, lasante en ĝi nur du enskribojn pri la subdiskoj: boot (/boot, neniu ŝanĝoj) kaj root (ni ŝanĝas la UUID-valoron, kiun oni povas ekscii studante la eligon de la blkid komando en Linukso):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Fine, ni ŝanĝas la kernaj lanĉaj parametroj: ni specifas novan lokon por la radika subdisko, malŝaltas la eligon de sencimigaj informoj kaj (laŭvole) malpermesas al la kerno atribui IPv6-adresojn sur retaj interfacoj:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Jen la enhavo /mnt/cmdline.txt al la sekva formo (unu linio sen streketoj):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Farita:
# cd
# umount /mnt
# sync
Ni rearanĝas la microSD en la "frambon", lanĉas ĝin kaj ricevas retan aliron al ĝi per ssh (radiko/centos).
2. Agordi CentOS
La unuaj tri neskueblaj movadoj: pasvorto, yum-kaj ĝisdatigo, reboot.
Ni fordonas retan administradon enretaj:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Krei dosieron (kune kun dosierujoj) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
Ni rekomencas la "frambon" kaj denove ricevas retan aliron al ĝi per ssh (la IP-adreso povas ŝanĝiĝi). Atentu tion, kio estas uzata /etc/resolv.conf, kreita pli frue fare de Network Manager. Tial, en kazo de problemoj kun solvado, redaktu ĝian enhavon. Uzu sistemo-solvita ni ne faros.
Ni forigas la "nenecesan", riparas kaj akcelas la ŝarĝon de la 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
Kiu bezonas cron kaj kiu ne digestas la enkonstruitan
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Malebligu la uzon de IPv6 per bazaj servoj (se necese)/ etc / ssh / sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
La graveco de tempo sur la "frambo" estas grava afero. Ĉar el la skatolo ne ekzistas aparataro kapablo konservi la nunan staton de la horloĝo post rekomenco, sinkronigo estas necesa. Tre bona kaj rapida demono por ĉi tio estas kroniko - jam instalita kaj komenciĝas aŭtomate. Vi povas ŝanĝi NTP-servilojn al la plej proksimaj.
/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
Por agordi la horzonon ni uzos ruzo. Ĉar nia celo estas krei Wifi-enkursigilon funkciantan je 5GHz-frekvencoj, ni prepariĝos por surprizoj anticipe. reguligisto:
# yum info crda
Resumo: Reguliga plenuma demono por 802.11 sendrata retoj
Ĉi tiu malbona dezajno, ankaŭ bazita sur la horzono, "malpermesas" la uzon (en Rusio) de 5GHz-frekvencoj kaj kanaloj kun "altaj" nombroj. La lertaĵo estas agordi horzonon sen uzi la nomojn de kontinentoj/urboj, tio estas, anstataŭ:
# timedatectl set-timezone Europe/Moscow
Ni premas:
# timedatectl set-timezone Etc/GMT-3
Kaj la finaj tuŝoj al la kombitaĵo de la sistemo:
# 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 Aldonaĵoj
Ĉio, kio estis dirita supre, povas esti konsiderata kompletaj instrukcioj por instali "vanilon" CentOS sur la Raspberry Pi. Vi devus fini kun komputilo, kiu (re)ŝargas en malpli ol 10 sekundoj, uzas malpli ol 15 Megabajtojn da RAM kaj 1.5 Gigabajtojn da microSD (fakte malpli ol 1 Gigabajton pro nekompleta /boot, sed ni estu honestaj).
Por instali programon pri WiFi-alirpunkto en ĉi tiu sistemo, vi devos iomete pligrandigi la kapablojn de la norma distribuo CentOS. Antaŭ ĉio, ni ĝisdatigu la ŝoforon (firmware) de la enkonstruita WiFi-adaptilo. La hejmpaĝo de la projekto diras:
Wifi sur la Raspberry 3B kaj 3B+
La firmware-dosieroj de Raspberry PI 3B/3B+ ne rajtas esti distribuitaj de la Projekto CentOS. Vi povas uzi la sekvajn artikolojn por kompreni la problemon, akiri la firmware kaj agordi la wifi.
Kio estas malpermesita por la projekto CentOS, ne estas malpermesita por ni por persona uzo. Ni anstataŭigas la distribuan Wi-Fi-firmvaro en CentOS per la responda de la Broadcom-programistoj (tiuj samaj malamataj binaraj blobs...). Ĉi tio, precipe, permesos al vi uzi AC en alirpunktoreĝimo.
Ĝisdatigo de firmware de Wi-FiEksciu la modelon de la aparato kaj la nunan firmware-version:
# 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
Ni vidas, ke la firmware-versio estas 7.45.18 datita 01.03.2015/XNUMX/XNUMX, kaj memoras la sekvan aron da nombroj: 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
La rezultaj dosieroj de firmware de Wi-Fi-adaptilo devas esti kopiitaj kaj anstataŭigitaj per "frambo" en la dosierujon /usr/lib/firmware/brcm/
Ni rekomencas la estontan enkursigilon kaj ridetas kontente:
# 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
Versio: 7.45.154 de la 27.02.2018/XNUMX/XNUMX.
Kaj kompreneble 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. Reta agordo kaj defioj antaŭen
Kiel ni konsentis supre, la "frambo" estas konektita per "drato" al la loka reto. Ni supozu, ke la provizanto provizas interretan aliron precize sammaniere: la adreso en la publika reto estas elsendita dinamike de la DHCP-servilo (eble kun MAC-ligado). En ĉi tiu kazo, post la fina aranĝo de la frambo, vi nur bezonas "konekti" la kablon de la provizanto en ĝin kaj vi finis. Rajtigo uzante systemd-networkd - la temo de aparta artikolo kaj ne estas diskutata ĉi tie.
La Vifi-interfaco(j) de Raspberry estas loka reto, kaj la enkonstruita Ethernet-adaptilo (eth0) estas ekstera. Ni numeru la lokan reton statike, ekzemple: 192.168.0.0/24. Frambo adreso: 192.168.0.1. DHCP-servilo funkcios en la ekstera reto (Interreto).
Paralela kaoso (lirika digreso)Lennart Pottering kompilis sian propran programon sistemo Tre bona. Ĉi tio sistemo lanĉas aliajn programojn tiel rapide, ke ili, ne havante tempon por resaniĝi post la fajfilo de la arbitraciisto, stumblas kaj falas ĉe la komenco sen eĉ komenci sian obstaklokurejon.
Sed serioze, la agresema paraleligo de lanĉitaj procezoj ĉe la komenco de la systemd OS estas speco de "azena ponto" por spertaj sinsekvaj LSB-specialistoj. Feliĉe, alporti ordon al ĉi tiu "paralela kaoso" montriĝas simpla, kvankam ne ĉiam evidenta.
Ni kreas du virtualajn pontinterfacojn kun konstantaj nomoj: lan и wan. Ni "konektos" la Wi-Fi-adaptilon(j)n al la unua, kaj la eth0 "frambo" al la dua.
/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=jes forigas la bezonon sugesti al la kerno per sysctl por ebligi vojigon.
MACAdreso= Ni malkomento kaj ŝanĝu se necese.
Unue ni "konektas" eth0. Ni memoras la "unuformecan problemon" kaj uzas nur la MAC-adreson de ĉi tiu interfaco, kiu povas esti trovita, ekzemple, jene:
# cat /sys/class/net/eth0/address
Ni kreas /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Ni forigas la antaŭan agordan dosieron eth0, rekomencas la Raspberry kaj ricevas retan aliron al ĝi (la IP-adreso plej verŝajne ŝanĝos):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Por krei Wifi-alirpunktojn, nenio superas dolĉan paron da dnsmasq + hostapd ankoraŭ ne eltrovis ĝin. Miaopinie.
Se iu forgesus, tiam...
Ni komencu per dnsmasq:
# yum install dnsmasq
Ŝablona /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
redakti ĝin laŭ via plaĉo.
minimumisma /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
La "magio" ĉi tie kuŝas en la parametro bind-dinamika, kiu diras al la dnsmasq-demono atendi ĝis ĝi aperos en la sistemo interface=lan, kaj ne svenas pro atako de fiera soleco post la komenco.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
Kaj finfine, la magiaj hostapd-agordoj. Mi ne dubas, ke iu legas ĉi tiun artikolon serĉante ĝuste ĉi tiujn trezorajn liniojn.
Antaŭ ol instali hostapd, vi devas venki la "unuformecproblemon". La enkonstruita Wi-Fi-adaptilo wlan0 povas facile ŝanĝi sian nomon al wlan1 kiam li konektas aldonan USB-Wi-Fian ekipaĵon. Tial ni riparos la interfacajn nomojn jene: ni elpensos unikajn nomojn por la (sendrataj) adaptiloj kaj ligos ilin al MAC-adresoj.
Por la enkonstruita WiFi-adaptilo, kiu ankoraŭ estas wlan0:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Ni kreas /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
Nun ni estos certaj tion wl0 - Ĉi tio estas enkonstruita Wi-Fi. Ni rekomencas la Raspberry por certigi ĉi tion.
Instali:
# yum install hostapd wireless-tools
Agorda dosiero /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
Sen forgesi por momento
# hostapd /etc/hostapd/hostapd.conf
hostapd komenciĝos en interaga reĝimo, elsendante sian staton al la konzolo. Se ne estas eraroj, tiam klientoj, kiuj subtenas AC-reĝimon, povos konektiĝi al la alirpunkto. Por haltigi hostapd - Ctrl-C.
Restas nur ebligi hostapd en la starto de la sistemo. Se vi faras la norman aferon (systemctl enable hostapd), tiam post la sekva rekomenco vi povas ricevi demonon "ruliĝantan en sango" kun la diagnozo "interfaco wl0 ne trovita". Kiel rezulto de "paralela kaoso", hostapd ekis pli rapide ol la kerno trovis la sendratan adaptilon.
La Interreto estas plena de rimedoj: de malvola tempo-tempo antaŭ komenci la demonon (kelkaj minutoj), ĝis alia demono, kiu kontrolas la aspekton de la interfaco kaj (re)starigas la hostpad. La solvoj estas sufiĉe realigeblaj, sed terure malbelaj. Ni vokas la grandan por helpo sistemo kun ĝiaj "celoj" kaj "taskoj" kaj "dependecoj".
Kopiu la dissendoservodosieron al /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
kaj redukti ĝian enhavon al la sekva formo:
[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
La magio de la ĝisdatigita servodosiero kuŝas en la dinamika ligado de hostapd al la nova celo - la wl0-interfaco. Kiam la interfaco aperas, la demono komenciĝas; kiam ĝi malaperas, ĝi ĉesas. Kaj ĉi tio estas enreta - sen rekomenci la sistemon. Ĉi tiu tekniko estos speciale utila kiam vi konektas USB-Wi-Fi-adaptilon al Raspberry.
Nun vi povas:
# systemctl enable hostapd
# reboot
7. IPTABLOJ
"Kio???" © Jes, jes! Neniu sistemo. Neniuj novmodaj kombinaĵoj (en la formo fajroŝirmilo), kiuj finas farante la samon.
Ni uzu la bonan malnovan iptables, kies servoj, post komenciĝo, ŝarĝos retajn regulojn en la kernon kaj trankvile malŝaltos sen resti loĝanto kaj sen konsumi rimedojn. systemd havas eleganta IPMasquerade=, sed ni tamen konfidos la adrestradukon (NAT) kaj fajroŝirmilon al iptables.
Instali:
# yum install iptables-services
# systemctl enable iptables ip6tables
Mi preferas stoki la iptables-agordon kiel skripton (ekzemplo):
#!/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
Ni plenumas la ĉi-supran skripton kaj perdas la kapablon establi novajn kabligitajn SSH-konektojn kun la Frambo. Ĝuste, ni faris Wi-Fi-enkursigilon, al kiu aliro "per Interreto" estas malpermesita defaŭlte - nun nur "super la aero". Ni konektas la Ethernet-kablon de la provizanto kaj komencas navigi!
8. Gratifiko: +2,4GHz
Kiam mi kunvenis la unuan Raspberry-enkursigilon uzante la supre priskribitan desegnon, mi malkovris kelkajn aparatojn en mia hejmo, kiuj, pro siaj Wifi-dezajnaj limigoj, tute ne povis vidi la "frambon". Reagordi la enkursigilon por labori en 802.11b/g/n estis malsporta, ĉar la maksimuma rapido "super la aero" ĉi-kaze ne superis 40 Mbit, kaj mia plej ŝatata retprovizanto ofertas al mi 100 (per kablo).
Fakte, solvo de la problemo jam estis elpensita: dua Wi-Fi-interfaco funkcianta je ofteco de 2,4 GHz, kaj dua alirpunkto. Ĉe proksima budo mi aĉetis ne la unuan, sed la duan USB Wi-Fi "fajfilo" mi renkontis. La vendisto estis turmentita de demandoj pri la pecetaro, kongruo kun ARM Linukso-kernoj kaj la ebleco labori en AP-reĝimo (li estis la unua komenci).
Ni agordas la "fajfilon" analoge kun la enkonstruita WiFi-adaptilo.
Unue, ni renomu ĝin al 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
Ni konfidos la administradon de la nova WiFi-interfaco al aparta hostapd-demono, kiu komenciĝos kaj ĉesos depende de la ĉeesto de strikte difinita "fajfilo" en la sistemo: wl1.
Agorda dosiero /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]
La enhavo de ĉi tiu dosiero rekte dependas de la modelo de la USB Wi-Fi-adaptilo, do banala kopio/gluo eble malsukcesas vin.
Kopiu la dissendoservodosieron al /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
kaj redukti ĝian enhavon al la sekva formo:
[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
Restas nur ebligi novan ekzemplon de hostapd:
# systemctl enable hostapd2
Tio estas ĉio! Tiru la "fajfilon" kaj la "frambon" mem, rigardu la sendratajn retojn ĉirkaŭ vi.
Kaj finfine, mi volas averti vin pri la kvalito de la USB Wi-Fi-adaptilo kaj nutrado de la Raspberry. Konektita "varma fajfilo" foje povas kaŭzi "frambofrostigo" pro mallongperspektivaj elektraj problemoj.
fonto: www.habr.com