Daar is 'n groot hoeveelheid inligting op die internet oor die skep van Wi-Fi-toegangspunte gebaseer op 'n Raspberry-enkelbord-rekenaar. As 'n reël word die gebruik van die Raspbian-inheemse bedryfstelsel vir die Framboos geïmpliseer.
Omdat ek 'n bedrewe is van RPM-gebaseerde stelsels, kon ek nie by hierdie klein wonderwerk verbygaan en nie my gunsteling CentOS daarop probeer nie.
Die artikel verskaf instruksies vir die maak van 'n 5GHz / AC Wi-Fi-roeteerder van Raspberry Pi 3 Model B + gebaseer op die CentOS-bedryfstelsel. Daar sal verskeie standaard, maar min bekende truuks wees, en as 'n bonus, 'n tekening om bykomende Wi-Fi-toerusting aan die "framboos" te koppel, sodat dit gelyktydig in verskeie modusse (2,4 + 5GHz) kan werk.
(mengsel van beelde van die publieke domein)
Ons merk dadelik op dat sommige kosmiese snelhede nie sal werk nie. Ek druk 'n maksimum van 100 Mbps van my "framboos" oor die lug, en dit dek die spoed van my internetverskaffer. Hoekom het ons so 'n trae AC nodig, as jy selfs op N in teorie 'n halwe gigabit kan kry? As jy jouself so 'n vraag gevra het, gaan dan na die winkel vir 'n regte router met agt eksterne antennas.
0. Wat jy nodig het
- Eintlik die einste "framboosproduk" van kaliber: Pi 3 Model B + (om die gesogte 5GHz-spoed en -kanale te bereik);
- Soliede microSD >= 4GB;
- Werkstasie met Linux en microSD leser/skrywer;
- Die teenwoordigheid van voldoende vaardighede in Linux, die artikel is vir die voorbereide Geek;
- Bedrade netwerk (eth0) konneksie tussen Raspberry en Linux, 'n lopende DHCP-bediener op die plaaslike netwerk en internettoegang vanaf albei toestelle.
'n Klein opmerking oor die laaste punt. "Wat het eerste gekom, die eier of ..." hoe om 'n Wi-Fi-roeteerder te maak in die afwesigheid van enige internettoegangtoerusting? Kom ons los hierdie vermaaklike oefening buite die bestek van die artikel en neem net aan dat die Framboos per draad aan die plaaslike netwerk gekoppel is en toegang tot die internet het. In hierdie geval het ons nie 'n bykomende TV en 'n manipuleerder nodig om die "framboos" op te stel nie.
1. Installeer CentOS
Ten tyde van hierdie skrywe is die lopende weergawe van CentOS op die toestel 32-bis. Iewers op die Wêreldwye Web het ek opinies afgekom oor 'n afname in die werkverrigting van sulke bedryfstelsels op die 64-bis ARM-argitektuur met soveel as 20%. Ek sal hierdie oomblik sonder kommentaar verlaat.
Op Linux, laai die minimale prent af met die kern "-RaspberryPI-"en skryf dit na microSD:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Voordat ons die prent begin gebruik, sal ons die SWAP-partisie daarvan verwyder, die wortel na die hele beskikbare volume uitbrei en van SELinux ontslae raak. Die algoritme is eenvoudig: ons maak 'n kopie van die wortel op Linux, vee alle partisies van die microSD uit behalwe die eerste een (/boot), skep 'n nuwe wortel en gee die inhoud van die kopie terug.
Voorbeeld van vereiste aksies (harde konsole-uitvoer)
# 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
Nadat u die inhoud van die wortelpartisie onttrek het, is dit tyd om 'n paar veranderinge daaraan te maak.
Deaktiveer SELinux in /mnt/etc/selinux/config:
SELINUX=disabled
Redigering /mnt/etc/fstab, wat slegs twee partisie-inskrywings daarin laat: boot (/boot, onveranderd) en root (ons verander die UUID-waarde, wat gevind kan word deur die uitvoer van die blkid-opdrag op Linux te ondersoek):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Laastens verander ons die kernselflaaiparameters: spesifiseer 'n nuwe ligging vir die wortelpartisie, deaktiveer debug-uitvoer, en (opsioneel) verhoed dat die kern IPv6-adresse op netwerkkoppelvlakke toeken:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Hier is die inhoud /mnt/cmdline.txt na die volgende vorm (een reël sonder koppeltekens):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
afwerking:
# cd
# umount /mnt
# sync
Ons herrangskik die microSD na die "framboos", hardloop dit en kry netwerktoegang daartoe via ssh (root / centos).
2. Stel CentOS op
Die eerste drie onwrikbare bewegings: passwd, jy is 'n update, herlaai.
Ons gee netwerkbestuur weg genetwerk:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Skep 'n lêer (saam met gidse) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
Ons herlaai die "framboos" en weer kry ons netwerktoegang daartoe via ssh (die IP-adres kan verander). Gee aandag aan wat gebruik word /etc/resolv.conf, vroeër geskep deur Network Manager. Daarom, in die geval van probleme met die oplossing, wysig die inhoud daarvan. Gebruik stelsel-opgelos ons sal nie.
Ons verwyder die "oortollige", herstel en versnel die laai van die bedryfstelsel:
# 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
Wie het nodig cron en wat nie die gebou verteer nie
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Deaktiveer die gebruik van IPv6 deur kerndienste (indien nodig)/ Etc / ssh / sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
Die relevansie van tyd op die "framboos" is 'n belangrike ding. Aangesien daar “uit die boks” geen hardeware vermoë is om die huidige toestand van die horlosie te stoor by herlaai nie, is sinchronisasie nodig. 'n Baie goeie en vinnige demoon hiervoor - chrony - is reeds geïnstalleer en begin outomaties. U kan die NTP-bedieners na die naaste verander.
/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
Om die tydsone te stel wat ons sal gebruik truuk. Aangesien ons doel is om 'n Wi-Fi-roeteerder te skep wat teen 5GHz-frekwensies werk, sal ons vooraf voorberei vir verrassings reguleerder:
# yum inligting crda
Opsomming: Regulerende nakoming daemon vir 802.11 draadlose netwerk
Hierdie kwaadwillige ontwerp, wat onder meer op die tydsone fokus, “verbied” die gebruik (in Rusland) van 5GHz-frekwensies en kanale met “groot” getalle. Die truuk is om die tydsone in te stel sonder om die name van die kontinente / stede te gebruik, dit wil sê in plaas van:
# timedatectl set-timezone Europe/Moscow
Ons druk:
# timedatectl set-timezone Etc/GMT-3
En die laaste aanraking in die haarstyl van die stelsel:
# hostnamectl set-hostname router
/root/.bash_profiel:
. . .
# 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-byvoegings
Alles wat hierbo gesê is, kan beskou word as 'n volledige instruksie vir die installering van vanilla CentOS op 'n Raspberry Pi. Jy behoort 'n rekenaar te kry wat binne minder as 10 sekondes (her)selflaai, minder as 15 MB RAM en 1.5 GB microSD gebruik (minder as 1 GB eintlik as gevolg van die onvolledige /selflaai, maar kom ons wees eerlik).
Om die Wi-Fi-toegangspuntsagteware op hierdie stelsel te installeer, sal jy die vermoëns van die standaard CentOS-verspreiding effens moet uitbrei. Eerstens sal ons die drywer (firmware) van die ingeboude Wi-Fi-adapter “pomp”. Die projek tuisblad sê:
WiFi op die Raspberry 3B en 3B+
Die Raspberry PI 3B/3B+-firmwarelêers mag nie deur die CentOS-projek versprei word nie. U kan die volgende artikels gebruik om die probleem te verstaan, die firmware te kry en die wifi op te stel.
Wat nie by die CentOS-projek toegelaat word nie, word nie vir ons verbied vir persoonlike gebruik nie. Ons vervang die verspreidings-Wi-Fi-firmware in CentOS met die ooreenstemmende een van die Broadcom-ontwikkelaars (daardie gehate binêre blobs ...). Dit sal veral die gebruik van AC in toegangspuntmodus toelaat.
WiFi-firmware-opgraderingOns vind die toestelmodel en die huidige firmwareweergawe uit:
# 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
Ons sien dat die firmware weergawe 7.45.18 gedateer 01.03.2015/XNUMX/XNUMX is, en onthou die volgende stel nommers: 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
Die resulterende Wi-Fi-adapter-firmwarelêers moet met 'n plaasvervanger vir "framboos" na die gids gekopieer word /usr/lib/firmware/brcm/
Ons herlaai die toekomstige router en glimlag mooi:
# 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
Weergawe: 7.45.154 vanaf 27.02.2018/XNUMX/XNUMX.
En natuurlik 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. Netwerkkonfigurasie en uitdagings wat voorlê
Soos ons hierbo ooreengekom het, is die "framboos" met "draad" aan die plaaslike netwerk gekoppel. Gestel die verskaffer verskaf ook internettoegang op presies dieselfde manier: die adres in die publieke netwerk word dinamies deur die DHCP-bediener uitgereik (miskien gekoppel aan die MAC). In hierdie geval, na die finale konfigurasie van die "framboos", "prop" net die verskaffer se kabel daarin en jy is klaar. Magtiging gebruik systemd-netwerkd - die onderwerp van 'n aparte artikel en word nie hier oorweeg nie.
Die Wi-Fi-koppelvlak(s) op die Framboos is 'n plaaslike netwerk, en die ingeboude Ethernet-adapter (eth0) is 'n eksterne een. Kom ons nommer die plaaslike netwerk staties, byvoorbeeld: 192.168.0.0/24. Framboos-adres: 192.168.0.1. Die eksterne netwerk (internet) sal 'n DHCP-bediener laat loop.
Parallelle chaos (liriese afwyking)Lennart Pottering het sy program gemaak systemd Baie goed. Hierdie systemd loods ander programme so vinnig dat hulle aan die begin struikel en val voordat hulle selfs met hul hindernisse begin voordat hulle tyd het om te herstel van die skeidsregter se skop van die fluitjie.
Maar ernstig, die aggressiewe parallellisering van lopende prosesse aan die begin van systemd-OS is 'n soort "donkiebrug" vir geharde seriële LSB-shnikov. Gelukkig blyk dit 'n eenvoudige, maar nie altyd voor die hand liggende, saak te wees om hierdie "parallelle chaos" in orde te stel nie.
Skep twee virtuele brugkoppelvlakke (brug) met konstante name: lan и skop. Ons "koppel" die Wi-Fi-adapter(s) aan die eerste een, en eth0 "frambose" aan die tweede een.
/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=ja elimineer die behoefte om 'n wenk aan die kern via sysctl te gee om roetering moontlik te maak.
MACA-adres= maak kommentaar en verander indien nodig.
Eerstens "koppel" ons eth0. Hou die "probleem van eenvormigheid" in gedagte en gebruik slegs die MAC-adres van hierdie koppelvlak, wat jy byvoorbeeld so kan uitvind:
# cat /sys/class/net/eth0/address
Ons skep /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Vee die vorige eth0-konfigurasielêer uit, herlaai die framboos en kry netwerktoegang daartoe (die IP-adres sal heel waarskynlik verander):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Vir die vervaardiging van Wi-Fi-toegangspunte is niks beter as 'n lieflike paartjie van nie dnsmasq + hostapd nog nie uitgepluis nie. Na my mening.
As iemand vergeet het...
Begin met dnsmasq:
# yum install dnsmasq
sjabloon /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
wysig dit na jou smaak.
minimalisties /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
Die "magic" hier lê in die parameter bind dinamiese, wat die dnsmasq-demoon vertel om te wag vir die koppelvlak=lan, en nie flou word van 'n aanval van trotse eensaamheid na die wegspring nie.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. GASHUIS
En laastens, die magiese hostapd-konfigurasies. Ek het geen twyfel dat iemand hierdie artikel lees op soek na hierdie gekoesterde lyne nie.
Voordat jy hostapd installeer, moet jy die "uniformiteitsprobleem" hanteer. Die ingeboude Wi-Fi-adapter wlan0 kan maklik sy naam na wlan1 verander wanneer bykomende USB Wi-Fi-toerusting gekoppel word. Daarom maak ons die koppelvlakname op die volgende manier reg: ons sal met unieke name vir (draadlose) adapters vorendag kom en dit aan MAC-adresse bind.
Vir die ingeboude Wi-Fi-adapter, wat steeds wlan0 is:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Ons skep /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
Nou sal ons seker wees daarvan wl0 is ingeboude Wi-Fi. Ons herlaai die "framboos" om seker te maak hiervan.
Installeer:
# yum install hostapd wireless-tools
Konfigurasie lêer /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
Moenie vir 'n oomblik vergeet nie
# hostapd /etc/hostapd/hostapd.conf
hostapd sal in interaktiewe modus begin en sy status na die konsole uitsaai. As daar geen foute is nie, kan kliënte wat AC-modus ondersteun reeds aan die toegangspunt koppel. Om hostapd te stop - Ctrl-C.
Dit bly om hostapd by die opstart van die stelsel in te sluit. As jy as standaard optree (systemctl aktiveer hostapd), dan kan jy na die volgende herlaai 'n "rol in die bloed" demoon kry met 'n diagnose van "koppelvlak wl0 nie gevind nie". As gevolg van die "parallelle chaos", het hostapd vinniger begin as wat die kern die draadlose adapter gevind het.
Die internet is vol kure: van 'n gedwonge uitteltyd voordat die daemon begin word ('n paar minute), tot 'n ander daemoon wat die voorkoms van die koppelvlak monitor en hostpad (her)begin. Die oplossings werk nogal, maar verskriklik lelik. Ons doen 'n beroep op die hulp van die grotes systemd met sy "doelwitte" en "doelwitte" "afhanklikhede".
Kopieer die verspreidingsdienslêer na /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
en bring die inhoud na die volgende vorm:
[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
Die magie van die opgedateerde dienslêer is om hostapd dinamies aan 'n nuwe teiken, die wl0-koppelvlak, te bind. Wanneer 'n koppelvlak verskyn, begin die daemon, wanneer dit verdwyn, stop dit. En dit is alles aanlyn – sonder om die stelsel te herlaai. Hierdie tegniek sal veral nuttig wees wanneer 'n USB Wi-Fi-adapter aan 'n framboos gekoppel word.
Nou kan jy:
# systemctl enable hostapd
# reboot
7.IPTABELS
"Wat???" © Ja, ja! Geen systemd. Geen nuwerwetse kombinasies (in die vorm vuurmuur), wat uiteindelik dieselfde ding doen.
Ons gebruik die goeie oue iptables, wie se dienste, na hul aanvang, netwerkreëls in die kern sal laai en stilweg hul werk voltooi sonder om inwoner te bly en sonder om hulpbronne te verbruik. systemd het elegante IPMasquerade=, maar ons sal steeds adresvertaling (NAT) en die firewall aan iptables toevertrou.
Installeer:
# yum install iptables-services
# systemctl enable iptables ip6tables
Ek verkies om die iptables-konfigurasie as 'n skrip te stoor (voorbeeld):
#!/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
Ons voer die bogenoemde skrif uit en verloor die vermoë om nuwe bedrade ssh-verbindings met die "framboos" te vestig. Dis reg, ons het 'n Wi-Fi-roeteerder gemaak, toegang waartoe "via die internet" by verstek verbied is - nou net "oor die lug". Ons koppel die verskaffer se kabel aan Ethernet en begin navigeer!
8. Bonus: +2,4GHz
Toe ek, volgens die bostaande tekening, die eerste Framboos-roeteerder saamgestel het, het ek 'n aantal toestelle in my huishouding gevind wat, as gevolg van hul Wi-Fi-ontwerpbeperkings, glad nie die "framboos" kon sien nie. Om die router te herkonfigureer om in 802.11b / g / n te werk, was onsportief, aangesien die maksimum spoed "oor die lug" in hierdie geval nie 40 Mbps oorskry het nie, en my gunsteling internetverskaffer bied my 100 (per kabel).
Trouens, daar is reeds aan die oplossing vir die probleem gedink: 'n tweede Wi-Fi-koppelvlak wat op 2,4GHz werk en 'n tweede toegangspunt. In die naaste stalletjie het ek nie die eerste nie, maar die tweede USB Wi-Fi “fluit” gekoop wat op my afgekom het. Die verkoper is geteister deur vrae oor die skyfiestel, verenigbaarheid met Linux ARM-pitte en die vermoë om in AP-modus te werk (hy het dit eerste begin).
Ons stel die "fluit" in analogie met die ingeboude Wi-Fi-adapter.
Kom ons hernoem dit eers na 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
Ons sal 'n aparte hostapd-demoon toewys om die nuwe Wi-Fi-koppelvlak te bestuur, wat sal begin en stop afhangende van die teenwoordigheid van 'n streng gedefinieerde "fluitjie" in die stelsel: wl1.
Konfigurasie lêer /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]
Die inhoud van hierdie lêer hang direk af van die USB Wi-Fi-adaptermodel, so 'n banale kopie / plak kan jou in die steek laat.
Kopieer die verspreidingsdienslêer na /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
en bring die inhoud na die volgende vorm:
[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
Dit bly om die nuwe hostapd-instansie te aktiveer:
# systemctl enable hostapd2
Dis al! Trek die "fluit" en die "framboos" self, kyk na die draadlose netwerke rondom.
En laastens wil ek jou waarsku oor die kwaliteit van die USB Wi-Fi-adapter en Raspberry-kragtoevoer. Gekoppel "op 'n warm fluitjie", kan soms veroorsaak "framboos hang" as gevolg van korttermyn elektriese probleme.
Bron: will.com