Raspberry Pi + CentOS = Wi-Fi leviala (või punase mütsiga vaarika ruuter)

Internetis on tohutul hulgal teavet Wi-Fi pääsupunktide loomise kohta, mis põhinevad Raspberry ühe plaadiga arvutil. Reeglina tähendab see Raspberryle omase operatsioonisüsteemi Raspbian kasutamist.

Kuna ma olen RPM-põhiste süsteemide järgija, ei saanud ma sellest väikesest imest mööda minna ja mitte proovida oma armastatud CentOS-i sellel.

Artiklis on juhised 5 GHz/AC Wi-Fi ruuteri valmistamiseks CentOS operatsioonisüsteemil põhinevast mudelist Raspberry Pi 3 Model B+. Sinna tulevad mitmed standardsed, kuid vähetuntud nipid ning boonusena joonistus lisa Wi-Fi seadmete ühendamiseks Raspberryga, mis võimaldab tal korraga töötada mitmes režiimis (2,4+5GHz).

Raspberry Pi + CentOS = Wi-Fi leviala (või punase mütsiga vaarika ruuter)
(vabalt saadaolevate piltide segu)

Pangem kohe tähele, et mõned kosmilised kiirused ei tööta. Ma pigistan oma Raspberryst õhu kaudu välja maksimaalselt 100 Mbps ja see katab minu Interneti-teenuse pakkuja kiiruse. Milleks nii loid vahelduvvoolu vaja, kui teoreetiliselt saab pool gigabitti isegi N peal? Kui olete selle küsimuse endalt küsinud, siis minge poodi, et osta ehtne kaheksa välisantenniga ruuter.

0. Mida te vajate

  • Tegelikult on “vaarikatoode” ise kaliibriga: Pi 3 Model B+ (et saavutada ihaldatud 5GHz kiirused ja kanalid);
  • Hea microSD >= 4GB;
  • Linuxi ja microSD-lugeja/kirjutajaga tööjaam;
  • Linuxis piisavate oskuste olemasolu, artikkel on koolitatud nohikule;
  • Traadiga võrgu (eth0) ühenduvus Raspberry ja Linuxi vahel, DHCP-serveri töötamine kohtvõrgus ja Interneti-juurdepääs mõlemast seadmest.

Väike kommentaar viimase punkti kohta. “Kumb oli enne, kas muna või...” kuidas teha WiFi-ruuterit Interneti-ühenduse seadmete puudumisel? Jätame selle meelelahutusliku harjutuse artikli ulatusest välja ja eeldame lihtsalt, et Raspberry on juhtme kaudu ühendatud kohalikku võrku ja tal on juurdepääs Internetile. Sel juhul ei vaja me vaarika seadistamiseks täiendavat telerit ja manipulaatorit.

1. Installige CentOS

Projekti koduleht

Selle artikli kirjutamise ajal oli seadmes töötav CentOS-i versioon 32-bitine. Kusagil veebis kohtasin arvamusi, et selliste OS-ide jõudlus 64-bitise ARM-arhitektuuriga väheneb lausa 20%. Jätan selle hetke kommentaarideta.

Linuxis laadige alla minimaalne pilt koos tuumaga "-VaarikasPI-"ja kirjutage see microSD-le:

# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz | 
  dd of=/dev/mmcblk0 bs=4M
# sync

Enne pildi kasutamist eemaldame sellelt SWAP-i partitsiooni, laiendame juurfaili kogu saadaolevale mahule ja vabaneme SELinuxist. Algoritm on lihtne: tehke Linuxis juurtest koopia, kustutage microSD-lt kõik partitsioonid, välja arvatud esimene (/boot), looge uus juur ja tagastage selle sisu koopiast.

Nõutavate toimingute näide (tõsine 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 juurpartitsiooni sisu lahtipakkimist on aeg selles mõned muudatused teha.

Keela SELinux sisse /mnt/etc/selinux/config:

SELINUX=disabled

Redigeerimine /mnt/etc/fstab, jättes sinna partitsioonide kohta ainult kaks kirjet: boot (/boot, muudatusteta) ja root (muudame UUID väärtust, mille saab teada Linuxis käsu blkid väljundit uurides):

UUID=6a1a0694-8196-4724-a58d-edde1f189b31  /     ext4    defaults,noatime 0 0
UUID=6938-F4F2                             /boot vfat    defaults,noatime 0 0

Lõpuks muudame kerneli alglaadimisparameetreid: määrame juurpartitsioonile uue asukoha, keelame silumisinfo väljundi ja (valikuliselt) keelame tuumal võrguliidestel IPv6-aadresse määrata:

# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt

Siin on sisu /mnt/cmdline.txt järgmisele vormile (üks rida ilma sidekriipsudeta):

root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1

Valmis:

# cd
# umount /mnt
# sync

Korraldame microSD-kaardi ümber vaarikaks, käivitame selle ja saame ssh-i (root/centos) kaudu juurdepääsu võrgule.

2. CentOS-i seadistamine

Esimesed kolm kõigutamatut liigutust: passwd, yum -y uuendatud, reboot.

Anname ära võrguhalduse võrgustatud:

# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off

Looge fail (koos kataloogidega) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Taaskäivitame "vaarika" ja saame sellele uuesti juurdepääsu võrgule ssh-i kaudu (IP-aadress võib muutuda). Pöörake tähelepanu sellele, mida kasutatakse / Etc / resolv.conf, mille lõi varem Network Manager. Seetõttu muutke lahendusprobleemide korral selle sisu. Kasuta systemd lahendatud me ei.

Eemaldame “ebavajaliku”, parandame ja kiirendame OS-i laadimist:

# 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

Kes vajab cron ja kes ei seedi sisseehitatud süsteemsed taimerid, saab kindlaks teha, mis puudu on. / var / log- ja vaata läbi Journalctl. Kui vajate logiajalugu (vaikimisi salvestatakse teave ainult süsteemi käivitumise hetkest):

# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf

Põhiteenuste IPv6 kasutamise keelamine (vajadusel)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Aja olulisus vaarikal on oluline asi. Kuna karbist väljas pole riistvaralist võimalust kella hetkeseisu taaskäivitamisel salvestada, on vaja sünkroonimist. Selle jaoks on väga hea ja kiire deemon koloonia - juba installitud ja käivitub automaatselt. Saate muuta NTP-servereid lähimateks.

/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

Kasutatava ajavööndi määramiseks trikk. Kuna meie eesmärk on luua 5GHz sagedustel töötav wifi-ruuter, siis valmistume üllatusteks juba varakult regulaator:

# yum info cda
Kokkuvõte: 802.11 traadita võrgu eeskirjade järgimise deemon

See kuri, samuti ajavööndist lähtuv disain „keelab” (Venemaal) 5GHz sageduste ja „kõrgete” numbritega kanalite kasutamise. Trikk on määrata ajavöönd ilma mandrite/linnade nimesid kasutamata, st selle asemel:

# timedatectl set-timezone Europe/Moscow

Me vajutame:

# timedatectl set-timezone Etc/GMT-3

Ja viimane lihv süsteemi soengule:

# 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-i lisandmoodulid

Kõike ülal öeldut võib pidada täielikeks juhisteks "vanilla" CentOS-i installimiseks Raspberry Pi-le. Peaksite saama arvuti, mis (taas)käivitub vähem kui 10 sekundiga, kasutab vähem kui 15 megabaidi muutmälu ja 1.5 gigabaiti microSD-mälu (tegelikult vähem kui 1 gigabaidi mittetäieliku / alglaadimise tõttu, kuid olgem ausad).

Sellesse süsteemi Wi-Fi pääsupunkti tarkvara installimiseks peate pisut laiendama standardse CentOS-i levitamise võimalusi. Kõigepealt uuendame sisseehitatud Wi-Fi-adapteri draiverit (püsivara). Projekti koduleht ütleb:

Wifi seadmetel Raspberry 3B ja 3B+

CentOS Project ei luba Raspberry PI 3B/3B+ püsivara faile levitada. Probleemi mõistmiseks, püsivara hankimiseks ja wifi seadistamiseks võite kasutada järgmisi artikleid.

See, mis on CentOS projekti jaoks keelatud, ei ole meie jaoks isiklikuks kasutamiseks keelatud. Asendame CentOS-is levitatava Wi-Fi püsivara Broadcomi arendajate vastavaga (need samad vihatud binaarsed plekid...). See võimaldab teil kasutada vahelduvvoolu pääsupunkti režiimis.

Wi-Fi püsivara uuendamineUurige seadme mudelit ja praegust püsivara 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 püsivara versioon on 7.45.18, dateeritud 01.03.2015, ja jätame meelde järgmised numbrid: 43455 (brcmfmac43455-sdio.bin).

Laadige alla praegune Raspbiani pilt. Laisad inimesed saavad pildi microSD-le kirjutada ja sealt püsivaraga failid kaasa võtta. Või saate installida Linuxis pildi juurpartitsiooni ja kopeerida sealt vajaliku:

# 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 püsivara failid tuleb kataloogi kopeerida ja asendada "vaarikaga". /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 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õrgu konfigureerimine ja ees ootavad väljakutsed

Nagu me eespool kokku leppisime, on "vaarikas" ühendatud "juhtmega" kohaliku võrguga. Oletame, et pakkuja pakub Interneti-juurdepääsu täpselt samamoodi: avaliku võrgu aadressi väljastab DHCP-server dünaamiliselt (võib-olla MAC-i sidumisega). Sel juhul peate pärast vaarika lõplikku seadistamist lihtsalt teenusepakkuja kaabli sellesse ühendama ja oletegi valmis. Autoriseerimine kasutades systemd-networkd - eraldi artikli teema ja seda siin ei käsitleta.

Raspberry Wi-Fi liides(ed) on kohalik võrk ja sisseehitatud Etherneti adapter (eth0) on väline. Nummerdame kohaliku võrgu staatiliselt, näiteks: 192.168.0.0/24. Vaarika aadress: 192.168.0.1. DHCP-server töötab välisvõrgus (Internet).

Nimede järjepidevuse probleem и kuulus Guatemala programmeerija - kaks probleemi, mis ootavad kõiki, kes konfigureerivad võrguliideseid ja -teenuseid süsteemsetes distributsioonides.

Paralleelne kaos (lüüriline kõrvalepõige)Lennart Pottering on koostanud oma programmi systemd Väga hea. See systemd käivitab muud programmid nii kiiresti, et nad, kellel pole aega kohtuniku vilelöögist toibuda, komistavad ja kukuvad stardis isegi takistusrada alustamata.

Kuid kui tõsiselt rääkida, siis käivitatud protsesside agressiivne paralleelsus süsteemse OS-i alguses on omamoodi "eeslisild" kogenud järjestikuste LSB spetsialistide jaoks. Õnneks osutub selle "paralleelse kaose" korra loomine lihtsaks, kuigi mitte alati ilmseks.

Loome kaks konstantse nimega virtuaalset sillaliidest: lan и nõrk. "Ühendame" Wi-Fi-adapteri(d) esimesega ja eth0 "vaarikas" teisega.

/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=jah välistab vajaduse marsruutimise lubamiseks kernelile sysctli kaudu vihjeid anda.
MACAaadress= Võtame kommentaarid maha ja vajadusel muudame.

Kõigepealt "ühendame" eth0. Jätame meelde “ühtsuse probleemi” ja kasutame ainult selle liidese MAC-aadressi, mille saab teada näiteks järgmiselt:

# cat /sys/class/net/eth0/address 

Meie loome /etc/systemd/network/eth.network:

[Match]
MACAddress=b8:27:eb:xx:xx:xx

[Network]
Bridge=wan

Kustutame eelmise konfiguratsioonifaili eth0, taaskäivitame Raspberry ja saame sellele juurdepääsu võrgule (tõenäoliselt muutub IP-aadress):

# rm -fv /etc/systemd/network/eth0.network
# reboot

5.DNSMASQ

Wi-Fi pääsupunktide loomisel ei ületa miski magusat paari dnsmasq + hostapd pole veel aru saanud. Minu arvates.

Kui keegi unustas, siis...hostapd - see on asi, mis juhib Wi-Fi adaptereid (eelkõige hoolitseb see nende ühendamise eest virtuaalse võrguga lan "vaarikad"), volitab ja registreerib traadita kliendid.

dnsmasq — konfigureerib klientide võrgupakki: väljastab IP-aadresse, DNS-servereid, vaikelüüsi ja muid sarnaseid mugavusi.

Alustame dnsmasqiga:

# yum install dnsmasq

Шаблон / 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

muutke seda oma maitse järgi.

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 peitub "maagia" parameetris sidumisdünaamiline, mis käsib dnsmasqi deemonil oodata, kuni see süsteemi ilmub liides=lan, ega minesta pärast starti uhkest üksindushoost.

# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f

6. HOSTAPD

Ja lõpuks, maagilised hostapdi konfiguratsioonid. Mul pole kahtlustki, et keegi loeb seda artiklit just neid väärtuslikke ridu otsides.

Enne hostapdi installimist peate ületama "ühtsuse probleemi". Sisseehitatud Wi-Fi-adapter wlan0 saab lihtsalt muuta oma nime wlan1-ks, kui ühendate täiendavaid USB-Wi-Fi seadmeid. Seetõttu parandame liideste nimed järgmiselt: mõtleme välja (traadita) adapteritele unikaalsed nimed ja seome need MAC-aadressidega.

Sisseehitatud Wi-Fi-adapteri jaoks, mis on endiselt wlan0:

# cat /sys/class/net/wlan0/address 
b8:27:eb:xx:xx:xx

Meie loome /etc/systemd/network/wl0.link:

[Match]
MACAddress=b8:27:eb:xx:xx:xx

[Link]
Name=wl0

Nüüd oleme selles kindlad Wl0 - See on sisseehitatud Wi-Fi. Selles veendumiseks taaskäivitame Raspberry.

Installige:

# 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

Unustamata hetkekski Riiklik hädaolukordade komitee, muutke vajalikke parameetreid ja kontrollige käsitsi funktsionaalsust:

# hostapd /etc/hostapd/hostapd.conf

hostapd käivitub interaktiivses režiimis, edastades oma oleku konsoolile. Kui tõrkeid pole, saavad vahelduvvoolurežiimi toetavad kliendid pääsupunktiga ühenduse luua. Hostapdi peatamiseks - Ctrl-C.

Jääb vaid lubada hostapd süsteemi käivitamisel. Kui teete standardset asja (systemctl enable hostapd), võite pärast järgmist taaskäivitamist saada deemoni, kes "veres veereb" diagnoosiga "liidest wl0 ei leitud". Paralleelse kaose tulemusena käivitus hostapd kiiremini, kui kernel traadita adapteri leidis.

Internet on täis abinõusid: alates sunnitud ajalõpust enne deemoni käivitamist (mitu minutit) kuni teise deemonini, mis jälgib liidese välimust ja (taas)käivitab hostpadi. Lahendused on üsna toimivad, aga kohutavalt koledad. Kutsume appi suurepärast systemd oma "eesmärkide" ja "ülesannete" ja "sõltuvustega".

Kopeerige levitamisteenuse fail asukohta /etc/systemd/system/hostapd.service:

# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system

ja vähendage selle sisu järgmisele kujule:

[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

Värskendatud teenusefaili võlu seisneb hostapd dünaamilises sidumises uue sihtmärgiga - wl0 liidesega. Kui liides ilmub, deemon käivitub; kui see kaob, siis see peatub. Ja see kõik on võrgus – ilma süsteemi taaskäivitamiseta. See tehnika on eriti kasulik USB-Wi-Fi-adapteri ühendamisel Raspberryga.

Nüüd sa saad:

# systemctl enable hostapd
# reboot

7. IPTABLES

"Mis???" © Jah, jah! Mitte ühtegi systemd. Ei mingeid uudseid kombaine (kujul tulemüür), mis lõpuks teevad sama asja.

Kasutame vana head iptables, mille teenused laadivad pärast käivitamist võrgureeglid kernelisse ja sulguvad vaikselt, jäämata elanikuks ja ressursse kulutamata. systemd on elegantne IPMasquerade=, kuid aadressi tõlkimise (NAT) ja tulemüüri usaldame siiski iptablesile.

Installige:

# yum install iptables-services
# systemctl enable iptables ip6tables

Eelistan iptablesi konfiguratsiooni salvestamist skriptina (näide):

#!/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 Raspberryga uusi juhtmega SSH-ühendusi. Täpselt nii, oleme valmistanud Wi-Fi-ruuteri, millele juurdepääs "interneti kaudu" on vaikimisi keelatud - nüüd ainult "üle õhu". Ühendame pakkuja Etherneti kaabli ja hakkame surfama!

8. Boonus: +2,4 GHz

Kui ma ülalkirjeldatud joonise järgi esimest Raspberry ruuterit kokku panin, avastasin oma majapidamisest hulga vidinaid, mis WiFi disaini piirangute tõttu ei näinud “vaarikat” üldse. Ruuteri ümberseadistamine 802.11b/g/n-s töötama oli ebasportlik, kuna maksimaalne kiirus "õhu kaudu" ei ületanud antud juhul 40 Mbit ja mu lemmik Interneti-teenuse pakkuja pakub mulle 100 (kaabli kaudu).

Tegelikult on probleemile lahendus juba leiutatud: teine ​​Wi-Fi liides, mis töötab sagedusel 2,4 GHz, ja teine ​​pöörduspunkt. Lähedal asuvast müügikohast ostsin mitte esimese, vaid teise USB-Wi-Fi vile, mille peale sattusin. Müüjat piinasid küsimused kiibistiku, ARM Linuxi tuumadega ühilduvuse ja AP-režiimis töötamise võimaluse kohta (tema oli esimene, kes alustas).

Seadistame "vile" analoogselt sisseehitatud Wi-Fi-adapteriga.

Esiteks 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

Usaldame uue Wi-Fi-liidese haldamise eraldi hostapd-deemonile, mis käivitub ja peatub sõltuvalt rangelt määratletud "vile" olemasolust süsteemis: 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, nii et banaalne kopeerimine/kleepimine võib ebaõnnestuda.

Kopeerige levitamisteenuse fail asukohta /etc/systemd/system/hostapd2.service:

# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service

ja vähendage selle sisu järgmisele kujule:

[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

Jääb üle vaid lubada uus hostapd eksemplar:

# systemctl enable hostapd2

See on kõik! Tõmmake "vile" ja "vaarikas" ise, vaadake enda ümber olevaid traadita võrke.

Ja lõpuks tahan teid hoiatada USB Wi-Fi-adapteri ja Raspberry toiteallika kvaliteedi eest. Ühendatud "kuum vile" võib mõnikord lühiajaliste elektriprobleemide tõttu põhjustada vaarikate külmumist.

Allikas: www.habr.com

Lisa kommentaar