Raspberry Pi + CentOS = Wi-Fi Hotspot (oder Himbeerrouter mat engem roude Hutt)

Et gëtt eng enorm Quantitéit un Informatioun um Internet iwwer d'Schafe vu Wi-Fi Zougangspunkte baséiert op engem Raspberry Single-Board PC. Als Regel, heescht dat de Raspbian Betribssystem gebierteg zu Raspberry benotzen.

Als Unhänger vu RPM-baséiert Systemer ze sinn, konnt ech dëst klenge Wonner net passéieren an net mäi beléifte CentOS drop probéieren.

Den Artikel liwwert Instruktioune fir en 5GHz / AC Wi-Fi Router aus engem Raspberry Pi 3 Model B+ ze maachen baséiert op dem CentOS Betribssystem. Et ginn e puer Standard awer wéineg bekannt Tricken, an als Bonus - eng Zeechnung fir zousätzlech Wi-Fi Ausrüstung mat der Raspberry ze verbannen, wat et erlaabt gläichzäiteg a verschiddene Modi ze bedreiwen (2,4 + 5GHz).

Raspberry Pi + CentOS = Wi-Fi Hotspot (oder Himbeerrouter mat engem roude Hutt)
(Mëschung vu fräi verfügbare Biller)

Loosst eis direkt bemierken datt verschidde kosmesch Geschwindegkeete net funktionnéieren. Ech pressen maximal 100 Mbps aus mengem Raspberry iwwer d'Loft, an dëst deckt d'Geschwindegkeet vu mengem Internet Provider. Firwat braucht Dir esou eng schwaach AC, wann an der Theorie kann een hallwe Gigabit souguer op N kréien? Wann Dir Iech dës Fro gestallt hutt, da gitt an de Buttek fir e richtege Router mat aacht externen Antennen ze kafen.

0. Wat Dir braucht

  • Eigentlech ass de "Hambierprodukt" selwer vu Kaliber: Pi 3 Model B+ (fir déi begeeschtert 5GHz Geschwindegkeet a Kanäl z'erreechen);
  • Gutt microSD>= 4GB;
  • Workstation mat Linux a microSD Lieser / Schrëftsteller;
  • Disponibilitéit vu genuch Fäegkeeten am Linux, den Artikel ass fir en ausgebilten Geek;
  • Kabelnetz (eth0) Konnektivitéit tëscht Raspberry a Linux, Lafen DHCP Server am lokalen Netzwierk an Internetzougang vu béiden Apparater.

E klenge Kommentar zum leschte Punkt. "Wéi koum als éischt, d'Ee oder ..." wéi e Wi-Fi Router ze maachen an der Verontreiung vun Internetzougang Ausrüstung? Loosst eis dës lëschteg Übung ausserhalb vum Artikel loosse an einfach dovun ausgoen datt d'Raspberry mam Drot mat dem lokalen Netzwierk verbonnen ass an Zougang zum Internet huet. An dësem Fall brauche mir keng zousätzlech Fernseh an e Manipulator fir den "Hambier" opzestellen.

1. Installéiert CentOS

Projet Haaptsäit

Zu der Zäit vum Schreiwen vun dësem Artikel ass déi lafend Versioun vum CentOS um Apparat 32-Bit. Iergendwou um World Wide Web hunn ech Meenungen fonnt datt d'Leeschtung vun esou OSen op 64-Bit ARM Architektur ëm sou vill wéi 20% reduzéiert gëtt. Ech loossen dëse Moment ouni Kommentar.

Op Linux, luet de minimale Bild mam Kernel erof "-RaspberryPI-"a schreift et op microSD:

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

Ier Dir ufänkt d'Bild ze benotzen, wäerte mir d'SWAP-Partition dovun ewechhuelen, d'Wurzel erweideren op de ganze verfügbare Volumen a lass vun SELinux. Den Algorithmus ass einfach: maacht eng Kopie vun der Root op Linux, läscht all Partitionen aus der MicroSD ausser déi éischt (/boot), erstellt eng nei Root a gitt säin Inhalt vun der Kopie zréck.

Beispill vun erfuerderlechen Aktiounen (schwéier Konsoloutput)

# 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

Nodeems Dir den Inhalt vun der Root-Partition ausgepackt hutt, ass et Zäit e puer Ännerungen ze maachen.

Desaktivéiere SELinux an /mnt/etc/selinux/config:

SELINUX=disabled

Redaktioun /mnt/etc/fstab, loosst et nëmmen zwee Entréen iwwer d'Partitionen: Boot (/boot, keng Ännerungen) a Root (mir änneren den UUID-Wäert, deen erausfonnt gëtt andeems Dir d'Ausgab vum blkid Kommando op Linux studéiert):

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

Schlussendlech änneren mir d'Kernelbootparameter: mir spezifizéieren eng nei Plaz fir d'Root-Partition, deaktivéieren d'Output vun Debugging-Informatioun an (optional) verbidden de Kernel IPv6 Adressen op Netzwierkschnëttplazen ze ginn:

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

Hei ass den Inhalt /mnt/cmdline.txt op déi folgend Form (eng Zeil ouni Bindestrecken):

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

Gemaach:

# cd
# umount /mnt
# sync

Mir arrangéieren d'MicroSD an den "Hambierbéier", lancéiere se a kréien Netzzougang op et iwwer ssh (root / centos).

2. CentOS Ariichten

Déi éischt dräi unshakable Bewegungen: passwd, yum -y update, neistarten.

Mir ginn Reseau Gestioun ewech vernetzt:

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

Erstellt eng Datei (zesumme mat Verzeichnisser) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Mir starten den "Hambierbéier" nei a kréien erëm Netzwierkzougang iwwer ssh (d'IP Adress kann änneren). Opgepasst op wat benotzt gëtt /etc/resolv.conf, virdru vum Network Manager erstallt. Dofir, am Fall vu Probleemer mat der Léisung, ännert säin Inhalt. Benotzt systemd geléist mir wäerten net.

Mir läschen déi "onnéideg", reparéieren a beschleunegen d'Luede vum OS:

# 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

Wien brauch cron an deen net de gebaut-an verdaut systemd Timer, kann feststellen wat fehlt. / var / aloggen- a kuckt duerch journalctl. Wann Dir Loggeschicht braucht (par défaut gëtt d'Informatioun nëmme gespäichert vum Moment wou de System ufänkt):

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

Deaktivéiert d'Benotzung vun IPv6 duerch Basisservicer (wann néideg)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

D'Relevanz vun der Zäit op der "Hambierbéier" ass eng wichteg Saach. Zënter aus der Këscht gëtt et keng Hardwarefäegkeet fir den aktuellen Zoustand vun der Auer beim Neistart ze späicheren, ass d'Synchroniséierung néideg. Eng ganz gutt a séier Daemon fir dëst ass chrony - schonn installéiert a fänkt automatesch un. Dir kënnt NTP Serveren op déi noosten änneren.

/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

Fir d'Zäitzone ze setzen wäerte mir benotzen trick. Well eist Zil ass e Wi-Fi Router ze kreéieren deen op 5GHz Frequenzen funktionnéiert, wäerte mir am Viraus op Iwwerraschungen virbereeden reegler:

# yum info crda
Resumé: Reguléierungskonformitéit Daemon fir 802.11 drahtlose Netzwierker

Dëse béisen Design, och baséiert op der Zäitzone, "verbueden" d'Benotzung (a Russland) vu 5GHz Frequenzen a Kanäl mat "héigen" Zuelen. Den Trick ass eng Zäitzone ze setzen ouni d'Nimm vu Kontinenter/Stied ze benotzen, dat heescht amplaz:

# timedatectl set-timezone Europe/Moscow

Mir drécken:

# timedatectl set-timezone Etc/GMT-3

An déi lescht Touch op d'Frisur vum System:

# 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 Add-ons

Alles wat uewen gesot gouf, kann als komplett Instruktioune ugesi ginn fir "Vanille" CentOS op der Raspberry Pi z'installéieren. Dir sollt mat engem PC ophalen, deen a manner wéi 10 Sekonnen (ne) boott, manner wéi 15 Megabytes RAM an 1.5 Gigabyte MicroSD benotzt (eigentlech manner wéi 1 Gigabyte wéinst engem onkompletten /Boot, awer loosst eis éierlech sinn).

Fir Wi-Fi Access Point Software op dësem System z'installéieren, musst Dir d'Kapazitéite vun der Standard CentOS Verdeelung liicht ausbauen. Als éischt, loosst eis de Chauffer (Firmware) vum agebaute Wi-Fi Adapter upgraden. D'Homepage vum Projet seet:

Wifi op der Raspberry 3B an 3B+

D'Raspberry PI 3B/3B+ Firmwaredateien sinn net erlaabt vum CentOS Project ze verdeelen. Dir kënnt déi folgend Artikele benotzen fir de Problem ze verstoen, d'Firmware ze kréien an de Wifi opzestellen.

Wat fir den CentOS-Projet verbueden ass, ass fir eis net fir perséinlech Notzung verbueden. Mir ersetzen d'Verdeelung Wi-Fi Firmware an CentOS mat der entspriechender vun de Broadcom Entwéckler (déi selwecht gehaasst binär Blobs ...). Dëst, besonnesch, erlaabt Iech AC am Access Point Modus ze benotzen.

Wi-Fi Firmware UpgradeFannt den Apparatmodell an déi aktuell Firmware Versioun eraus:

# 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 

Mir gesinn datt d'Firmware Versioun 7.45.18 vum 01.03.2015/XNUMX/XNUMX ass, an erënnert un déi folgend Zuelen: 43455 (brcmfmac43455-sdio.bin).

Luet dat aktuellt Raspbian Bild erof. Lazy Leit kënnen d'Bild op microSD schreiwen an d'Fichier'en mat der Firmware vun do huelen. Oder Dir kënnt d'Root Partition vum Bild op Linux montéieren a kopéieren wat Dir braucht vun do:

# 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

Déi resultéierend Wi-Fi Adapter Firmware Dateien musse kopéiert ginn an duerch "Hambier" an den Verzeichnis ersat ginn /usr/lib/firmware/brcm/

Mir starten den zukünftege Router nei a laachen zefridden:

# 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 

Versioun: 7.45.154 vum 27.02.2018.

An natierlech 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. Network Configuratioun an Erausfuerderunge virun

Wéi mir uewen ausgemaach hunn, ass de "Hambierbéier" duerch "Drot" mam lokalen Netzwierk verbonnen. Loosst eis dovun ausgoen datt de Provider den Internetzougang op genau déiselwecht Manéier ubitt: d'Adress am ëffentlechen Netzwierk gëtt dynamesch vum DHCP-Server ausgestallt (vläicht mat MAC-Bindung). An dësem Fall, no der Finale Setup vun der Hambierbéier, musst Dir just de Kabel vum Provider an et "pluggen" an Dir sidd fäerdeg. Autorisatioun benotzt systemd-networkd - d'Thema vun engem separaten Artikel a gëtt net hei diskutéiert.

Raspberry's Wi-Fi Interface (en) ass e lokalt Netzwierk, an den agebaute Ethernet Adapter (eth0) ass extern. Loosst eis de lokalen Netzwierk statesch nummeréieren, zum Beispill: 192.168.0.0/24. Raspberry Adress: 192.168.0.1. En DHCP Server funktionnéiert am externen Netzwierk (Internet).

Numm Konsistenz Problem и berühmte Guatemalan Programméierer - zwee Probleemer déi op jidderee waarden deen Netzwierkschnëttplazen a Servicer a systemd Verdeelungen konfiguréiert.

Parallel Chaos (lyresch Digression)De Lennart Pottering huet säin eegene Programm zesummegestallt systemd Ganz gutt. Dëst systemd lancéiert aner Programmer sou séier, datt se, keng Zäit hunn, sech vum Arbitter säi Schlag vun der Päif ze erholen, am Ufank stousse a falen, ouni emol hiren Hindernisscours unzefänken.

Awer eescht, déi aggressiv Paralleliséierung vu lancéierte Prozesser am Ufank vum Systemd OS ass eng Aart "Eselbréck" fir erfuerene sequentiell LSB Spezialisten. Glécklecherweis, Uerdnung an dësem "parallelle Chaos" stellt sech einfach, obwuel net ëmmer offensichtlech.

Mir kreéieren zwee virtuelle Bréck-Interfaces mat konstanten Nimm: Lan и wan. Mir wäerten den Wi-Fi-Adapter (en) un den éischten "verbinden", an den eth0 "Hambier" op den zweeten.

/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=jo eliminéiert de Besoin fir de Kernel iwwer sysctl ze tippen fir Routing z'erméiglechen.
MACAdress= Kommentéieren an änneren wann néideg.

Als éischt "verbinden" mir eth0. Mir erënneren un de "Uniformitéitsproblem" a benotzen nëmmen d'MAC Adress vun dëser Interface, déi zum Beispill esou erausfonnt ka ginn:

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

Mir kreéieren /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Mir läschen déi viregt Konfiguratiounsdatei eth0, restart de Raspberry a kréien Netzzougang dozou (d'IP Adress wäert héchstwahrscheinlech änneren):

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

5.DNSMASQ

Fir Wi-Fi Zougang Punkten ze maachen, näischt schléit eng séiss Koppel dnsq + hostapd hunn et nach net erausfonnt. Menger Meenung no.

Falls iergendeen vergiess huet, dann...hostapd - dat ass d'Saach déi Wi-Fi Adapter kontrolléiert (besonnesch, et këmmert sech ëm d'Verbindung mat der virtueller Lan "Hambieren"), autoriséiert a registréiert drahtlose Clienten.

dnsq - konfiguréiert den Netzwierkstack vu Clienten: stellt IP Adressen, DNS Server, Standard Gateway an ähnlech Freed aus.

Loosst eis mat dnsmasq ufänken:

# yum install dnsmasq

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

editéiert et op Äre Wënsch.

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

D'"Magie" hei läit am Parameter bind-dynamesch, déi seet dem dnsmasq Daemon fir ze waarden bis et um System erscheint interface=lan, an net liichtschwaache vun engem fit vun houfreg Einsamkeet nom Start.

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

6. HOSTAPD

A schliisslech sinn d'Magie Hostapd Konfiguratiounen. Ech hu keen Zweiwel datt een dësen Artikel liest op der Sich no genau dës geschätzte Linnen.

Ier Dir Hostapd installéiert, musst Dir de "Uniformitéitsproblem" iwwerwannen. Den agebaute Wi-Fi Adapter wlan0 kann säin Numm einfach op wlan1 änneren wann Dir zousätzlech USB Wi-Fi Ausrüstung verbënnt. Dofir wäerte mir d'Interface Nimm op déi folgend Manéier fixéieren: mir kommen mat eenzegaartegen Nimm fir déi (wireless) Adapter a binden se un MAC Adressen.

Fir den agebaute Wi-Fi Adapter, deen nach ëmmer wlan0 ass:

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

Mir kreéieren /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Elo wäerte mir sécher sinn, datt wl0 - Dëst ass agebaute Wi-Fi. Mir starten de Raspberry nei fir dëst sécher ze stellen.

Installéieren:

# yum install hostapd wireless-tools

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

Ouni ee Moment ze vergiessen Staat Noutfall Comité, änneren d'Parameteren déi mir brauchen a kontrolléiert manuell fir Funktionalitéit:

# hostapd /etc/hostapd/hostapd.conf

hostapd fänkt am interaktiven Modus un, schéckt säin Zoustand op d'Konsole. Wann et keng Feeler sinn, da kënnen d'Clienten, déi den AC-Modus ënnerstëtzen, mat dem Zougangspunkt konnektéieren. Fir Hostapd ze stoppen - Ctrl-C.

Alles wat bleift ass Hostapd am System Startup z'aktivéieren. Wann Dir d'Standard Saach maacht (systemctl aktivéiert hostapd), da kënnt Dir nom nächste Restart en Dämon kréien "Rolling am Blutt" mat der Diagnos "Interface wl0 net fonnt". Als Resultat vum "parallelle Chaos", huet hostapd méi séier ugefaang wéi de Kernel de Wireless-Adapter fonnt huet.

Den Internet ass voller Remedies: vun engem gezwongenen Timeout virum Start vum Daemon (e puer Minutten), op en aneren Daemon deen d'Erscheinung vun der Interface iwwerwaacht an den Hostpad (nei) start. D'Léisungen sinn zimlech funktionell, awer schrecklech ellen. Mir ruffen de grousse fir Hëllef systemd mat hiren "Ziler" an "Aufgaben" an "Ofhängegkeeten".

Kopéiert d'Verdeelungsservicedatei op /etc/systemd/system/hostapd.service:

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

a reduzéiert säin Inhalt op déi folgend Form:

[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

D'Magie vun der aktualiséierter Servicedatei läit an der dynamescher Bindung vum Hostapd zum neien Zil - d'wl0 Interface. Wann den Interface erschéngt, fänkt den Daemon un; wann et verschwënnt, stoppt et. An dat ass alles online - ouni de System nei ze starten. Dës Technik wäert besonnesch nëtzlech sinn wann Dir en USB Wi-Fi Adapter mat engem Raspberry verbënnt.

Elo kënnt Dir:

# systemctl enable hostapd
# reboot

7. IPTABLES

"Wa???" © Jo, jo! Keen systemd. Keng nei nei kombinéiert (an der Form firewalld), déi um Enn déiselwecht Saach maachen.

Loosst eis déi gutt al benotzen Iteef, deenen hir Servicer, nom Start, Netzwierkregelen an de Kernel lueden a roueg auszeschalten ouni Resident ze bleiwen an ouni Ressourcen ze konsuméieren. systemd huet eng elegant IPMasquerade=, mä mir wäerten nach ëmmer d'Adress Iwwersetzung (NAT) a Firewall un iptables uvertraut.

Installéieren:

# yum install iptables-services
# systemctl enable iptables ip6tables

Ech léiwer d'iptables Konfiguratioun als Skript ze späicheren (Beispill):

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

Mir féieren dat uewe Skript aus a verléieren d'Fäegkeet fir nei kabelt SSH Verbindunge mat der Raspberry opzebauen. Dat ass richteg, mir hunn e Wi-Fi Router gemaach, den Zougang zu deem "iwwer Internet" als Standard verbueden ass - elo nëmmen "iwwer d'Loft". Mir verbannen den Ethernet Kabel vum Provider a fänken un ze surfen!

8. Bonus: +2,4GHz

Wéi ech den éischten Raspberry Router mat der Zeechnung uewe beschriwwen zesummegestallt hunn, hunn ech eng Rei Gadgeten a mengem Stot entdeckt, déi, duerch hir Wi-Fi Designbeschränkungen, den "Hambier" guer net gesinn. D'Rekonfiguratioun vum Router fir an 802.11b / g / n ze schaffen war onsportlech, well déi maximal Geschwindegkeet "iwwer d'Loft" an dësem Fall net méi wéi 40 Mbit huet, a mäi Lieblingsinternetprovider bitt mir 100 (via Kabel).

Tatsächlech ass eng Léisung fir de Problem schonn erfonnt ginn: eng zweet Wi-Fi Interface, déi mat enger Frequenz vun 2,4 GHz funktionnéiert, an en zweeten Zougangspunkt. An engem Emgéigend Stall kaaft ech net déi éischt, mä déi zweet USB Wi-Fi "Pfeifen" ech begéint. De Verkeefer war gefoltert vu Froen iwwer de Chipsatz, Kompatibilitéit mat ARM Linux Kernelen an d'Méiglechkeet fir am AP Modus ze schaffen (hie war deen éischte fir ze starten).

Mir konfiguréieren de "Pfeifen" duerch Analogie mam agebaute Wi-Fi Adapter.

Als éischt, loosst eis et ëmbenennen 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

Mir wäerten d'Gestioun vun der neier Wi-Fi Interface un engem getrennten Hostapd Daemon uvertraut, deen ofhängeg vun der Präsenz vun engem strikt definéierte "Pfeif" am System starten an ophalen: wl1.

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

Den Inhalt vun dëser Datei hänkt direkt vum Modell vum USB Wi-Fi Adapter of, sou datt eng banal Kopie / Paste Iech versoen.

Kopéiert d'Verdeelungsservicedatei op /etc/systemd/system/hostapd2.service:

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

a reduzéiert säin Inhalt op déi folgend Form:

[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

Alles wat bleift ass eng nei Instanz vun hostapd z'aktivéieren:

# systemctl enable hostapd2

Dat ass alles! Pull d'"Pfeifen" an d'"Hambierbéier" selwer, kuckt op déi drahtlose Netzwierker ronderëm Iech.

A schliisslech wëll ech Iech iwwer d'Qualitéit vum USB Wi-Fi Adapter an d'Energieversuergung vum Raspberry warnen. Verbonne "Hot Whistle" kann heiansdo "Himbeerafréiere" verursaachen wéinst kuerzfristeg elektresche Probleemer.

Source: will.com

Setzt e Commentaire