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