Interneten informazio ugari dago Raspberry plaka bakarreko ordenagailu batean oinarritutako Wi-Fi sarbide puntuak sortzeari buruz. Oro har, horrek Raspbian-en jatorrizko sistema eragilea erabiltzea esan nahi du.
RPMn oinarritutako sistemen atxikimendua izanik, ezin nuen mirari txiki honetatik pasatu eta ez nuen nire CentOS maitea bertan probatu.
Artikuluak CentOS sistema eragilean oinarritutako Raspberry Pi 5 Model B+ batetik 3GHz/AC Wi-Fi bideratzailea egiteko argibideak ematen ditu. Hainbat trikimailu estandar baina ezezagunak izango dira, eta bonus gisa - Wi-Fi ekipamendu osagarriak Raspberry-ra konektatzeko marrazki bat, aldi berean hainbat modutan (2,4+5GHz) funtziona dezan.
(doan eskuragarri dauden irudien nahasketa)
Kontuan izan dezagun berehala abiadura kosmiko batzuek ez dutela funtzionatuko. Gehienez 100 Mbps ateratzen ditut nire Raspberry airetik, eta honek nire Interneteko hornitzailearen abiadura estaltzen du. Zergatik behar duzu hain geldoa AC, teorian gigabit erdia lor dezakezu N-n ere? Galdera hau egin badiozu zeure buruari, zoaz dendara kanpoko zortzi antena dituen benetako bideratzaile bat erostera.
0. Zer beharko duzu
- Egia esan, "mugurdi produktua" bera kalibrekoa da: Pi 3 Model B+ (5GHz-ko abiadura eta kanal preziatua lortzeko);
- MicroSD ona >= 4GB;
- Lan-estazioa Linux eta microSD irakurgailu/idazlearekin;
- Linux-en trebetasun nahikoak eskuragarri izatea, artikulua Geek trebatu batentzat da;
- Sare kable bidezko (eth0) konexioa Raspberry eta Linuxen artean, sare lokalean DHCP zerbitzaria exekutatzen duena eta bi gailuetatik Interneterako sarbidea.
Azken puntuari buruzko iruzkin txiki bat. “Zein izan zen lehenengo, arrautza edo...” nola egin Wi-Fi bideratzaile bat Internetera sartzeko ekiporik ezean? Utz dezagun ariketa dibertigarri hau artikuluaren esparrutik kanpo eta pentsa dezagun Raspberry sare lokalera hari bidez konektatuta dagoela eta Interneterako sarbidea duela. Kasu honetan, ez dugu telebista gehigarririk eta manipulatzailerik beharko "mugurdia" konfiguratzeko.
1. Instalatu CentOS
Artikulu hau idazteko unean, CentOS-en exekutatzen ari den gailuan 32 biteko bertsioa da. Nonbait World Wide Web-en iritzia topatu nuen 64 biteko ARM arkitekturan horrelako sistema eragileen errendimendua % 20 murrizten dela. Une hau iruzkin gabe utziko dut.
Linux-en, deskargatu gutxieneko irudia nukleoarekin "-RaspberryPI-"eta idatzi microSD-ra:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Irudia erabiltzen hasi aurretik, SWAP partizioa kenduko dugu, erroa zabalduko dugu erabilgarri dagoen bolumen osora eta SELinux kenduko dugu. Algoritmoa sinplea da: egin erroaren kopia Linux-en, ezabatu microSDko partizio guztiak lehenengoa izan ezik (/boot), sortu erro berri bat eta itzuli bere edukia kopiatik.
Beharrezko ekintzen adibidea (kontsolaren irteera gogorra)
# 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
Erro partizioaren edukia deskonprimitu ondoren, aldaketa batzuk egiteko garaia da.
Desgaitu SELinux-en /mnt/etc/selinux/config:
SELINUX=disabled
Edizioa /mnt/etc/fstab, bertan partizioei buruzko bi sarrera bakarrik utziz: boot (/boot, aldaketarik gabe) eta root (UUID balioa aldatzen dugu, Linux-en blkid komandoaren irteera aztertuta aurki dezakeguna):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Azkenik, nukleoaren abiarazte-parametroak aldatzen ditugu: erro-partizioaren kokapen berri bat zehazten dugu, arazketa-informazioaren irteera desgaitzen dugu eta (aukeran) nukleoari sareko interfazeetan IPv6 helbideak esleitzea debekatzen diogu:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Hona hemen edukia /mnt/cmdline.txt forma honetara (lerro bat marrarik gabe):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Amaitu:
# cd
# umount /mnt
# sync
MicroSD berrantolatzen dugu "mugurdira", abiarazi eta sarerako sarbidea lortzen dugu ssh bidez (root/centos).
2. CentOS konfiguratzea
Lehenengo hiru mugimendu astinezinak: passwd, yum-eta eguneratzea, berrabiarazi.
Sarearen kudeaketa oparitzen dugu sarean:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Sortu fitxategi bat (direktorioekin batera) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
"Mugurdia" berrabiarazi eta berriro sarerako sarbidea lortzen dugu ssh bidez (IP helbidea alda daiteke). Erreparatu zer erabiltzen den /etc/resolv.conf, Network Manager-ek lehenago sortua. Hori dela eta, konpontzeko arazoak izanez gero, editatu bere edukia. Erabili sistemak ebatzi du ez dugu egingo.
"Alferrikakoa" kentzen dugu, sistema eragilearen karga konpontzen eta bizkortzen dugu:
# 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
Nork behar du cron eta barneratua digeritzen ez duena
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Desgaitu oinarrizko zerbitzuen IPv6 erabilera (beharrezkoa bada)/ Etc / ssh / sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
"Mugurdiaren" denboraren garrantzia gauza garrantzitsua da. Kutxatik kanpo ez dagoenez erlojuaren uneko egoera berrabiaraztean gordetzeko hardware gaitasunik, sinkronizazioa beharrezkoa da. Honetarako deabru oso ona eta azkarra da chrony - dagoeneko instalatuta eta automatikoki hasten da. NTP zerbitzariak hurbilen daudenetara alda ditzakezu.
/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
Erabiliko dugun ordu-eremua ezartzeko trikimailua. Gure helburua 5GHz-ko maiztasunetan funtzionatzen duen Wi-Fi bideratzailea sortzea denez, aldez aurretik ezustekoak prestatuko ditugu. erregulatzailea:
# yum info crda
Laburpena: 802.11 haririk gabeko sareetarako araudia betetzeko deabrua
Diseinu gaizto honek, ordu-eremuan oinarrituta ere, "debekatu" egiten du (Errusian) 5GHz-ko maiztasunak eta zenbaki "altuak" dituzten kanalak erabiltzea. Trikimailua ordu-eremu bat ezartzea da kontinenteen/hirien izenak erabili gabe, hau da, hau da:
# timedatectl set-timezone Europe/Moscow
Sakatzen dugu:
# timedatectl set-timezone Etc/GMT-3
Eta sistemaren orrazkerari azken ukituak:
# 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 gehigarriak
Goian esandako guztia Raspberry Pi-n "banilla" CentOS instalatzeko argibide osotzat har daiteke. 10 segundo baino gutxiagoan (berriro) abiarazten duen PC batekin amaitu beharko zenuke, 15 Megabyte RAM eta 1.5 Gigabyte microSD baino gutxiago erabiltzen dituena (egia esan, 1 Gigabyte baino gutxiago / abiarazte osatugabe baten ondorioz, baina zintzoak izan gaitezen).
Sistema honetan Wi-Fi sarbide-puntuaren softwarea instalatzeko, CentOS banaketa estandarraren gaitasunak apur bat zabaldu beharko dituzu. Lehenik eta behin, berritu dezagun integratutako Wi-Fi egokigailuaren kontrolatzailea (firmwarea). Proiektuaren hasierako orrialdeak dio:
Wifi Raspberry 3B eta 3B+-n
Raspberry PI 3B/3B+ firmware fitxategiak ezin ditu CentOS Proiektuak banatu. Artikulu hauek erabil ditzakezu arazoa ulertzeko, firmwarea lortzeko eta wifia konfiguratzeko.
CentOS proiekturako debekatuta dagoena ez dago guretzat erabilera pertsonalerako debekatuta. CentOS-en Wi-Fi-ren banaketaren firmwarea Broadcom-eko garatzaileei dagokienarekin ordezkatzen dugu (gorrototako bitar blob haiek...). Honek, bereziki, AC sarbide moduan erabiltzeko aukera emango dizu.
Wi-Fi firmwarearen eguneratzeaAurki itzazu gailuaren modeloa eta uneko firmwarearen bertsioa:
# 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
Firmwarearen bertsioa 7.45.18/01.03.2015/XNUMXko XNUMX dela ikusten dugu, eta honako zenbaki multzo hau gogoratzen dugu: 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
Sortutako Wi-Fi egokitzaileen firmware fitxategiak kopiatu eta "mugurdi"-rekin ordezkatu behar dira direktorioan /usr/lib/firmware/brcm/
Etorkizuneko bideratzailea berrabiarazi eta pozik irribarre egiten dugu:
# 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
Bertsioa: 7.45.154/27.02.2018/XNUMXko XNUMX.
Eta noski 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. Sarearen konfigurazioa eta etorkizuneko erronkak
Goian adostu genuen bezala, "mugurdia" "kablez" sare lokalera konektatzen da. Demagun hornitzaileak Interneterako sarbidea modu berean ematen duela: sare publikoko helbidea DHCP zerbitzariak dinamikoki igortzen du (agian MAC loturarekin). Kasu honetan, mugurdiaren azken konfigurazioa egin ondoren, hornitzailearen kablea "konektatu" besterik ez duzu behar eta listo. Baimena erabiliz systemd-networkd - aparteko artikulu baten gaia eta ez da hemen eztabaidatzen.
Raspberry-ren Wi-Fi interfazea(k) sare lokala da, eta integratutako Ethernet egokitzailea (eth0) kanpokoa da. Zenbaki dezagun sare lokala modu estatikoan, adibidez: 192.168.0.0/24. Mugurdi helbidea: 192.168.0.1. DHCP zerbitzari batek kanpoko sarean (Internet) funtzionatuko du.
Kaos paraleloa (digresio lirikoa)Lennart Pottering-ek bere programa osatu du systemd Oso ondo. Hau systemd beste programa batzuk hain azkar abiarazten ditu, ezen, epailearen txistuaren kolpetik errekuperatzeko astirik ez dutenez, irteeran estropezu egin eta erortzen dira oztopo-ibilbidea hasi ere egin gabe.
Baina serioski, systemd OS-aren hasieran abiarazitako prozesuen paralelismo oldarkorra "asto-zubi" moduko bat da LSB sekuentzialeko espezialista onduentzat. Zorionez, "kaos paralelo" horri ordena jartzea erraza suertatzen da, beti agerikoa ez den arren.
Bi zubi-interfaze birtual sortzen ditugu izen konstanteekin: lan и wan. Wi-Fi egokitzailea(k) lehenengora "konektatuko" dugu, eta eth0 "mugurdia" bigarrenera.
/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=bai sysctl bidez nukleoari iradokizunak emateko beharra kentzen du bideraketa gaitzeko.
MACHelbidea= Utzi iruzkinak eta aldatu behar izanez gero.
Lehenik eth0 "konektatzen" dugu. "Uniformetasun arazoa" gogoratzen dugu eta interfaze honen MAC helbidea soilik erabiltzen dugu, adibidez, honela aurki daitekeena:
# cat /sys/class/net/eth0/address
Guk sortzen dugu /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Aurreko eth0 konfigurazio fitxategia ezabatzen dugu, Raspberry berrabiarazi eta sarerako sarbidea lortzen dugu (IP helbidea aldatuko da ziurrenik):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Wi-Fi sarbide puntuak egiteko, ezer ez da pare goxo bat baino dnsmasq + hostapd oraindik ez dut asmatu. Nire ustez.
Norbaitek ahaztu badu, orduan...
Has gaitezen dnsmasq-ekin:
# yum install dnsmasq
Lagina /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
edita ezazu zure gustura.
minimalista /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
Hemen "magia" parametroan dago lotu-dinamikoa, dnsmasq deabruari sisteman agertu arte itxaron dezala esaten diona interfazea=lan, eta ez ahuldu hasi osteko bakardade harro baten ondorioz.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. OSTALARITZA
Eta azkenik, hostapd konfigurazio magikoak. Ez dut zalantzarik norbait artikulu hau irakurtzen ari dela, hain zuzen, lerro preziatu horien bila.
Hostapd instalatu aurretik, "uniformitate arazoa" gainditu behar duzu. Wlan0 Wi-Fi egokitzaile integratuak bere izena wlan1 izatera erraz alda dezake USB Wi-Fi ekipo osagarriak konektatzean. Hori dela eta, honela konponduko ditugu interfaze-izenak: (haririk gabeko) egokitzaileentzako izen esklusiboak sortuko ditugu eta MAC helbideetara lotuko ditugu.
Eraikitako Wi-Fi egokigailurako, oraindik wlan0 dena:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Guk sortzen dugu /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
Orain ziur egongo gara wl0 - Wi-Fi barneratua da. Raspberry berrabiarazten dugu hau ziurtatzeko.
Instalatu:
# yum install hostapd wireless-tools
Konfigurazio fitxategia /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
Une batez ahaztu gabe
# hostapd /etc/hostapd/hostapd.conf
hostapd modu interaktiboan hasiko da, bere egoera kontsolara igorriz. Akatsik ez badago, AC modua onartzen duten bezeroak sarbide puntura konektatu ahal izango dira. Hostapd gelditzeko - Ctrl-C.
Sistemaren abiaraztean hostapd gaitzea besterik ez da geratzen. Gauza estandarra egiten baduzu (systemctl enable hostapd), hurrengo berrabiarazi ondoren deabru bat "odolean biraka" lor dezakezu diagnostikoarekin "ez da wl0 interfazea aurkitu". "Kaos paraleloaren" ondorioz, hostapd kernelak haririk gabeko egokitzailea aurkitu baino azkarrago hasi zen.
Internet erremedioz beteta dago: deabrua abiarazi aurretik behartutako denbora-muga batetik (zenbait minutu), interfazearen itxura kontrolatzen duen eta ostalari-panela (berriro) abiarazten duen beste daemon batera. Irtenbideak nahiko bideragarriak dira, baina izugarri itsusiak. Handiari laguntza eske deitzen diogu systemd bere “helburuekin” eta “zereginekin” eta “menpekotasunekin”.
Kopiatu banaketa zerbitzuaren fitxategia /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
eta murriztu bere edukia forma honetara:
[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
Eguneratutako zerbitzu-fitxategiaren magia hostapd-ek helburu berriarekin duen lotura dinamikoan datza - wl0 interfazea. Interfazea agertzen denean, deabrua abiarazten da; desagertzen denean, gelditzen da. Eta hau guztia sarean dago, sistema berrabiarazi gabe. Teknika hau bereziki erabilgarria izango da USB Wi-Fi egokitzaile bat Raspberry batera konektatzean.
Orain egin dezakezu:
# systemctl enable hostapd
# reboot
7. IPTABLEAK
"Zer???" © Bai, bai! Bat ere ez systemd. Ez dago konbinazio berririk (forman firewalld), gauza bera egiten amaitzen dutenak.
Erabil dezagun zahar ona iptables, zeinen zerbitzuak, hasi ondoren, sare-arauak nukleoan kargatuko ditu eta isil-isilik itxiko dira egoiliar geratu gabe eta baliabideak kontsumitu gabe. systemd dotorea du IPMasquerade=, baina hala ere helbidearen itzulpena (NAT) eta suebakia iptablesen esku utziko ditugu.
Instalatu:
# yum install iptables-services
# systemctl enable iptables ip6tables
Nahiago dut iptables-en konfigurazioa script gisa gordetzea (adibidea):
#!/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
Goiko script-a exekutatzen dugu eta Raspberry-rekin kabledun SSH konexio berriak ezartzeko gaitasuna galtzen dugu. Hori bai, Wi-Fi bideratzaile bat egin dugu, zeinaren sarbidea "Internet bidez" lehenespenez debekatuta dago - orain "aire bidez" soilik. Hornitzailearen Ethernet kablea konektatzen dugu eta nabigatzen hasten gara!
8. Bonua: +2,4GHz
Lehen Raspberry bideratzailea goian deskribatutako marrazkia erabiliz muntatu nuenean, nire etxeko hainbat tramankulu aurkitu nituen, Wi-Fi diseinuaren mugak direla eta, "mugurdia" batere ikusi ezin zutenak. Bideratzailea birkonfiguratzea 802.11b/g/n-n funtzionatzeko ez zen kirolik egin, kasu honetan "airean" gehienezko abiadura ez baitzen 40 Mbit-a gainditzen, eta nire Interneteko hornitzaile gogokoenak 100 eskaintzen ditu (kable bidez).
Izan ere, arazoari irtenbide bat asmatua dago jada: 2,4 GHz-ko maiztasunean funtzionatzen duen bigarren Wi-Fi interfaze bat eta bigarren sarbide puntu bat. Inguruko postu batean ez nuen lehenengoa erosi, baina bigarren USB Wi-Fi "txistua" topatu nuen. Saltzailea txipset-ari, ARM Linux nukleoekin bateragarritasunari eta AP moduan lan egiteko aukerari buruzko galderengatik oinazetuta zegoen (hasi zen lehena izan zen).
"Txistua" konfiguratzen dugu integratutako Wi-Fi egokigailuarekin analogiaz.
Lehenik eta behin, izena aldatu diezaiogun 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
Wi-Fi interfaze berriaren kudeaketa hostapd daemon bereizi baten esku utziko dugu, sisteman zorrozki definitutako "txistu" baten presentziaren arabera abiarazi eta geldituko dena: wl1.
Konfigurazio fitxategia /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]
Fitxategi honen edukia USB Wi-Fi egokigailuaren ereduaren araberakoa da zuzenean, beraz, kopiatu/itsatsi hutsak huts egin dezake.
Kopiatu banaketa zerbitzuaren fitxategia /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
eta murriztu bere edukia forma honetara:
[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
Hostapd-ren instantzia berri bat gaitzea da geratzen dena:
# systemctl enable hostapd2
Hori da dena! Tira "txistua" eta "mugurdia" bera, begiratu zure inguruko haririk gabeko sareak.
Eta azkenik, Raspberry-ren USB Wi-Fi egokigailuaren eta elikadura-horniduraren kalitateaz ohartarazi nahi dizut. Konektatutako "txistu beroa" batzuetan "mugurdia izoztea" eragin dezake epe laburreko arazo elektrikoengatik.
Iturria: www.habr.com