Raspberry Pi + CentOS = Wi-Fi-hotspot (tai vadelmareititin punaisella hatulla)

Internetissä on valtava määrä tietoa Wi-Fi-tukipisteiden luomisesta Raspberryn yksilevyisen PC:n pohjalta. Yleensä tämä tarkoittaa Raspberryn alkuperäisen Raspbian-käyttöjärjestelmän käyttöä.

RPM-pohjaisten järjestelmien kannattajana en voinut ohittaa tätä pientä ihmettä ja olla kokeilematta rakastettuani CentOS:täni siinä.

Artikkeli sisältää ohjeet 5 GHz/AC Wi-Fi-reitittimen tekemiseen CentOS-käyttöjärjestelmään perustuvasta Raspberry Pi 3 Model B+:sta. Luvassa on useita vakiomuotoisia, mutta vähän tunnettuja temppuja, ja bonuksena - piirustus lisä Wi-Fi-laitteiden liittämisestä Raspberryen, jolloin se voi toimia samanaikaisesti useissa tiloissa (2,4+5GHz).

Raspberry Pi + CentOS = Wi-Fi-hotspot (tai vadelmareititin punaisella hatulla)
(sekoitus vapaasti saatavilla olevia kuvia)

Huomaa heti, että jotkut kosmiset nopeudet eivät toimi. Puristan Raspberrystäni korkeintaan 100 Mbps ilmassa, ja tämä kattaa Internet-palveluntarjoajani nopeuden. Mihin tarvitset noin hidasta vaihtovirtaa, jos teoriassa saat puoli gigabittiä jopa N:llä? Jos olet kysynyt itseltäsi tämän kysymyksen, mene kauppaan ostamaan oikea reititin kahdeksalla ulkoisella antennilla.

0. Mitä tarvitset

  • Itse asiassa "vadelmatuote" itsessään on kaliiperi: Pi 3 Model B+ (saavuttaa halutut 5 GHz:n nopeudet ja kanavat);
  • Hyvä microSD >= 4GB;
  • Työasema Linuxilla ja microSD-lukija/kirjoitin;
  • Riittävien Linux-taitojen saatavuus, artikkeli on koulutetulle nörille;
  • Langallinen verkkoyhteys (eth0) Raspberryn ja Linuxin välillä, DHCP-palvelimen käyttö paikallisverkossa ja Internet-yhteys molemmista laitteista.

Pieni kommentti viimeiseen kohtaan. "Kumpi oli ensin, muna vai..." kuinka tehdä Wi-Fi-reititin ilman Internet-yhteyslaitteita? Jätetään tämä viihdyttävä harjoitus artikkelin soveltamisalan ulkopuolelle ja oletetaan yksinkertaisesti, että Raspberry on kytketty paikalliseen verkkoon johdolla ja sillä on pääsy Internetiin. Tässä tapauksessa emme tarvitse ylimääräistä televisiota ja manipulaattoria "vadelman" asettamiseen.

1. Asenna CentOS

Projektin kotisivu

Tätä artikkelia kirjoitettaessa CentOS:n versio laitteessa oli 32-bittinen. Jossain World Wide Webissä törmäsin mielipiteisiin, joiden mukaan tällaisten käyttöjärjestelmien suorituskyky 64-bittisessä ARM-arkkitehtuurissa on heikentynyt jopa 20 %. Jätän tämän hetken kommentoimatta.

Lataa Linuxissa minimikuva ytimen kanssa "-VadelmaPI-"ja kirjoita se microSD:lle:

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

Ennen kuin aloitamme kuvan käytön, poistamme siitä SWAP-osion, laajennamme juuren koko käytettävissä olevaan asemaan ja pääsemme eroon SELinuxista. Algoritmi on yksinkertainen: tee kopio juurista Linuxissa, poista kaikki osiot microSD-kortilta paitsi ensimmäinen (/boot), luo uusi root ja palauta sen sisältö kopiosta.

Esimerkki vaadituista toimista (vakava konsolin lähtö)

# 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

Kun juuriosion sisältö on purettu, on aika tehdä siihen joitain muutoksia.

Poista SELinux käytöstä /mnt/etc/selinux/config:

SELINUX=disabled

Muokkaus /mnt/etc/fstab, jättäen siihen vain kaksi osiota koskevaa merkintää: boot (/boot, ei muutoksia) ja root (muutamme UUID-arvoa, joka selviää tutkimalla blkid-komennon lähtöä Linuxissa):

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

Lopuksi muutamme ytimen käynnistysparametreja: määritämme juuriosion uuden sijainnin, poistamme virheenkorjaustietojen ulostulon ja (valinnaisesti) estämme ydintä antamasta IPv6-osoitteita verkkoliitännöissä:

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

Tässä on sisältö /mnt/cmdline.txt seuraavaan muotoon (yksi rivi ilman yhdysmerkkejä):

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

viimeistely:

# cd
# umount /mnt
# sync

Järjestämme microSD:n uudelleen "vadelmaksi", käynnistämme sen ja saamme verkkoyhteyden ssh:n kautta (root/centos).

2. CentOS:n määrittäminen

Kolme ensimmäistä horjumatonta liikettä: passwd, yum-päivitys, uudelleenkäynnistys.

Annamme verkonhallinnan verkottunut:

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

Luo tiedosto (yhdessä hakemistojen kanssa) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Käynnistämme "raspberryn" uudelleen ja saamme jälleen pääsyn verkkoon ssh:n kautta (IP-osoite saattaa muuttua). Kiinnitä huomiota siihen, mitä käytetään / Etc / resolv.conf, jonka Network Manager on aiemmin luonut. Siksi, jos ratkaisemisessa ilmenee ongelmia, muokkaa sen sisältöä. Käyttää systemd-ratkaistu emme.

Poistamme "tarpeettomat", korjaamme ja nopeuttamme käyttöjärjestelmän lataamista:

# 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

Kuka tarvitsee cron ja joka ei sulata sisäänrakennettua järjestelmälliset ajastimet, voi selvittää, mitä puuttuu. / Var / log- ja katso läpi journalctl. Jos tarvitset lokihistoriaa (oletusarvoisesti tiedot tallennetaan vain järjestelmän käynnistyshetkestä):

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

Poista IPv6:n käyttö peruspalveluista (tarvittaessa)/ Etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Ajan merkitys "vadelmassa" on tärkeä asia. Koska laitteisto ei pysty tallentamaan kellon nykyistä tilaa uudelleenkäynnistyksen yhteydessä, synkronointia tarvitaan. Erittäin hyvä ja nopea demoni tähän on chrony - jo asennettu ja käynnistyy automaattisesti. Voit vaihtaa NTP-palvelimia lähimpään.

/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

Käytämme aikavyöhykkeen asettamiseen temppu. Koska tavoitteenamme on luoda 5GHz taajuuksilla toimiva Wi-Fi-reititin, varaudumme yllätyksiin etukäteen säädin:

# nam info cda
Yhteenveto: Langattoman 802.11-verkon säädöstenmukaisuuden demoni

Tämä paha, myös aikavyöhykkeeseen perustuva suunnittelu "kieltää" 5 GHz:n taajuuksien ja kanavien käytön (Venäjällä) "korkeilla" numeroilla. Temppu on asettaa aikavyöhyke käyttämättä maanosien/kaupunkien nimiä, toisin sanoen:

# timedatectl set-timezone Europe/Moscow

Painamme:

# timedatectl set-timezone Etc/GMT-3

Ja viimeinen silaus järjestelmän hiustyyliin:

# 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-lisäosat

Kaikkea yllä sanottua voidaan pitää täydellisinä ohjeina "vanilla" CentOS:n asentamiseksi Raspberry Pi:hen. Sinun pitäisi päätyä tietokoneeseen, joka (uudelleen) käynnistyy alle 10 sekunnissa, käyttää alle 15 megatavua RAM-muistia ja 1.5 gigatavua microSD-muistia (itse asiassa alle 1 gigatavu epätäydellisen /käynnistyksen vuoksi, mutta ollaan rehellisiä).

Wi-Fi-tukiasemaohjelmiston asentamiseksi tähän järjestelmään sinun on laajennettava hieman standardin CentOS-jakelun ominaisuuksia. Ensinnäkin, päivitetään sisäänrakennetun Wi-Fi-sovittimen ohjain (laiteohjelmisto). Hankkeen kotisivulla lukee:

Wifi Raspberry 3B:ssä ja 3B+:ssa

CentOS Project ei saa jakaa Raspberry PI 3B/3B+ -laiteohjelmistotiedostoja. Seuraavien artikkelien avulla voit ymmärtää ongelman, hankkia laiteohjelmiston ja määrittää wifin.

Se, mikä on kiellettyä CentOS-projektissa, ei ole kiellettyä meiltä henkilökohtaisessa käytössä. Korvaamme CentOS:n jakelun Wi-Fi-laiteohjelmiston vastaavalla Broadcom-kehittäjien tuotteella (samat vihatut binaarit...). Tämä mahdollistaa erityisesti AC:n käytön tukiasematilassa.

Wi-Fi-laiteohjelmiston päivitysSelvitä laitteen malli ja nykyinen laiteohjelmistoversio:

# 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äemme, että laiteohjelmistoversio on 7.45.18, päivätty 01.03.2015, ja muistamme seuraavat numerot: 43455 (brcmfmac43455-sdio.bin).

Lataa nykyinen Raspbian-kuva. Laiskot voivat kirjoittaa kuvan microSD-kortille ja ottaa sieltä tiedostot laiteohjelmiston kanssa. Tai voit liittää kuvan juuriosion Linuxissa ja kopioida sieltä tarvitsemasi:

# 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

Tuloksena olevat Wi-Fi-sovittimen laiteohjelmistotiedostot on kopioitava ja korvattava hakemistoon "vadelma". /usr/lib/firmware/brcm/

Käynnistämme tulevan reitittimen uudelleen ja hymyilemme tyytyväisenä:

# 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, päivätty 27.02.2018.

Ja tietysti 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. Verkon konfigurointi ja edessä olevat haasteet

Kuten yllä sovimme, "vadelma" on yhdistetty "johdolla" paikallisverkkoon. Oletetaan, että palveluntarjoaja tarjoaa Internet-yhteyden täsmälleen samalla tavalla: julkisen verkon osoitteen antaa dynaamisesti DHCP-palvelin (ehkä MAC-sidoksella). Tässä tapauksessa vadelman lopullisen asennuksen jälkeen sinun tarvitsee vain "kytkeä" palveluntarjoajan kaapeli siihen ja olet valmis. Valtuutus käyttäen systemd-networkd - erillisen artikkelin aihe, eikä sitä käsitellä täällä.

Raspberryn Wi-Fi-liityntä(t) on paikallinen verkko, ja sisäänrakennettu Ethernet-sovitin (eth0) on ulkoinen. Numeroidaan paikallisverkko staattisesti, esimerkiksi: 192.168.0.0/24. Vadelma osoite: 192.168.0.1. DHCP-palvelin toimii ulkoisessa verkossa (Internet).

Nimeämisen johdonmukaisuusongelma и kuuluisa guatemalalainen ohjelmoija - kaksi ongelmaa, jotka odottavat kaikkia, jotka määrittävät verkkoliittymiä ja palveluita systemd-jakeluissa.

Rinnakkais kaaos (lyyrinen poikkeama)Lennart Pottering on koonnut oman ohjelmansa systemd Oikein hyvä. Tämä systemd käynnistää muita ohjelmia niin nopeasti, että he, jotka eivät ehdi toipua erotuomarin pillistä, kompastuvat ja kaatuvat alussa edes aloittamatta esterataa.

Mutta vakavasti, käynnistettyjen prosessien aggressiivinen rinnastaminen järjestelmällisen käyttöjärjestelmän alussa on eräänlainen "aasin silta" kokeneille peräkkäisten LSB-asiantuntijoiden kannalta. Onneksi järjestyksen tuominen tähän "rinnakkaiseen kaaokseen" osoittautuu yksinkertaiseksi, vaikkakaan ei aina itsestään selväksi.

Luomme kaksi virtuaalista siltaliittymää vakionimillä: lan и kalpea. "Yhdistämme" Wi-Fi-sovittimen (sovittimet) ensimmäiseen ja eth0 "vadelman" toiseen.

/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=kyllä poistaa tarpeen antaa vihjeitä ytimelle sysctl:n kautta reitityksen mahdollistamiseksi.
MACA-osoite = Poistetaan kommentit ja muutetaan tarvittaessa.

Ensin "yhdistetään" eth0. Muistamme "yhdenmukaisuusongelman" ja käytämme vain tämän rajapinnan MAC-osoitetta, joka voidaan selvittää esimerkiksi näin:

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

Me luomme /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Poistamme aiemman määritystiedoston eth0, käynnistämme Raspberryn uudelleen ja saamme pääsyn verkkoon (IP-osoite todennäköisesti muuttuu):

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

5.DNSMASQ

Wi-Fi-tukipisteiden luomisessa mikään ei voita makeaa paria dnsmasq + hostapd ei ole vielä keksinyt. Minun mielestäni.

Jos joku unohtaa, niin...hostapd - tämä on asia, joka ohjaa Wi-Fi-sovittimia (erityisesti se huolehtii niiden yhdistämisestä virtuaaliseen lan "vadelmat"), valtuuttaa ja rekisteröi langattomat asiakkaat.

dnsmasq — Konfiguroi asiakkaiden verkkopinon: antaa IP-osoitteita, DNS-palvelimia, oletusyhdyskäytäviä ja vastaavia iloja.

Aloitetaan dnsmasq:sta:

# yum install dnsmasq

sapluuna / 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

muokkaa sitä mieleiseksesi.

minimalistinen /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

"Magia" tässä piilee parametrissa sidos-dynaaminen, joka käskee dnsmasq-demonia odottamaan, kunnes se ilmestyy järjestelmään interface=lan, äläkä heiketä ylpeän yksinäisyyden kohtauksesta alun jälkeen.

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

6. HOSTAPD

Ja lopuksi maagiset hostapd-kokoonpanot. Minulla ei ole epäilystäkään siitä, että joku lukee tätä artikkelia etsiessään juuri näitä arvokkaita rivejä.

Ennen kuin asennat hostapdin, sinun on voitettava "yhdenmukaisuusongelma". Sisäänrakennettu Wi-Fi-sovitin wlan0 voi helposti muuttaa nimensä wlan1:ksi liitettäessä USB Wi-Fi -laitteita. Siksi korjaamme liitäntöjen nimet seuraavalla tavalla: keksimme (langattomille) sovittimille yksilölliset nimet ja sitomme ne MAC-osoitteisiin.

Sisäänrakennettu Wi-Fi-sovitin, joka on edelleen wlan0:

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

Me luomme /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Nyt olemme siitä varmoja wl0 - Tämä on sisäänrakennettu Wi-Fi. Käynnistämme Raspberryn uudelleen varmistaaksemme tämän.

Asentaa:

# yum install hostapd wireless-tools

Asetustiedosto /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

Hetkeäkään unohtamatta vallankaappaus, muuta tarvitsemamme parametrit ja tarkista toimivuus manuaalisesti:

# hostapd /etc/hostapd/hostapd.conf

hostapd käynnistyy interaktiivisessa tilassa ja lähettää tilansa konsoliin. Jos virheitä ei ole, AC-tilaa tukevat asiakkaat voivat muodostaa yhteyden tukiasemaan. Pysäytä hostapd - Ctrl-C.

Jäljelle jää vain ottaa hostapd käyttöön järjestelmän käynnistyksessä. Jos teet tavallisen asian (systemctl enable hostapd), niin seuraavan uudelleenkäynnistyksen jälkeen saatat saada demonin "kiertämään veressä" diagnoosilla "käyttöliittymää wl0 ei löydy". "Rinnakkaiskaaoksen" seurauksena hostapd käynnistyi nopeammin kuin ydin löysi langattoman sovittimen.

Internet on täynnä korjaustoimenpiteitä: pakotetusta aikakatkaisusta ennen demonin käynnistämistä (useita minuutteja) toiseen demoniin, joka valvoo käyttöliittymän ulkoasua ja (uudelleen)käynnistää isäntäalustan. Ratkaisut ovat varsin toimivia, mutta hirveän rumia. Kutsumme suurta avuksi systemd "tavoitteineen" ja "tehtävineen" ja "riippuvuuksineen".

Kopioi jakelupalvelutiedosto kohteeseen /etc/systemd/system/hostapd.service:

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

ja pienennä sen sisältö seuraavaan muotoon:

[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

Päivitetyn palvelutiedoston taika piilee hostapd:n dynaamisessa sitomisessa uuteen kohteeseen - wl0-liitäntään. Kun käyttöliittymä ilmestyy, demoni käynnistyy, kun se katoaa, se pysähtyy. Ja tämä kaikki verkossa - ilman järjestelmän uudelleenkäynnistystä. Tämä tekniikka on erityisen hyödyllinen liitettäessä USB Wi-Fi -sovitin Raspberry-laitteeseen.

Nyt voit:

# systemctl enable hostapd
# reboot

7. IPTABLES

"Mitä???" © Kyllä, kyllä! Ei mitään systemd. Ei uusia puimureita (muodossa firewalld), jotka päätyvät tekemään saman asian.

Käytetään vanhaa hyvää iptables, jonka palvelut lataavat käynnistyksen jälkeen verkkosäännöt ytimeen ja sulkeutuvat hiljaa ilman, että ne jäävät asukkaaksi ja kuluttavat resursseja. systemd on tyylikäs IPMasquerade=, mutta uskomme silti osoitteenmuunnoksen (NAT) ja palomuurin iptablesille.

Asentaa:

# yum install iptables-services
# systemctl enable iptables ip6tables

Haluan tallentaa iptables-määritykset komentosarjana (esimerkki):

#!/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

Suoritamme yllä olevan komentosarjan ja menetämme kyvyn muodostaa uusia langallisia SSH-yhteyksiä Raspberryn kanssa. Aivan oikein, olemme tehneet Wi-Fi-reitittimen, johon pääsy "Internetin kautta" on oletusarvoisesti kielletty - nyt vain "over the air". Yhdistämme palveluntarjoajan Ethernet-kaapelin ja aloitamme surffauksen!

8. Bonus: +2,4 GHz

Kun kokosin ensimmäisen Raspberry-reitittimen yllä kuvatun piirustuksen avulla, löysin kotitaloudestani useita vempaimia, jotka Wi-Fi-suunnittelun rajoitustensa vuoksi eivät voineet nähdä "vadelmaa" ollenkaan. Reitittimen uudelleenkonfigurointi toimimaan 802.11b/g/n-standardilla oli epäurheilullista, koska maksiminopeus "over the air" ei tässä tapauksessa ylittänyt 40 Mbit, ja suosikki Internet-palveluntarjoajani tarjoaa minulle 100 (kaapelin kautta).

Itse asiassa ratkaisu ongelmaan on jo keksitty: toinen Wi-Fi-liitäntä, joka toimii taajuudella 2,4 GHz, ja toinen tukiasema. Läheisestä kioskista ostin ensimmäisen, vaan toisen USB-Wi-Fi-pillin, johon törmäsin. Myyjää piinasivat kysymykset piirisarjasta, yhteensopivuudesta ARM Linux -ytimien kanssa ja mahdollisuudesta työskennellä AP-tilassa (hän ​​aloitti ensimmäisenä).

Määritämme "pillin" analogisesti sisäänrakennetun Wi-Fi-sovittimen kanssa.

Ensin nimetään se uudelleen 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

Uskomme uuden Wi-Fi-liitännän hallinnan erilliselle hostapd-daemonille, joka käynnistyy ja pysähtyy riippuen tiukasti määritellyn "pillin" olemassaolosta järjestelmässä: wl1.

Asetustiedosto /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]

Tämän tiedoston sisältö riippuu suoraan USB Wi-Fi -sovittimen mallista, joten banaalinen kopiointi/liittäminen voi epäonnistua.

Kopioi jakelupalvelutiedosto kohteeseen /etc/systemd/system/hostapd2.service:

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

ja pienennä sen sisältö seuraavaan muotoon:

[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äljelle jää vain ottaa käyttöön uusi hostapd-esiintymä:

# systemctl enable hostapd2

Siinä kaikki! Vedä "pilliä" ja "vadelmaa" itse, katso ympärilläsi olevia langattomia verkkoja.

Ja lopuksi haluan varoittaa sinua USB Wi-Fi -sovittimen ja Raspberryn virtalähteen laadusta. Yhdistetty "kuuma pilli" voi joskus aiheuttaa "vadelman jäätymistä" lyhytaikaisten sähköongelmien vuoksi.

Lähde: will.com

Lisää kommentti