Raspberry Pi + CentOS = Wi-Fi kuumkoht (vĂ”i vaarika ruuter punases mĂŒtsis)

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).

Raspberry Pi + CentOS = Wi-Fi kuumkoht (vĂ”i vaarika ruuter punases mĂŒtsis)
(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

Projekti koduleht

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 systemd taimerid, 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).

Laadime alla aktuaalse Raspbian pildi. 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.

Nimeandmise ĂŒhtsuse probleem ja kuulus guatemalalane programmeerija 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...hostapd — see on asi, mis haldab Wi-Fi adaptereid (eriti vĂ”tab enda peale nende ĂŒhendamise virtuaalse lan «malina»), autoriseerib ja registreerib traadita kliente.

dnsmasq — 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 GKMN, 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

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster