Az interneten rengeteg információ található a Raspberry egylapos PC-n alapuló Wi-Fi hozzáférési pontok létrehozásáról. Ez általában a Raspberryben natív Raspbian operációs rendszer használatát jelenti.
Az RPM-alapú rendszerek híve lévén, nem hagyhattam el ezt a kis csodát, és nem próbálhattam ki rajta szeretett CentOS-emet.
A cikk útmutatást ad 5 GHz/AC Wi-Fi router készítéséhez egy Raspberry Pi 3 Model B+ modellből, CentOS operációs rendszeren. Számos szabványos, de kevéssé ismert trükk lesz, és bónuszként egy rajz további Wi-Fi-berendezések csatlakoztatásához a Raspberry-hez, amely lehetővé teszi, hogy egyidejűleg több üzemmódban (2,4 + 5 GHz) működjön.
(szabadon elérhető képek keveréke)
Rögtön megjegyezzük, hogy bizonyos kozmikus sebességek nem működnek. Maximum 100 Mbps-ot préselek ki a Raspberry-mből az éteren keresztül, és ez lefedi az internetszolgáltatóm sebességét. Miért kell ilyen lomha AC, ha elméletileg N-en is lehet fél gigabitet kapni? Ha feltetted magadnak ezt a kérdést, akkor menj el a boltba, és vásárolj egy igazi routert nyolc külső antennával.
0. Amire szüksége lesz
- Tulajdonképpen maga a „málna termék” a következő kaliberű: Pi 3 Model B+ (a hőn áhított 5 GHz-es sebesség és csatornák eléréséhez);
- Jó microSD >= 4 GB;
- Munkaállomás Linux-szal és microSD-olvasóval/íróval;
- Megfelelő Linux-készségek rendelkezésre állása, a cikk képzett strébereknek szól;
- Vezetékes hálózati (eth0) kapcsolat a Raspberry és a Linux között, DHCP-kiszolgáló futtatása a helyi hálózaton és internet-hozzáférés mindkét eszközről.
Egy kis megjegyzés az utolsó ponthoz. „Melyik volt előbb, a tojás vagy...” hogyan készítsünk Wi-Fi-routert internetes hozzáférési eszközök hiányában? Hagyjuk ezt a szórakoztató gyakorlatot a cikk keretein kívül, és egyszerűen tételezzük fel, hogy a Raspberry vezetéken keresztül csatlakozik a helyi hálózathoz, és hozzáfér az internethez. Ebben az esetben nem lesz szükségünk további tévére és manipulátorra a „málna” beállításához.
1. Telepítse a CentOS-t
A cikk írásakor a CentOS futó verziója az eszközön 32 bites. Valahol a világhálón olyan véleményekkel találkoztam, hogy az ilyen operációs rendszerek teljesítménye 64 bites ARM architektúrán akár 20%-kal is csökken. Kommentár nélkül hagyom ezt a pillanatot.
Linuxon töltse le a minimális képet a kernellel"-Raspberry Pi-"és írd ki microSD-re:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
A kép használatának megkezdése előtt eltávolítjuk a SWAP partíciót, kiterjesztjük a gyökérkönyvtárat a teljes elérhető kötetre, és megszabadulunk a SELinuxtól. Az algoritmus egyszerű: készítsen másolatot a gyökérről Linuxon, törölje az összes partíciót a microSD-ről az első kivételével (/boot), hozzon létre egy új gyökérkönyvtárat, és adja vissza annak tartalmát a másolatból.
Példa a szükséges műveletekre (súlyos konzolkimenet)
# 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
A gyökérpartíció tartalmának kicsomagolása után ideje néhány változtatást végrehajtani rajta.
A SELinux letiltása /mnt/etc/selinux/config:
SELINUX=disabled
Szerkesztés /mnt/etc/fstab, csak két bejegyzést hagyunk benne a partíciókról: a boot (/boot, nincs változás) és a root (változtatjuk az UUID értéket, amit a blkid parancs kimenetének tanulmányozásával találhatunk meg Linuxon):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Végül megváltoztatjuk a kernel rendszerindítási paramétereit: új helyet adunk meg a gyökérpartíciónak, letiltjuk a hibakeresési információk kimenetét, és (opcionálisan) megtiltjuk, hogy a kernel IPv6-címeket rendeljen hozzá a hálózati interfészeken:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Itt van a tartalom /mnt/cmdline.txt a következő űrlapra (egy sor kötőjel nélkül):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Kész:
# cd
# umount /mnt
# sync
A microSD-t átrendezzük „málnává”, elindítjuk és ssh-n (root/centos) keresztül kapunk hálózati hozzáférést.
2. A CentOS beállítása
Az első három rendíthetetlen mozdulat: passwd, yum-frissítés, újraindítás.
Hálózatkezelést adunk networkd:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Fájl létrehozása (a könyvtárakkal együtt) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
Újraindítjuk a „raspberry”-t, és ismét hálózati hozzáférést kapunk az ssh-n keresztül (az IP-cím változhat). Ügyeljen arra, hogy mit használ / Etc / resolv.conf, amelyet korábban a Network Manager hozott létre. Ezért a megoldással kapcsolatos problémák esetén szerkessze a tartalmát. Használat systemd-megoldott mi nem.
Eltávolítjuk a „feleslegeseket”, javítjuk és felgyorsítjuk az operációs rendszer betöltését:
# 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
Kinek kell cron és aki nem emészti meg a beépített
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Az alapszolgáltatások IPv6 használatának letiltása (ha szükséges)/ Etc / ssh / sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
Az idő relevanciája a „málnán” fontos dolog. Mivel a dobozból nincs hardver az óra aktuális állapotának újraindításkor mentésére, szinkronizálásra van szükség. Egy nagyon jó és gyors démon ehhez chrony - már telepítve van, és automatikusan elindul. Az NTP-kiszolgálókat a legközelebbire cserélheti.
/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
Az általunk használt időzóna beállításához trükk. Mivel célunk egy 5 GHz-es frekvencián működő Wi-Fi router létrehozása, ezért előre készülünk a meglepetésekre szabályozó:
# yum info crda
Összegzés: Szabályozási megfelelőségi démon a 802.11 vezeték nélküli hálózatokhoz
Ez a szintén az időzónára épülő gonosz tervezés „tiltja” (Oroszországban) az 5 GHz-es frekvenciák és „magas” számmal rendelkező csatornák használatát. A trükk az, hogy időzónát állítunk be a kontinensek/városok nevének használata nélkül, vagyis ahelyett, hogy:
# timedatectl set-timezone Europe/Moscow
Nyomjuk:
# timedatectl set-timezone Etc/GMT-3
És az utolsó simítások a rendszer frizuráján:
# 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 kiegészítők
A fent elmondottak teljes utasításnak tekinthetők a „vanilla” CentOS Raspberry Pi-re történő telepítéséhez. Olyan számítógépet kell készítenie, amely kevesebb, mint 10 másodperc alatt (újra) indul el, kevesebb mint 15 megabájt RAM-ot és 1.5 gigabájt microSD-t használ (valójában kevesebb, mint 1 gigabájt a hiányos /indítás miatt, de legyünk őszinték).
Ha Wi-Fi hozzáférési pont szoftvert szeretne telepíteni erre a rendszerre, kissé ki kell bővítenie a szabványos CentOS disztribúció képességeit. Először is frissítsük a beépített Wi-Fi adapter illesztőprogramját (firmware-ét). A projekt honlapja ezt írja:
Wifi a Raspberry 3B és 3B+ készülékeken
A Raspberry PI 3B/3B+ firmware-fájlokat a CentOS Project nem terjesztheti. A következő cikkek segítségével megértheti a problémát, beszerezheti a firmware-t és beállíthatja a wifit.
Ami a CentOS projekt számára tilos, az nem tilos számunkra személyes használatra. Lecseréljük a terjesztési Wi-Fi firmware-t a CentOS-ben a Broadcom fejlesztőitől származó megfelelőre (ugyanazok az utált bináris blobok...). Ez különösen lehetővé teszi az AC használatát hozzáférési pont módban.
Wi-Fi firmware frissítésIsmerje meg az eszköz modelljét és a firmware aktuális verzióját:
# 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
Látjuk, hogy a firmware-verzió 7.45.18, 01.03.2015., és emlékezzünk a következő számokra: 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
A létrejövő Wi-Fi adapter firmware fájljait át kell másolni, és le kell cserélni a „raspberry”-re a könyvtárba /usr/lib/firmware/brcm/
Újraindítjuk a leendő routert, és elégedetten mosolyogunk:
# 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
Verzió: 7.45.154, 27.02.2018.
És persze 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. Hálózati konfiguráció és az előttünk álló kihívások
Ahogy fentebb megállapodtunk, a „málna” „vezetéken” csatlakozik a helyi hálózathoz. Tételezzük fel, hogy a szolgáltató pontosan ugyanúgy biztosítja az Internet hozzáférést: a nyilvános hálózaton a címet dinamikusan adja ki a DHCP szerver (talán MAC-kötéssel). Ebben az esetben a málna végleges beállítása után csak „be kell dugni” a szolgáltató kábelét, és kész. Engedélyezés segítségével systemd-networkd - egy külön cikk témája, és itt nem tárgyaljuk.
A Raspberry Wi-Fi interfésze(i) helyi hálózat, a beépített Ethernet adapter (eth0) pedig külső. Számoljuk statikusan a helyi hálózatot, például: 192.168.0.0/24. Málna cím: 192.168.0.1. A külső hálózaton (Internet) egy DHCP szerver fog működni.
Párhuzamos káosz (lírai kitérő)Lennart Pottering saját programot állított össze systemd Nagyon jó. Ez systemd olyan gyorsan indít más programokat, hogy nem marad idejük kiheverni a játékvezető sípját, az elején megbotlik és elesik anélkül, hogy az akadálypályájukat megkezdenék.
De komolyan, az elindított folyamatok agresszív párhuzamosítása a rendszeres operációs rendszer kezdetén egyfajta „szamárhíd” a tapasztalt szekvenciális LSB-specialisták számára. Szerencsére rendet teremteni ebben a „párhuzamos káoszban” egyszerűnek bizonyul, bár nem mindig nyilvánvaló.
Két virtuális híd interfészt hozunk létre állandó névvel: lan и halvány. Az elsőhöz „csatlakoztatjuk” a Wi-Fi adapter(eke)t, a másodikhoz pedig az eth0 „raspberry”-t.
/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=igen kiküszöböli a rendszermagnak a sysctl-n keresztüli utalását az útválasztás engedélyezéséhez.
MACAddress= Szüntessük meg a megjegyzéseket, és változtassunk, ha szükséges.
Először „csatlakoztassuk” az eth0-t. Emlékezzünk az „egyenletességi problémára”, és csak ennek az interfésznek a MAC-címét használjuk, amely például így tudható meg:
# cat /sys/class/net/eth0/address
Mi alkotunk /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Töröljük az előző eth0 konfigurációs fájlt, újraindítjuk a Raspberry-t, és hálózati hozzáférést kapunk hozzá (az IP-cím valószínűleg megváltozik):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
A Wi-Fi hozzáférési pontok létrehozásához semmi sem jobb, mint egy édes pár dnsmasq + hostapd még nem jött rá. Szerintem.
Ha valaki elfelejtette, akkor...
Kezdjük a dnsmasq-val:
# yum install dnsmasq
sablon / 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
szerkessze tetszés szerint.
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 „varázslat” itt a paraméterben rejlik kötés-dinamikus, amely azt mondja a dnsmasq démonnak, hogy várja meg, amíg megjelenik a rendszeren interface=lan, és ne ájuljon el a kezdés utáni büszke magány rohama.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
És végül a varázslatos hostapd konfigurációk. Nincs kétségem afelől, hogy valaki éppen ezeket a becses sorokat keresve olvassa ezt a cikket.
A hostapd telepítése előtt le kell küzdenie az „egységességi problémát”. A beépített Wi-Fi adapter wlan0 könnyen megváltoztathatja a nevét wlan1-re, ha további USB Wi-Fi eszközöket csatlakoztat. Ezért az interfészneveket a következő módon javítjuk: egyedi neveket találunk ki a (vezeték nélküli) adaptereknek, és azokat MAC-címekhez kötjük.
A beépített Wi-Fi adapter esetében, amely továbbra is wlan0:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Mi alkotunk /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
Most biztosak leszünk ebben wl0 - Ez a beépített Wi-Fi. Újraindítjuk a Raspberry-t, hogy megbizonyosodjunk erről.
Telepítés:
# yum install hostapd wireless-tools
Konfigurációs fájl /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
Egy pillanatra sem feledve
# hostapd /etc/hostapd/hostapd.conf
A hostapd interaktív módban indul, és közvetíti állapotát a konzolnak. Ha nincs hiba, akkor az AC módot támogató kliensek csatlakozhatnak a hozzáférési ponthoz. A hostapd leállításához - Ctrl-C.
Nincs más hátra, mint a hostapd engedélyezése a rendszer indításakor. Ha a szokásos dolgot csinálja (systemctl enable hostapd), akkor a következő újraindítás után egy démon „vérben gurul” a következő diagnózissal.A wl0 interfész nem található". A „párhuzamos káosz” eredményeként a hostapd gyorsabban indult el, mint ahogy a kernel megtalálta a vezeték nélküli adaptert.
Az internet tele van orvosságokkal: a démon indítása előtti kényszerített időtúllépéstől (néhány percig) egy másik démonig, amely figyeli a felület megjelenését és (újra)indítja a hostpadot. A megoldások egészen működőképesek, de rettentően rondák. A nagyot hívjuk segítségül systemd „céljaival” és „feladataival” és „függőségeivel”.
Másolja a terjesztési szolgáltatás fájlját ide /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
és csökkentse a tartalmát a következő formára:
[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 frissített szolgáltatásfájl varázsa a hostapd dinamikus összekapcsolásában rejlik az új célhoz - a wl0 interfészhez. Amikor megjelenik az interfész, a démon elindul, ha eltűnik, leáll. És mindez online – a rendszer újraindítása nélkül. Ez a technika különösen akkor lesz hasznos, ha USB Wi-Fi adaptert csatlakoztat egy Raspberryhez.
Most már tudod:
# systemctl enable hostapd
# reboot
7. IPTABLES
"Mi???" © Igen, igen! Egyik sem systemd. Nincsenek újszerű kombájnok (a formában firewalld), amelyek végül ugyanazt teszik.
Használjuk a régi jót iptables, amelynek szolgáltatásai az indítás után hálózati szabályokat töltenek be a kernelbe, és csendesen leállnak anélkül, hogy rezidensek maradnának és erőforrások fogyasztása nélkül. systemd rendelkezik egy elegáns IPMasquerade=, de a címfordítást (NAT) és a tűzfalat továbbra is az iptables-ra bízzuk.
Telepítés:
# yum install iptables-services
# systemctl enable iptables ip6tables
Inkább szkriptként tárolom az iptables konfigurációt (példa):
#!/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
Végrehajtjuk a fenti szkriptet, és elveszítjük az új vezetékes SSH-kapcsolatok létrehozását a Raspberry-vel. Így van, készítettünk egy Wi-Fi routert, amelyhez alapértelmezés szerint tilos az „interneten keresztül” hozzáférni – most már csak „éteren keresztül”. Csatlakoztatjuk a szolgáltató Ethernet kábelét és elkezdjük a szörfözést!
8. Bónusz: +2,4 GHz
Amikor a fent leírt rajz alapján összeállítottam az első Raspberry routert, számos olyan kütyüt fedeztem fel a háztartásomban, amelyek Wi-Fi tervezési korlátai miatt egyáltalán nem látták a „málnát”. A router újrakonfigurálása 802.11b/g/n-ben való működésre sportszerűtlen volt, mivel a maximális sebesség „átvetőn” ebben az esetben nem haladta meg a 40 Mbit-et, kedvenc internetszolgáltatóm pedig 100-at kínál (kábelen keresztül).
Valójában a probléma megoldását már feltalálták: egy második, 2,4 GHz-es frekvencián működő Wi-Fi interfészt és egy második hozzáférési pontot. Egy közeli bódéban megvettem nem az első, hanem a második USB Wi-Fi „sípot”, amivel találkoztam. Az eladót a lapkakészlettel, az ARM Linux kernelekkel való kompatibilitással és az AP módban való munkavégzés lehetőségével kapcsolatos kérdések gyötörték (ő indult el először).
A „sípot” a beépített Wi-Fi adapterrel analóg módon konfiguráljuk.
Először nevezzük át erre 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
Az új Wi-Fi interfész kezelését egy külön hostapd démonra bízzuk, amely egy szigorúan meghatározott „fütty” rendszerben való meglététől függően indul és áll le: wl1.
Konfigurációs fájl /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]
Ennek a fájlnak a tartalma közvetlenül függ az USB Wi-Fi adapter típusától, így előfordulhat, hogy a banális másolás/beillesztés sikertelen lesz.
Másolja a terjesztési szolgáltatás fájlját ide /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
és csökkentse a tartalmát a következő formára:
[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
Már csak a hostapd új példányának engedélyezése van hátra:
# systemctl enable hostapd2
Ez minden! Húzza meg a „sípot” és magát a „málnát”, nézze meg a körülöttünk lévő vezeték nélküli hálózatokat.
És végül szeretném figyelmeztetni az USB Wi-Fi adapter és a Raspberry tápegységének minőségére. A csatlakoztatott „forró síp” időnként „málnafagyást” okozhat rövid távú elektromos problémák miatt.
Forrás: will.com