NĂ« internet ka njĂ« sasi tĂ« madhe informacioni pĂ«r krijimin e pikave tĂ« qasjes Wi-Fi bazuar nĂ« kompjuterin njĂ«plakĂ« Raspberry. Zakonisht, nĂ«nkuptohet pĂ«rdorimi i sistemit operativ tĂ« lindur pĂ«r "malinkĂ«n" â Raspbian.
Si një adhurues i sistemeve të bazuara në RPM, nuk mund të kaloj pa e provuar këtë mrekulli të vogël me CentOS-në time të preferuar.
Ky artikull paraqet njĂ« udhĂ«zim pĂ«r ndĂ«rtimin e njĂ« router Wi-Fi 5GHz/AC nga Raspberry Pi 3 Model B+ me bazĂ« sistemin operativ CentOS. Do tĂ« ofrohen disa truke standarde, por tĂ« panjohura, dhe si bonus â njĂ« skemĂ« lidhjeje pĂ«r pajisje tĂ« tjera Wi-Fi, qĂ« e lejojnĂ« atĂ« tĂ« funksionojĂ« nĂ« disa mĂ«nyra njĂ«kohĂ«sisht (2.4+5GHz).

(mikse imazhesh nga burime të lira të qasjes)
Të theksojmë menjëherë se nuk do të arrini shpejtësi galaktike. Unë arrij maksimumi 100 Mbit nga "malinka" ime, dhe kjo mbulon shpejtësinë e ofruesit tim të internetit. Pse të keni një AC të tillë të ngadaltë, kur në teorinë N mund të merrni gjysmën e gigabitit? Nëse keni bërë këtë pyetje, shkoni në dyqan për një router të vërtetë me tetë antena të jashtme.
0. ĂfarĂ« do tĂ« nevojitet
- Realiteti, vetë "produktin malino" e kalibrit: Pi 3 Model B+ (për të arritur shpejtësitë dhe kanalet e dëshiruara 5GHz);
- Një microSD e mirë > = 4GB;
- Një stacion pune me Linux dhe një lexues/shkrues microSD;
- Të ketë aftësi të mjaftueshme në Linux, ky artikull është për Gikun e përgatitur;
- Një lidhje me tel (eth0) midis Raspberry dhe Linux, një server DHCP i punësuar në rrjetin lokal dhe qasje në internet nga të dy pajisjet.
NjĂ« koment i vogĂ«l pĂ«r pikĂ«n e fundit. "ĂfarĂ« doli e para, veza apo..." si tĂ« bĂ«jmĂ« njĂ« router Wi-Fi nĂ« mungesĂ« tĂ« çdo pajisje pĂ«r akses nĂ« internet? Ta lĂ«mĂ« kĂ«tĂ« ushtrim interesante jashtĂ« kufijve tĂ« artikullit dhe tĂ« supozomĂ« se Raspberry Ă«shtĂ« lidhur me rrjetin lokal me kabllo dhe ka qasje nĂ« internet. NĂ« kĂ«tĂ« rast, nuk do tĂ« na nevojitet edhe njĂ« televizor dhe njĂ« manovrues pĂ«r tĂ« konfiguruar "malinkĂ«n".
1. Instalimi i CentOS
NĂ« momentin e shkrimit tĂ« kĂ«tij artikulli, versioni funksional i CentOS nĂ« pajisje â Ă«shtĂ« 32-bit. Diku nĂ« hapĂ«sirat e internetit kam hasur mendime pĂ«r uljen e performancĂ«s sĂ« kĂ«tyre OS-ve nĂ« arkitekturĂ«n 64-bit ARM deri nĂ« 20%. Do ta lĂ« kĂ«tĂ« çështje pa koment.
Në Linux, shkarkojmë imazhin minimal me bërthamën "-RaspberryPI-" dhe e regjistroni atë në microSD:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Para fillimit tĂ« pĂ«rdorimit tĂ« imazhit, hiqni nga ai ndarjen SWAP, zgjatni rrĂ«njĂ«n nĂ« tĂ« gjithĂ« kapacitetin nĂ« dispozicion dhe hiqni SELinux. Algoritmi â i thjeshtĂ«: bĂ«ni njĂ« kopje tĂ« rrĂ«njĂ«s nĂ« Linux, hiqni tĂ« gjitha ndarjet nga microSD me pĂ«rjashtim tĂ« asaj tĂ« parĂ« (/boot), krijoni njĂ« rrĂ«njĂ« tĂ« re dhe kthejeni pĂ«rmbajtjen e saj nga kopja.
Një shembull veprimesh të nevojshme (dalje e ashpër nga console)
# 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
Pas nxjerrjes së përmbajtjes nga ndarja e rrënjës është koha për të bërë disa ndryshime.
Ăaktivizoni SELinux nĂ« /mnt/etc/selinux/config:
SELINUX=disabled
Editoni /mnt/etc/fstab, duke lënë aty vetëm dy regjistrime për ndarjet: ngarkuese (/boot, pa ndryshime) dhe rrënjore (ndryshoni vlerën UUID, e cila mund të krijohet duke shqyrtuar daljen e komandës blkid në Linux):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Në fund, ndryshoni parametrat e ngarkesës së bërthamës: tregoni vendndodhjen e re të ndarjes rrënjore, çaktivizoni daljen e informacionit të debagimit dhe (opsionale) ndaloni bërthamën të alokojë adresa IPv6 në ndërfaqet e rrjetit:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Formoni përmbajtjen /mnt/cmdline.txt në aspektin e mëposhtëm (një rresht pa kthyesh rresht):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Gati:
# cd
# umount /mnt
# sync
Ribëni microSD në "malinka", niseni dhe merrni qasje në rrjet përmes ssh (root/centos).
2. Konfigurimi i CentOS
Të tri lëvizjet e patjetërsueshme: passwd, yum -y update, rikthim.
Dorëzojmë menaxhimin e rrjetit networkd:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Krijoni një skedar (së bashku me katalogët) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
Rinisni "malinkën" dhe merrni përsëri qasje në rrjet përmes ssh (IP-adresa mund të ndryshojë). Vini re se po përdoret /etc/resolv.conf, krijuar më parë nga Menaxher-i i Rrjetit. Prandaj, në rast se ka probleme me zgjidhjen, redaktoni përmbajtjen e tij. Nuk do ta përdorim systemd-resolved .
Hiqni "të tepërta", rregulloni dhe përshpejtoni ngarkesën e OS-së:
# 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
Kush e ka nevojën cron dhe kush nuk e përtyp dot , mund të instaloni të munguarit. /var/log-dhe shikoni përmes journalctl. Nëse nevojitet historia e regjistrit (për të cilën për shkak të parazgjedhjes ruhen vetëm informacionet nga fillimi i sistemit):
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Ăaktivizoni pĂ«rdorimin e IPv6 nga shĂ«rbimet kryesore (nĂ«se Ă«shtĂ« e nevojshme)/etc/ssh/sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
Aktualiteti i kohĂ«s nĂ« "malinka" Ă«shtĂ« njĂ« gjĂ« e rĂ«ndĂ«sishme. Duke qenĂ« se "nga kutia" mungon mundĂ«sia harduerike pĂ«r tĂ« ruajtur gjendjen aktuale tĂ« orĂ«s gjatĂ« rinisjes, ne kemi nevojĂ« pĂ«r sinkronizim. NjĂ« demon shumĂ« i mirĂ« dhe i shpejtĂ« pĂ«r kĂ«tĂ« Ă«shtĂ« chrony â Ă«shtĂ« tashmĂ« i instaluar dhe aktivizohet automatikisht. Mund tĂ« ndryshoni serverĂ«t NTP nĂ« ato mĂ« afĂ«r.
/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
Për të vendosur zonën kohore do të përdorim një truk. Duke pasur parasysh se qëllimi ynë është ndërtimi i një router Wi-Fi që punon në frekuencat 5GHz, le të përgatitemi për surprizat e rregullatorit:
# yum info crda
Përmbledhje: Daemon për përputhje me rregullat për rrjetin wireless 802.11
Kjo strukturë armiqësore, duke marrë parasysh gjithashtu zonën kohore, "ndalon" përdorimin (në Rusi) të frekuencave 5GHz dhe kanaleve me numra "të mëdhenj". Truku qëndron në vendosjen e zonës kohore pa përdorur emrat e kontinenteve/ qyteteve, që do të thotë në vend të:
# timedatectl set-timezone Europe/Moscow
Shtypim:
# timedatectl set-timezone Etc/GMT-3
Dhe goditjet e fundit në ndriçimin e sistemit:
# hostnamectl set-hostname router
/root/.bash_profile:
. . .
# Mjedisi i veçantë për përdoruesit dhe programet e fillimit
export PROMPT_COMMAND="vcgencmd measure_temp"
export LANG=en_US.UTF-8
export PATH=$PATH:$HOME/bin
3. Shtesat për CentOS
Të gjitha që është thënë më lart mund të konsiderohet si një udhëzues për instalimin e CentOS "të pastër" në Raspberry Pi. Duhet të krijoni një PC që (ri)startohet për më pak se 10 sekonda, përdor më pak se 15 Megabajt RAM dhe 1.5 Gigabajt microSD (në të vërtetë më pak se 1 Gigabajt për shkak të /boot të pamjaftueshme, por le të jemi të sinqertë deri në fund).
Për të instaluar softuerin për pikën e qasjes Wi-Fi në këtë sistem, do të kërkohet të zgjeroni disi mundësitë e distribucionit standard CentOS. Para së gjithash, "do të përmirësojmë" driver-in (firmware) të adaptorit të integruar Wi-Fi. Në faqen kryesore të projektit thuhet:
Wifi në Raspberry 3B dhe 3B+
Skedarët e firmware për Raspberry PI 3B/3B+ nuk lejohen të shpërndahen nga Projekti CentOS. Mund të përdorni artikujt e mëposhtëm për të kuptuar problemin, për të marrë firmware dhe për të vendosur wifi.
ĂfarĂ« nuk Ă«shtĂ« e lejuar pĂ«r projektin CentOS, nuk Ă«shtĂ« e ndaluar pĂ«r ne pĂ«r pĂ«rdorim personal. ZĂ«vendĂ«sojmĂ« firmware-in distribuues tĂ« Wi-Fi nĂ« CentOS me atĂ« tĂ« zhvilluesve Broadcom (ato tĂ« tmerrshmet binarĂ«tâŠ). Kjo, nĂ« veçanti, do t'i japĂ« mundĂ«sinĂ« pĂ«rdorimit AC nĂ« modin pika qasje.
Përmirësimi i firmware të Wi-FiKurioziteti mbi modelin e pajisjes dhe versionin aktual të firmware:
# 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
Shohim se firmware ka versionin 7.45.18 nga 01.03.2015, dhe mbajmë mend numrin e mëposhtëm: 43455 (brcmfmac43455-sdio.bin).
. Ata që nuk dëshirojnë të bëjnë punë mund ta regjistrojnë imazhin në microSD dhe të marrin skedarët e firmware-at aty. Ose mund ta montoni pjesën e rrënjës së imazhit në Linux dhe të kopjoni atë që nevojitet nga aty:
# 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
Skedarët e marrë të firmware të adaptorit Wi-Fi duhet të kopjohen me zëvendësim në "mal për" në katalogun /usr/lib/firmware/brcm/
Rinisim router-in e ardhshëm dhe buzëqeshim:
# 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
Versioni: 7.45.154 nga 27.02.2018.
Sigurisht dhe 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. Konfigurimi i rrjetit dhe vështirësitë që do të hasim
Siç u pajtuam mĂ« lart, "mal pĂ«r" Ă«shtĂ« lidhur "me kabllo" nĂ« rrjetin lokal. Le tĂ« supozojmĂ« se edhe ofruesi ofron akses nĂ« Internet nĂ« tĂ« njĂ«jtĂ«n mĂ«nyrĂ«: adresa nĂ« rrjetin publik jepet dinamikisht nga serveri DHCP (mund tĂ« ketĂ« lidhje me MAC). NĂ« kĂ«tĂ« rast, pas pĂ«rfundimit tĂ« konfigurimit tĂ« "mal pĂ«r", mjafton tĂ« "vendosni" kabllon e ofruesit nĂ« tĂ« dhe gjithçka Ă«shtĂ« gati. Autorizimi me ndihmĂ«n e systemd-networkd â Ă«shtĂ« njĂ« temĂ« tjetĂ«r dhe kĂ«tu nuk diskutohet.
Wi-Fi ndĂ«rfaqet e Raspberry â kjo Ă«shtĂ« rrjeti lokal, ndĂ«rsa adaptori Ethernet i integruar (eth0) â Ă«shtĂ« e jashtme. Le tĂ« numĂ«rojmĂ« rrjetin lokal statikisht, pĂ«r shembull: 192.168.0.0/24. Adresa e "mal pĂ«r": 192.168.0.1. NĂ« rrjetin e jashtĂ«m (Internet) do tĂ« funksionojĂ« serveri DHCP.
dhe â dy shqetĂ«sime qĂ« presin çdo njeri qĂ« merret me konfigurimin e ndĂ«rfaqeve rrjetĂ«sore dhe shĂ«rbimeve nĂ« distribuitĂ« tĂ« systemd.
Kaosi paralel (një shkëputje letrare)Lennart Pottering ka krijuar programin e tij systemd shumë mirë. Kjo systemd fillon programe të tjera aq shpejt, sa ato, pa e kuptuar ende nga shpejtësia e gjykatës, shkelin dhe bien në start edhe pa filluar garimin e tyre me pengesa.
Por nëse flasim seriozisht, paralelizimi agresiv i proceseve të nisura gjatë startit të sistemit me systemd është një lloj "urë të gomarit" për LSB-ujt e njohur. Për fat të mirë, të vendosësh rregull në këtë "kaos paralel" rezulton të jetë një punë e thjeshtë, për të cilën nuk është gjithmonë e dukshme.
KrijojmĂ« dy ndĂ«rfaqe virtuale bridge me emra tĂ« pĂ«rhershĂ«m: lan dhe wan. NĂ« tĂ« parin "do tĂ« lidhemi" me adaptorin Wi-Fi, ndĂ«rsa nĂ« tĂ« dytin â eth0 "mal pĂ«r".
/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=yes shkëput nevojën për të treguar përmes sysctl bërthamën për të aktivizuar ruterimin.
MACAddress= do ta heqim komentimin dhe ta ndryshojmë nëse është e nevojshme.
Fillimisht "lidheni" eth0. Kujtojmë "problem e njëtrajtshmërisë" dhe përdorim vetëm adresën MAC të këtij interfaci, e cila mund të zbulohet, për shembull, kështu:
# cat /sys/class/net/eth0/address
Krijojmë /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Heqimë skedarin e konfigurimit të mëparshëm eth0, rihapim "malinkën" dhe fitojmë qasje në rrjet (IP adresa me shumë mundësi do të ndryshojë):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5. DNSMASQ
Për krijimin e pikave të qasjes Wi-Fi nuk ka asgjë më të mirë se çifti i ëmbël nga dnsmasq + hostapd nuk është gjetur ende. Sipas mendimit tim.
NĂ«se dikush e ka harruar, atĂ«herë⊠â Ă«shtĂ« gjĂ«ja qĂ« menaxhon adapterĂ«t Wi-Fi (nĂ« veçanti, do tĂ« marrĂ« pĂ«rsipĂ«r punĂ«n pĂ«r t'i lidhur ata me virtualen lan "malinkĂ«s"), autorizon dhe regjistron klientĂ«t e pa kabllor.
â konfiguron rrjetin e klientĂ«ve: jep IP adresat, serverĂ«t DNS, portin standard dhe gjĂ«ra tĂ« tjera tĂ« ngjashme.
Fillojmë me dnsmasq:
# yum install dnsmasq
Shablloni /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
e redaktojmë sipas dëshirës sonë.
Minimalist /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
Këtu "magjia" qëndron në parametrin bind-dynamic, që tregon demonit dnsmasq të presë deri në shfaqjen në sistemin interface=lan, e jo të bjerë në gjumë nga krenaria e vetmërisë pas startit.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
Dhe për fund, konfigurimet magjike të hostapd. Nuk dyshoj se dikush po e lexon këtë artikull në kërkim të këtyre rreshtave të shenjëzuar.
Para se të instalojmë hostapd, duhet të përballim "problemin e uniformitetit". Adapteri i integruar Wi-Fi wlan0 mund të ndryshojë lehtësisht emrin e tij në wlan1 gjatë lidhjes së pajisjeve të tjera USB Wi-Fi. Prandaj, do t'i ngulisim emrat e interface-ve në këtë mënyrë: t'i japim adapterëve (pa kabllor) emra unikë dhe t'i lidhim me adresat MAC.
Për adapterin e integruar Wi-Fi, i cili ende është wlan0:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Krijojmë /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
Tani do tĂ« jemi tĂ« sigurt se wl0 â Ă«shtĂ« Wi-Fi i integruar. Rihapim "malinkĂ«n" pĂ«r t'u siguruar rreth kĂ«saj.
Instalojmë:
# yum install hostapd wireless-tools
Skedari i konfigurimit /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
Asnjëherë mos harrojmë për , modifikojmë parametrat e nevojshëm dhe kontrollojmë manualisht për funksionim:
# hostapd /etc/hostapd/hostapd.conf
hostapd do tĂ« niste nĂ« mĂ«nyrĂ« interaktive, duke transmetuar nĂ« konsolĂ«n gjendjen e tij. NĂ«se nuk ka gabime, atĂ«herĂ« klientĂ«t qĂ« mbĂ«shtesin modin AC do tĂ« mund tĂ« lidhen me pikĂ«n e qasjes. PĂ«r tĂ« ndaluar hostapd â Ctrl-C.
Mbetet të aktivizojmë hostapd në ngarkesën e sistemit.Nëse veprojmë standardisht (systemctl enable hostapd), atëherë pas një rihapjeje tjetër mund të përfundojmë me një demon "të shtrirë në gjak" me diagnostikimin "interface wl0 nuk u gjet". Si rezultat i "kaosit paralel" hostapd filloi më shpejt se sa kernel gjeti adapterin pa kabllo.
Ka shumë receta në internet: nga një vonesë e detyruar para nisjes së demonit (për një periudhë kohe), deri tek një demon tjetër që monitoron shfaqjen e interface-it dhe (rindërton) hostapd. Zgjidhjet janë mjaft funksionale, por shumë të shëmtuara. Thërrasim ndihmën e madhështi systemd me "qëllimet" dhe "detyrat" e tij "vartësitë".
Kopjojmë skedarin e shërbimit të shpërndarjes në /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
dhe e përshtatim përmbajtjen e tij në këtë 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
Magjia e skedarit tĂ« pĂ«rditĂ«suar tĂ« shĂ«rbimit qĂ«ndron nĂ« lidhjen dinamike tĂ« hostapd me objektivin e ri â interface-in wl0. Kur interface-i shfaqet â demoni startohet, kur ai zhduket â ndalet. Dhe kjo ndodh online â pa e rinisur sistemin. Kjo teknikĂ« do tĂ« jetĂ« veçanĂ«risht e dobishme kur lidhemi me "malinkĂ«n" njĂ« adapter USB Wi-Fi.
Tani mund ta bëjmë:
# systemctl enable hostapd
# reboot
7. IPTABLES
"ĂfarĂ«???" © Po, po! AsnjĂ« systemd. AsnjĂ« pajisje moderne (nĂ« formĂ«n e firewalld), e cila pĂ«rfundimisht bĂ«n tĂ« njĂ«jtĂ«n gjĂ«.
Përdorim të mirin e vjetër iptables, shërbimi i të cilit pas startit të tij do të ngarkojë rregullat e rrjetit në kernel dhe do të mbyllë punën e tij pa mbetur rezident dhe pa konsumuar burime. Systemd ka një elegant IPMasquerade=, por përkthimin e adresave (NAT) dhe firewall-in do t'i besojmë iptables.
Instalojmë:
# yum install iptables-services
# systemctl enable iptables ip6tables
Unë preferoj të ruaj konfiguracionin e iptables në formën e një skripti (shembull):
#!/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
KryejmĂ« skriptin e mĂ«sipĂ«rm dhe humbasim mundĂ«sinĂ« pĂ«r tĂ« vendosur lidhje tĂ« reja ssh me "malinkĂ«n". E gjitha Ă«shtĂ« e saktĂ«, kemi krijuar njĂ« router Wi-Fi, aksesin nĂ« tĂ« cilin "nĂ«pĂ«rmjet Internetit" Ă«shtĂ« nĂ« parazgjedhje i ndaluar â tani vetĂ«m "nĂ« ajĂ«r". Lidhim kabllon e ofruesit nĂ« Ethernet dhe fillojmĂ« tĂ« shfletojmĂ«!
8. Bonusi: +2,4GHz
Kur po përshkrimin e mësipërm unë grita router-in e parë Raspberry, pashë që kisha disa pajisje që, për shkak të kufizimeve të tyre konstruktuese, nuk mundën të shihnin "mali" fare përmes Wi-Fi. Të rregulloja router-in për të punuar në 802.11b/g/n nuk ishte sportiv, pasi shpejtësia maksimale "në ajër" në këtë rast nuk e kalonte 40 Mbit, ndërsa ofruesi im i internetit të preferuar më ofron 100 (në kabllo).
Në të vërtetë, zgjidhja e problemit ishte tashmë e menduar: një ndërfaqe Wi-Fi e dytë që punon në frekuencën 2.4GHz dhe një pikë qasje e dytë. Në dyqanin më të afërt bleva një USB Wi-Fi "dongle" që ishte i dyti që më ra në sy. Shitësi u torturua me pyetje në lidhje me çipin, përputhshmërinë me bërthamën ARM të Linux dhe mundësinë e funksionimit në modin AP (ai e filloi).
E konfiguroni "dongle-n" në përputhje me adaptorin Wi-Fi të integruar.
Së pari - ta rregullojmë atë në 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
Të menaxhojmë ndërfaqen e re Wi-Fi do t'ia japim një demoni të veçantë hostapd, i cili do të niset dhe ndalet në varësi të pranisë në sistem të "dongle-it" të përcaktuar: wl1.
Skedari i konfigurimit /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]
Përmbajtja e këtij skedari varet drejtpërdrejt nga modeli i adaptores Wi-Fi USB, prandaj një copy/paste i thjeshtë mund t'ju thyejë.
Kopjojmë skedarin e shërbimit të shpërndarjes në /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
dhe e përshtatim përmbajtjen e tij në këtë 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
Nuk mbetet gjë tjetër veçse të aktivizoni instancën e re të hostapd:
# systemctl enable hostapd2
Kjo është e gjithë! Tundni "dongle-n" dhe vetë "mali", shikoni lidhjet wireless përreth.
Dhe përfundimisht, dua të paralajmëroj për cilësinë e adaptores USB Wi-Fi dhe furnizimin me energji të Raspberry. Të lidhur "në nxehtë", ndonjëherë mund të shkaktojë "ngrirje të mali" për shkak të çështjeve të përkohshme elektrike.
Burimi: habr.com
