Ci hè una quantità enorme d'infurmazioni in Internet nantu à a creazione di punti d'accessu Wi-Fi basatu nantu à un PC Raspberry unicu. Comu regula, questu significa aduprà u sistema operatore Raspbian nativu di u Raspberry.
Essendu un aderente di sistemi basati in RPM, ùn pudia micca passà da stu picculu miraculu è ùn pruvà micca u mo amata CentOS.
L'articulu furnisce struzzioni per fà un router Wi-Fi 5GHz / AC da un Raspberry Pi 3 Model B + basatu annantu à u sistema operatore CentOS. Ci saranu parechji trucchi standard, ma pocu cunnisciuti, è cum'è bonus - un disegnu per cunnette l'equipaggiu Wi-Fi supplementu à u Raspberry, chì permette di operare simultaneamente in parechji modi (2,4 + 5GHz).
(mix d'imaghjini liberamente dispunibili)
Avemu da nutà subitu chì alcune velocità cosmiche ùn anu micca travagliatu. I squeeze a maximum of 100 Mbps out of my Raspberry over the air, è questu copre a velocità di u mo fornitore di Internet. Perchè avete bisognu di un AC cusì lento, se in teoria pudete ottene a mità di gigabit ancu in N? Sè vo avete dumandatu sta quistione, andate à a tenda per cumprà un veru router cù ottu antenne esterne.
0. Chì avete bisognu
- In realtà, u "pruduttu lampone" stessu hè di calibre: Pi 3 Model B + (per ghjunghje à a velocità è i canali 5GHz bramati);
- Bonu microSD>= 4GB;
- Workstation cù Linux è lettore / scrittore microSD;
- Disponibilità di cumpetenze sufficienti in Linux, l'articulu hè per un Geek furmatu;
- Connettività di rete cablata (eth0) trà Raspberry è Linux, esecuzione di u servitore DHCP in a reta lucale è accessu à Internet da i dui dispositi.
Un picculu cumentu nantu à l'ultimu puntu. "Quale hè vinutu prima, l'ovu o ..." cumu fà un router Wi-Fi in l'absenza di qualsiasi equipamentu di accessu à Internet? Lasciemu stu esercitu divertenti fora di u scopu di l'articulu è simpricimenti assume chì u Raspberry hè cunnessu à a reta lucale per filu è hà accessu à Internet. In questu casu, ùn avemu micca bisognu di una TV supplementu è di un manipulatore per stabilisce u "raspberry".
1. Installa CentOS
À u mumentu di a scrittura di stu articulu, a versione in esecuzione di CentOS in u dispusitivu hè 32-bit. In qualchì locu nantu à a World Wide Web, aghju trovu opinioni chì u rendiment di tali OS in l'architettura ARM 64-bit hè ridutta finu à u 20%. Lasceraghju stu mumentu senza cumentu.
In Linux, scaricate l'imagine minima cù u kernel "-RaspberryPI-"è scrivite à microSD:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Prima di principià à utilizà l'imaghjini, sguassemu a partizione SWAP da ellu, espansione a radica à tuttu u voluminu dispunibule è sguassate SELinux. L'algoritmu hè simplice: fate una copia di a radica in Linux, sguassate tutte e partizioni da u microSD eccettu u primu (/boot), crea una nova radica è torna u so cuntenutu da a copia.
Esempiu d'azzioni necessarii (output severu di a cunsola)
# 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
Dopu avè sbulicatu u cuntenutu di a partizione radicali, hè ora di fà qualchi cambiamenti.
Disattiva SELinux in /mnt/etc/selinux/config:
SELINUX=disabled
Edizione /mnt/etc/fstab, lascendu in questu solu duie entrate nantu à e partizioni: boot (/boot, no changes) è root (cambiamu u valore UUID, chì pò esse scupertu studiendu l'output di u cumandamentu blkid in Linux):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Infine, cambiamu i paràmetri di boot di u kernel: specifiemu un novu locu per a partizione radicali, disattiveghjanu l'output di l'infurmazioni di debugging è (opcionalmente) pruibite u kernel d'assignà l'indirizzi IPv6 in l'interfacce di rete:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Eccu u cuntenutu /mnt/cmdline.txt à a forma seguente (una riga senza trattini):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Fattu:
# cd
# umount /mnt
# sync
Riarrangemu a microSD in u "raspberry", lanciamu è uttene accessu à a rete via ssh (root/centos).
2. Stallà CentOS
I primi trè movimenti irremovibili: passwd, yum -y actualizazione, reboot.
Demu a gestione di a rete in rete:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Crea un schedariu (inseme cù cartulari) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
Riavvia u "raspberry" è torna l'accessu à a rete via ssh (l'indirizzu IP pò cambià). Attenti à ciò chì hè utilizatu /etc/resolv.conf, creatu prima da Network Manager. Dunque, in casu di prublemi cù risolve, edità u so cuntenutu. Aduprà systemd-risolta ùn avemu micca.
Eliminate u "innecessariu", riparà è accelerà a carica di u SO:
# 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
Quale hè bisognu CRON è chì ùn digerisce micca u integratu
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Disattivate l'usu di IPv6 da i servizii basi (se necessariu)/ etc / ssh / sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
A rilevanza di u tempu nantu à u "raspberry" hè una cosa impurtante. Siccomu fora di a scatula ùn ci hè micca capacità hardware per salvà u statu attuale di u clock à u reboot, a sincronizazione hè necessaria. Un demone assai bonu è veloce per questu hè crononia - digià stallatu è principia automaticamente. Pudete cambià i servitori NTP à i più vicini.
/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
Per stabilisce u fusu orariu avemu aduprà truccu. Siccomu u nostru scopu hè di creà un router Wi-Fi chì opera à frequenze 5GHz, avemu preparatu per sorprese in anticipu. regulatore:
# yum info crda
Riassuntu: Daemon di conformità regulatoria per a rete wireless 802.11
Stu disegnu male, ancu basatu annantu à u fusu orariu, "pruibisce" l'usu (in Russia) di frequenze 5GHz è canali cù numeri "alti". U truccu hè di stabilisce un fusu orariu senza aduprà i nomi di cuntinenti / cità, vale à dì invece di:
# timedatectl set-timezone Europe/Moscow
Pressemu:
# timedatectl set-timezone Etc/GMT-3
È i tocchi finali à u hairstyle di u sistema:
# 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. Add-ons CentOS
Tuttu ciò chì hè dettu sopra pò esse cunsideratu struzzioni cumpleta per installà "vanilla" CentOS nantu à u Raspberry Pi. Duvete finisce cù un PC chì (ri)boot in menu di 10 seconde, usa menu di 15 Megabytes di RAM è 1.5 Gigabytes di microSD (in realtà menu di 1 Gigabyte per via di un /boot incompletu, ma siamu onesti).
Per installà u software di puntu d'accessu Wi-Fi in questu sistema, avete bisognu di espansione ligeramente e capacità di a distribuzione standard CentOS. Prima di tuttu, aghjurnà u driver (firmware) di l'adattatore Wi-Fi integratu. A pagina iniziale di u prughjettu dice:
Wifi nantu à u Raspberry 3B è 3B+
I schedarii di firmware Raspberry PI 3B/3B+ ùn sò micca permessi di esse distribuiti da u Prughjettu CentOS. Pudete utilizà l'articuli seguenti per capisce u prublema, uttene u firmware è cunfigurà u wifi.
Ciò chì hè pruibitu per u prughjettu CentOS ùn hè micca pruibitu per noi per usu persunale. Sustituemu u firmware di distribuzione Wi-Fi in CentOS cù u currispundente da i sviluppatori Broadcom (quelli stessi blob binari odiati...). Questu, in particulare, vi permetterà di utilizà AC in modu di puntu d'accessu.
Actualizazione di firmware Wi-FiScuprite u mudellu di u dispusitivu è a versione di firmware attuale:
# 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
Avemu vistu chì a versione di firmware hè 7.45.18 datata 01.03.2015/XNUMX/XNUMX, è ricurdate u seguitu serie di numeri: 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
I schedarii di firmware di l'adattatore Wi-Fi risultanti devenu esse copiati è rimpiazzati cù "raspberry" in u cartulare /usr/lib/firmware/brcm/
Riavviamu u futuru router è sorrisemu cuntentu:
# 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
Versione: 7.45.154 datata 27.02.2018/XNUMX/XNUMX.
È di sicuru 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. Cunfigurazione di a rete è sfide avanti
Cumu avemu accunsentutu sopra, u "raspberry" hè cunnessu per "filu" à a reta lucale. Assumimu chì u fornitore furnisce l'accessu à Internet esattamente in u listessu modu: l'indirizzu nantu à a reta publica hè emessu dinamicamente da u servitore DHCP (forse cù u ligame MAC). In questu casu, dopu a cunfigurazione finale di u raspberry, avete bisognu di "plug" u cable di u fornitore in questu è avete finitu. Autorizazione usendu systemd-networkd - u tema di un articulu separatu è ùn hè micca discututu quì.
L'interfaccia (s) Wi-Fi di Raspberry hè una reta lucale, è l'adattatore Ethernet integratu (eth0) hè esternu. Numeremu a rete locale in modu staticu, per esempiu: 192.168.0.0/24. Indirizzu Raspberry: 192.168.0.1. Un servitore DHCP operarà nantu à a reta esterna (Internet).
Caos parallelu (digressione lirica)Lennart Pottering hà cumpilatu u so propiu prugramma systemd Assai bonu. Questu systemd lancia altri prugrammi cusì prestu chì, senza avè u tempu di ricuperà da u colpu di l'arbitru di u fischiu, inciampate è cascanu à u principiu senza mancu principià a so corsa d'ostaculi.
Ma seriamente, a parallelizazione aggressiva di i prucessi lanciati à l'iniziu di u sistema OS hè una spezia di "ponte di sumere" per i specialisti LSB sequenziali stagionati. Fortunatamente, mette l'ordine à questu "caosu parallelu" hè simplice, ancu s'ellu ùn hè micca sempre evidenti.
Creemu dui interfacce di ponte virtuale cù nomi custanti: L lan и wan. "Connettaremu" l'adattatori Wi-Fi à u primu, è l'eth0 "raspberry" à u sicondu.
/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 = sì elimina a necessità di indicà à u kernel via sysctl per attivà u routing.
MACAddress = Scommentemu è cambiate se ne necessariu.
Prima avemu "cunnessu" eth0. Ricurdamu u "prublemu di uniformità" è utilizate solu l'indirizzu MAC di sta interfaccia, chì pò esse scuperta, per esempiu, cusì:
# cat /sys/class/net/eth0/address
Creemu /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Sguassemu u schedariu di cunfigurazione precedente eth0, riavviate u Raspberry è uttene accessu à a rete (l'indirizzu IP serà più prubabilmente cambiatu):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Per fà punti d'accessu Wi-Fi, nunda batte un dolce coppiu di dnsmasq + hostapd ùn l'avete ancora capitu. Secondu mè.
In casu chì qualcunu s'hè scurdatu, allora ...
Cuminciamu cù dnsmasq:
# yum install dnsmasq
Pattern /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
editallu à u vostru piace.
minimalista /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
A "magia" quì si trova in u paràmetru bind-dinamica, chì dice à u daemon dnsmasq d'aspittà finu à chì apparisce in u sistema interfaccia = lan, è micca sbulicatu da una fiura di fiera sulitudine dopu à u principiu.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
È infine, e cunfigurazioni magic hostapd. Ùn aghju micca dubbitu chì qualcunu sta leghje stu articulu in cerca di precisamente queste linee preziose.
Prima di stallà hostapd, avete bisognu di superà u "prublemu di uniformità". L'adattatore Wi-Fi integratu wlan0 pò facilmente cambià u so nome à wlan1 quandu si cunnessa l'equipaggiu USB Wi-Fi supplementu. Per quessa, avemu da riparà i nomi di l'interfaccia in a seguente manera: avemu da vene cun nomi unichi per l'adattatori (wireless) è ligami à l'indirizzi MAC.
Per l'adattatore Wi-Fi integratu, chì hè sempre wlan0:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Creemu /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
Avà saremu sicuru chì wl0 - Questu hè Wi-Fi integratu. Riavvia u Raspberry per assicurà questu.
Installa:
# yum install hostapd wireless-tools
File di cunfigurazione /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
Senza scurdà un mumentu
# hostapd /etc/hostapd/hostapd.conf
hostapd cumminciarà in modu interattivu, trasmette u so statu à a cunsola. Se ùn ci sò micca errori, i clienti chì supportanu u modu AC puderanu cunnette à u puntu d'accessu. Per piantà hostapd - Ctrl-C.
Tuttu ciò chì resta hè di attivà hostapd in l'iniziu di u sistema. Se fate a cosa standard (systemctl enable hostapd), dopu à u prossimu reboot pudete ottene un demoniu "rotulendu in sangue" cù u diagnosticu "interfaccia wl0 micca trovu". In u risultatu di u "caosu parallelu", hostapd hà iniziatu più veloce chì u kernel hà truvatu l'adattatore wireless.
L'Internet hè pienu di rimedii: da un timeout forzatu prima di inizià u daemon (parechji minuti), à un altru daemon chì monitorizza l'aspettu di l'interfaccia è (re)start the hostpad. I suluzioni sò abbastanza fattibili, ma terribilmente brutti. Chjamemu u grande per aiutu systemd cù i so "obiettivi" è "compiti" è "dipendenze".
Copia u schedariu di serviziu di distribuzione à /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
è riduce u so cuntenutu à a forma seguente:
[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
A magia di u schedariu di serviziu aghjurnatu si trova in u ligame dinamicu di hostapd à u novu scopu - l'interfaccia wl0. Quandu l'interfaccia appare, u daemon principia; quandu sparisce, si ferma. È questu hè tuttu in linea - senza rebooting u sistema. Sta tecnica serà soprattuttu utile quandu cunnette un adattatore USB Wi-Fi à un Raspberry.
Avà pudete:
# systemctl enable hostapd
# reboot
7. IPTABLES
"Chì???" © Iè, sì! Nimu systemd. Nisuna combinazione nova (in a forma firewalld), chì finiscinu per fà a stessa cosa.
Adupremu u bonu vechju iptables, chì i servizii, dopu avè principiatu, carricà e regule di a rete in u kernel è si chjude in silenziu senza esse residente è senza cunsumà risorse. systemd hà un eleganti IPMasquerade =, ma avemu sempre affidatu a traduzzione di l'indirizzu (NAT) è u firewall à iptables.
Installa:
# yum install iptables-services
# systemctl enable iptables ip6tables
Preferite almacenà a cunfigurazione iptables cum'è un script (esempiu):
#!/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
Eseguimu l'script di sopra è perdemu a capacità di stabilisce novi cunnessione SSH cablata cù u Raspberry. Hè propiu, avemu fattu un router Wi-Fi, l'accessu à quale "via Internet" hè pruibitu per difettu - avà solu "over the air". Cunnettemu u cable Ethernet di u fornitore è cuminciamu à navigà!
8. Bonus: + 2,4GHz
Quandu aghju assemblatu u primu router Raspberry utilizendu u disegnu descrittu sopra, aghju scupertu una quantità di gadgets in a mo casa chì, per via di e so limitazioni di designu Wi-Fi, ùn pudianu micca vede u "raspberry" in tuttu. A ricunfigurazione di u router per travaglià in 802.11b/g/n era antisportiva, postu chì a velocità massima "over the air" in questu casu ùn superava 40 Mbit, è u mo fornitore di Internet preferitu m'offre 100 (via cable).
In fatti, una suluzione à u prublema hè digià inventata: una seconda interfaccia Wi-Fi chì opera à una freccia di 2,4 GHz, è un secondu puntu d'accessu. In una stalla vicinu ùn aghju compru micca u primu, ma u sicondu USB Wi-Fi "fischiu" aghju scontru. U vinditore era turmentatu da e dumande nantu à u chipset, a cumpatibilità cù i kernels ARM Linux è a pussibilità di travaglià in modu AP (era u primu à principià).
Configuremu u "fischiu" per analogia cù l'adattatore Wi-Fi integratu.
Prima, rinominemu 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
Affideremu a gestione di a nova interfaccia Wi-Fi à un daemon hostapd separatu, chì accuminciarà è cessà secondu a presenza di un "fischiu" strettamente definitu in u sistema: wl1.
File di cunfigurazione /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]
U cuntenutu di stu schedariu dipende direttamente da u mudellu di l'adattatore USB Wi-Fi, cusì una copia / incolla banale pò falla.
Copia u schedariu di serviziu di distribuzione à /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
è riduce u so cuntenutu à a forma seguente:
[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
Tuttu ciò chì resta hè di attivà una nova istanza di hostapd:
# systemctl enable hostapd2
Eccu tuttu! Tira u "fischiu" è u "raspberry" stessu, fighjate à e rete wireless intornu à voi.
È infine, vogliu avvistà di a qualità di l'adattatore USB Wi-Fi è l'alimentazione di u Raspberry. U "fischiu caldu" cunnessu pò à volte causà "congelazione di lamponi" per via di prublemi elettrici di cortu termine.
Source: www.habr.com