InternetÄ ir milzÄ«gs daudzums informÄcijas par Wi-Fi piekļuves punktu izveidi, pamatojoties uz Raspberry viena plates datoru. Parasti tas nozÄ«mÄ Raspberry operÄtÄjsistÄmas izmantoÅ”anu.
TÄ kÄ es esmu uz RPM balstÄ«tu sistÄmu piekritÄjs, es nevarÄju nepaiet garÄm Å”im mazajam brÄ«numam un neizmÄÄ£inÄt tajÄ savu mīļo CentOS.
RakstÄ sniegti norÄdÄ«jumi par 5 GHz/AC Wi-Fi marÅ”rutÄtÄja izveidi no Raspberry Pi 3 Model B+, pamatojoties uz CentOS operÄtÄjsistÄmu. BÅ«s vairÄki standarta, bet maz zinÄmi triki un kÄ bonuss - zÄ«mÄjums papildu Wi-Fi tehnikas pieslÄgÅ”anai Raspberry, ļaujot tai vienlaicÄ«gi darboties vairÄkos režīmos (2,4+5GHz).
(brÄ«vi pieejamu attÄlu sajaukums)
TÅ«lÄ«t atzÄ«mÄsim, ka daži kosmiskie Ätrumi nedarbosies. Es no sava Raspberry pa gaisu izspiežu maksimÄli 100 Mb/s, un tas aptver mana interneta pakalpojumu sniedzÄja Ätrumu. KÄpÄc vajag tik gausu maiÅstrÄvu, ja teorÄtiski var dabÅ«t pusgigabitu pat uz N? Ja esi sev uzdevis Å”o jautÄjumu, tad dodies uz veikalu, lai iegÄdÄtos Ä«stu rÅ«teri ar astoÅÄm ÄrÄjÄm antenÄm.
0. Kas jums būs nepiecieŔams
- PatiesÄ«bÄ pats āaveÅu produktsā ir tÄda kalibra: Pi 3 Model B+ (lai sasniegtu kÄroto 5GHz Ätrumu un kanÄlus);
- Labs microSD >= 4GB;
- Darbstacija ar Linux un microSD lasÄ«tÄju/rakstÄ«tÄju;
- Pietiekamu prasmju pieejamÄ«ba operÄtÄjsistÄmÄ Linux, raksts ir paredzÄts apmÄcÄ«tam Geek;
- Vadu tÄ«kla (eth0) savienojums starp Raspberry un Linux, darbojas DHCP serveris lokÄlajÄ tÄ«klÄ un piekļuve internetam no abÄm ierÄ«cÄm.
Neliels komentÄrs par pÄdÄjo punktu. āKas bija pirmais, ola vai...ā kÄ izveidot Wi-Fi marÅ”rutÄtÄju, ja nav interneta piekļuves aprÄ«kojuma? AtstÄsim Å”o izklaidÄjoÅ”o uzdevumu Ärpus raksta darbÄ«bas jomas un vienkÄrÅ”i pieÅemsim, ka Raspberry ir savienots ar vietÄjo tÄ«klu, izmantojot vadu, un tam ir piekļuve internetam. Å ajÄ gadÄ«jumÄ mums nebÅ«s nepiecieÅ”ams papildu televizors un manipulators, lai iestatÄ«tu āaveÅuā.
1. InstalÄjiet CentOS
Rakstot Å”o rakstu, CentOS versija ierÄ«cÄ ir 32 bitu versija. Kaut kur globÄlajÄ tÄ«meklÄ« saskÄros ar viedokļiem, ka Å”Ädu OS veiktspÄja 64 bitu ARM arhitektÅ«rÄ ir samazinÄta pat par 20%. Å o brÄ«di atstÄÅ”u bez komentÄriem.
OperÄtÄjsistÄmÄ Linux lejupielÄdÄjiet minimÄlo attÄlu ar kodolu "-RaspberryPI-un ierakstiet to microSD:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Pirms attÄla izmantoÅ”anas mÄs noÅemsim no tÄ SWAP nodalÄ«jumu, paplaÅ”inÄsim sakni lÄ«dz visam pieejamajam apjomam un atbrÄ«vosimies no SELinux. Algoritms ir vienkÄrÅ”s: izveidojiet saknes kopiju operÄtÄjsistÄmÄ Linux, izdzÄsiet visus nodalÄ«jumus no microSD, izÅemot pirmo (/boot), izveidojiet jaunu sakni un atgrieziet tÄs saturu no kopijas.
NepiecieÅ”amo darbÄ«bu piemÄrs (smaga konsoles izvade)
# 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
PÄc saknes nodalÄ«juma satura izpakoÅ”anas ir pienÄcis laiks tajÄ veikt dažas izmaiÅas.
AtspÄjot SELinux in /mnt/etc/selinux/config:
SELINUX=disabled
RediÄ£ÄÅ”ana /mnt/etc/fstab, atstÄjot tajÄ tikai divus ierakstus par nodalÄ«jumiem: boot (/boot, bez izmaiÅÄm) un root (mÄs mainÄm UUID vÄrtÄ«bu, ko var uzzinÄt, izpÄtot komandas blkid izvadi operÄtÄjsistÄmÄ Linux):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Visbeidzot, mÄs mainÄm kodola sÄknÄÅ”anas parametrus: mÄs norÄdÄm jaunu vietu saknes nodalÄ«jumam, atspÄjojam atkļūdoÅ”anas informÄcijas izvadi un (pÄc izvÄles) aizliedzam kodolam pieŔķirt IPv6 adreses tÄ«kla saskarnÄs:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Å eit ir saturs /mnt/cmdline.txt uz Å”Ädu formu (viena rinda bez defisÄm):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Gatavs:
# cd
# umount /mnt
# sync
MÄs pÄrkÄrtojam microSD uz āaveÅuā, palaižam to un iegÅ«stam piekļuvi tÄ«klam, izmantojot ssh (root/centos).
2. CentOS iestatīŔana
PirmÄs trÄ«s nesatricinÄmÄs kustÄ«bas: passwd, yum -y atjauninÄjums, atsÄknÄÅ”ana.
MÄs dÄvinÄm tÄ«kla pÄrvaldÄ«bu tÄ«klÄ:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Izveidojiet failu (kopÄ ar direktorijiem) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
MÄs pÄrstartÄjam āaveÅuā un atkal iegÅ«stam piekļuvi tÄ«klam, izmantojot ssh (IP adrese var mainÄ«ties). PievÄrsiet uzmanÄ«bu tam, kas tiek izmantots / Etc / resolv.conf, ko agrÄk izveidoja tÄ«kla pÄrvaldnieks. TÄpÄc, ja rodas problÄmas ar risinÄjumu, rediÄ£Äjiet tÄ saturu. Izmantot systemd atrisinÄts mÄs to nedarÄ«sim.
MÄs noÅemam ānevajadzÄ«goā, salabojam un paÄtrinÄm OS ielÄdi:
# 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
Kam vajag cron un kurÅ” nesagremo iebÅ«vÄto
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
AtspÄjot IPv6 izmantoÅ”anu pamatpakalpojumos (ja nepiecieÅ”ams)/ etc / ssh / sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
Laika atbilstÄ«ba āavenÄmā ir svarÄ«ga lieta. TÄ kÄ aparatÅ«ra nevar saglabÄt paÅ”reizÄjo pulksteÅa stÄvokli pÄc atkÄrtotas palaiÅ”anas, ir nepiecieÅ”ama sinhronizÄcija. Tam ir ļoti labs un Ätrs dÄmons hronija - jau instalÄts un sÄkas automÄtiski. JÅ«s varat nomainÄ«t NTP serverus uz tuvÄkajiem.
/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
Lai iestatÄ«tu laika joslu, ko izmantosim triks. TÄ kÄ mÅ«su mÄrÄ·is ir izveidot Wi-Fi rÅ«teri, kas darbotos 5GHz frekvencÄs, tad jau iepriekÅ” gatavosimies pÄrsteigumiem regulators:
# yum info cda
Kopsavilkums: RegulÄjuma atbilstÄ«bas dÄmons 802.11 bezvadu tÄ«klam
Å is ļaunais dizains, kas balstÄ«ts arÄ« uz laika joslu, āaizliedzā izmantot (KrievijÄ) 5 GHz frekvences un kanÄlus ar āaugstiemā numuriem. Triks ir iestatÄ«t laika joslu, neizmantojot kontinentu/pilsÄtu nosaukumus, tas ir, nevis:
# timedatectl set-timezone Europe/Moscow
MÄs nospiežam:
# timedatectl set-timezone Etc/GMT-3
Un pÄdÄjais pieskÄriens sistÄmas frizÅ«rai:
# 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 papildinÄjumi
Visu, kas tika teikts iepriekÅ”, var uzskatÄ«t par pilnÄ«giem norÄdÄ«jumiem par āvaniļasā CentOS instalÄÅ”anu Raspberry Pi. Jums vajadzÄtu nonÄkt pie datora, kas (atkÄrtoti) sÄk darboties mazÄk nekÄ 10 sekundÄs, izmanto mazÄk nekÄ 15 megabaitus RAM un 1.5 gigabaitus microSD (faktiski mazÄk nekÄ 1 gigabaitu nepilnÄ«gas/sÄknÄÅ”anas dÄļ, taÄu bÅ«sim godÄ«gi).
Lai Å”ajÄ sistÄmÄ instalÄtu Wi-Fi piekļuves punkta programmatÅ«ru, jums bÅ«s nedaudz jÄpaplaÅ”ina standarta CentOS izplatÄ«Å”anas iespÄjas. PirmkÄrt, jauninÄsim iebÅ«vÄtÄ Wi-Fi adaptera draiveri (programmaparatÅ«ru). Projekta mÄjaslapÄ teikts:
Wi-Fi uz Raspberry 3B un 3B+
CentOS projekts nedrÄ«kst izplatÄ«t Raspberry PI 3B/3B+ programmaparatÅ«ras failus. Varat izmantot tÄlÄk norÄdÄ«tos rakstus, lai izprastu problÄmu, iegÅ«tu programmaparatÅ«ru un iestatÄ«tu wifi.
Tas, kas ir aizliegts CentOS projektam, mums nav aizliegts personÄ«gai lietoÅ”anai. MÄs aizstÄjam izplatÄ«Å”anas Wi-Fi programmaparatÅ«ru CentOS ar atbilstoÅ”o Broadcom izstrÄdÄtÄju (tÄs paÅ”as ienÄ«stÄs binÄrÄs lÄses...). Tas jo Ä«paÅ”i ļaus jums izmantot maiÅstrÄvu piekļuves punkta režīmÄ.
Wi-Fi programmaparatÅ«ras jauninÄjumsUzziniet ierÄ«ces modeli un paÅ”reizÄjo programmaparatÅ«ras versiju:
# 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
MÄs redzam, ka programmaparatÅ«ras versija ir 7.45.18, datÄta ar 01.03.2015/XNUMX/XNUMX, un atceramies Å”Ädu skaitļu kopu: 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
IegÅ«tie Wi-Fi adaptera programmaparatÅ«ras faili ir jÄkopÄ un jÄaizstÄj ar āaveÅuā direktorijÄ /usr/lib/firmware/brcm/
MÄs pÄrstartÄjam topoÅ”o marÅ”rutÄtÄju un apmierinÄti pasmaidÄm:
# 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
Versija: 7.45.154, datÄta ar 27.02.2018.
Un, protams, 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. TÄ«kla konfigurÄcija un priekÅ”Ä stÄvoÅ”ie izaicinÄjumi
KÄ mÄs vienojÄmies iepriekÅ”, "aveÅu" ir savienots ar "vadu" ar vietÄjo tÄ«klu. PieÅemsim, ka pakalpojumu sniedzÄjs nodroÅ”ina piekļuvi internetam tieÅ”i tÄdÄ paÅ”Ä veidÄ: adresi publiskajÄ tÄ«klÄ dinamiski izsniedz DHCP serveris (varbÅ«t ar MAC saistÄ«Å”anu). Å ajÄ gadÄ«jumÄ pÄc aveÅu galÄ«gÄs iestatÄ«Å”anas jums vienkÄrÅ”i ir "jÄpievieno" pakalpojumu sniedzÄja kabelis, un tas ir izdarÄ«ts. AutorizÄcija, izmantojot systemd-networkd - atseviŔķa raksta tÄma un Å”eit netiek apspriesta.
Raspberry Wi-Fi saskarne(-es) ir lokÄlais tÄ«kls, un iebÅ«vÄtais Ethernet adapteris (eth0) ir ÄrÄjs. VietÄjo tÄ«klu numurÄsim statiski, piemÄram: 192.168.0.0/24. AveÅu adrese: 192.168.0.1. DHCP serveris darbosies ÄrÄjÄ tÄ«klÄ (internetÄ).
ParalÄls haoss (liriska atkÄpe)Lennarts Poterings ir sastÄdÄ«jis savu programmu systemd Ä»oti labi. Å is systemd palaiž citas programmas tik Ätri, ka viÅi, nepaspÄjot atgÅ«ties pÄc tiesneÅ”a svilpes sitiena, startÄ paklÅ«p un nokrÄ«t, pat nesÄkot ŔķÄrŔļu joslu.
Bet ja nopietni, tad agresÄ«vÄ uzsÄkto procesu paralÄlizÄÅ”ana sistÄmiskÄs OS sÄkumÄ ir sava veida āÄzeļa tiltsā pieredzÄjuÅ”iem secÄ«giem LSB speciÄlistiem. Par laimi, sakÄrtot Å”o āparalÄlo haosuā izrÄdÄs vienkÄrÅ”i, kaut arÄ« ne vienmÄr acÄ«mredzami.
MÄs izveidojam divas virtuÄlÄ tilta saskarnes ar nemainÄ«giem nosaukumiem: lan Šø bÄls. MÄs āsavienosimā Wi-Fi adapteri(-us) ar pirmo, bet eth0 āaveÅuā ar otro.
/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=jÄ novÄrÅ” nepiecieÅ”amÄ«bu sniegt mÄjienu kodolam, izmantojot sysctl, lai iespÄjotu marÅ”rutÄÅ”anu.
MACAdrese = Atteiksim komentÄrus un mainÄ«sim, ja nepiecieÅ”ams.
Vispirms mÄs āsavienojamā eth0. MÄs atceramies āvienveidÄ«bas problÄmuā un izmantojam tikai Ŕīs saskarnes MAC adresi, kuru var uzzinÄt, piemÄram, Å”Ädi:
# cat /sys/class/net/eth0/address
MÄs radÄm /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
MÄs izdzÄÅ”am iepriekÅ”Äjo konfigurÄcijas failu eth0, restartÄjam Raspberry un iegÅ«stam piekļuvi tÄ«klam (visticamÄk, IP adrese mainÄ«sies):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Lai izveidotu Wi-Fi piekļuves punktus, nekas nav labÄks par labu dnsmasq + hostapd vÄl neesmu izdomÄjis. PÄc manÄm domÄm.
Ja kÄds ir aizmirsis, tad...
SÄksim ar dnsmasq:
# yum install dnsmasq
Paraugs / 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
rediÄ£Äjiet to pÄc saviem ieskatiem.
minimÄlistisks /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
āMaÄ£ijaā Å”eit slÄpjas parametrÄ saist-dinamisks, kas liek dnsmasq dÄmonam gaidÄ«t, lÄ«dz tas parÄdÄs sistÄmÄ interfeiss=lan, un nenoģībt no lepnas vientulÄ«bas lÄkmes pÄc starta.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
Un visbeidzot, maÄ£iskÄs hostapd konfigurÄcijas. Man nav Å”aubu, ka kÄds lasa Å”o rakstu, meklÄjot tieÅ”i Ŕīs vÄrtÄ«gÄs lÄ«nijas.
Pirms hostapd instalÄÅ”anas jums jÄpÄrvar āvienveidÄ«bas problÄmaā. IebÅ«vÄtais Wi-Fi adapteris wlan0 var viegli mainÄ«t nosaukumu uz wlan1, pievienojot papildu USB Wi-Fi aprÄ«kojumu. TÄpÄc mÄs labosim interfeisa nosaukumus Å”Ädi: mÄs izdomÄsim unikÄlus (bezvadu) adapteru nosaukumus un saistÄ«sim tos ar MAC adresÄm.
IebÅ«vÄtajam Wi-Fi adapterim, kas joprojÄm ir wlan0:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
MÄs radÄm /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
Tagad mÄs par to bÅ«sim pÄrliecinÄti wl0 - Tas ir iebÅ«vÄts Wi-Fi. MÄs atsÄknÄjam Raspberry, lai par to pÄrliecinÄtos.
UzstÄdÄ«t:
# yum install hostapd wireless-tools
KonfigurÄcijas fails /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
Neaizmirstot ne mirkli
# hostapd /etc/hostapd/hostapd.conf
hostapd sÄksies interaktÄ«vÄ režīmÄ, pÄrraidot savu stÄvokli konsolei. Ja kļūdu nav, klienti, kas atbalsta maiÅstrÄvas režīmu, varÄs izveidot savienojumu ar piekļuves punktu. Lai apturÄtu hostapd - Ctrl-C.
Atliek tikai iespÄjot hostapd sistÄmas startÄÅ”anas laikÄ. Ja veicat standarta darbÄ«bu (systemctl enable hostapd), tad pÄc nÄkamÄs pÄrstartÄÅ”anas jÅ«s varat saÅemt dÄmonu, kas āripo asinÄ«sā ar diagnozi āinterfeiss wl0 nav atrasts". āParalÄlÄ haosaā rezultÄtÄ hostapd startÄja ÄtrÄk, nekÄ kodols atrada bezvadu adapteri.
Internets ir pilns ar lÄ«dzekļiem: no piespiedu noildzes pirms dÄmona palaiÅ”anas (vairÄkas minÅ«tes) lÄ«dz citam dÄmonam, kas uzrauga saskarnes izskatu un (atkÄrtoti) startÄ resursdatora bloku. RisinÄjumi ir diezgan praktiski, bet Å”ausmÄ«gi neglÄ«ti. MÄs saucam palÄ«gÄ lielo systemd ar saviem āmÄrÄ·iemā un āuzdevumiemā un āatkarÄ«bÄmā.
KopÄjiet izplatÄ«Å”anas pakalpojuma failu uz /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
un samazinÄt tÄ saturu lÄ«dz Å”Ädai formai:
[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
AtjauninÄtÄ pakalpojuma faila burvÄ«ba slÄpjas hostapd dinamiskajÄ saistÄ«Å”anÄ ar jauno mÄrÄ·i - wl0 saskarni. Kad parÄdÄs interfeiss, dÄmons sÄkas; kad tas pazÅ«d, tas apstÄjas. Un tas viss notiek tieÅ”saistÄ - bez sistÄmas pÄrstartÄÅ”anas. Å is paÅÄmiens bÅ«s Ä«paÅ”i noderÄ«gs, pievienojot USB Wi-Fi adapteri Raspberry.
Tagad Tu vari:
# systemctl enable hostapd
# reboot
7. IPTABLES
"Ko???" Ā© JÄ, jÄ! Nav systemd. Nav jaunizveidotu kombainu (formÄ ugunsmÅ«ris), kas galu galÄ dara to paÅ”u.
Izmantosim veco labo iptables, kura pakalpojumi pÄc palaiÅ”anas ielÄdÄs tÄ«kla noteikumus kodolÄ un mierÄ«gi izslÄgsies, nepaliekot rezidentam un nepatÄrÄjot resursus. systemd ir elegants IPMasquerade=, taÄu adreses tulkoÅ”anu (NAT) un ugunsmÅ«ri joprojÄm uzticÄsim iptables.
UzstÄdÄ«t:
# yum install iptables-services
# systemctl enable iptables ip6tables
Es dodu priekÅ”roku iptables konfigurÄcijas saglabÄÅ”anai kÄ skriptam (piemÄrs):
#!/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
MÄs izpildÄm iepriekÅ” minÄto skriptu un zaudÄjam iespÄju izveidot jaunus vadu SSH savienojumus ar Raspberry. TieÅ”i tÄ, mÄs esam izveidojuÅ”i Wi-Fi marÅ”rutÄtÄju, kuram pÄc noklusÄjuma ir aizliegta piekļuve ācaur internetuā - tagad tikai āpa gaisuā. MÄs pievienojam pakalpojumu sniedzÄja Ethernet kabeli un sÄkam sÄrfot!
8. Bonuss: +2,4 GHz
Kad es saliku pirmo Raspberry marÅ”rutÄtÄju, izmantojot iepriekÅ” aprakstÄ«to zÄ«mÄjumu, es atklÄju savÄ mÄjsaimniecÄ«bÄ vairÄkus sÄ«krÄ«kus, kas to Wi-Fi dizaina ierobežojumu dÄļ vispÄr nevarÄja redzÄt "aveÅu". MarÅ”rutÄtÄja pÄrkonfigurÄÅ”ana darbam 802.11b/g/n bija nesportiska, jo maksimÄlais Ätrums āpa gaisuā Å”ajÄ gadÄ«jumÄ nepÄrsniedza 40 Mbit, un mans iecienÄ«tÄkais interneta pakalpojumu sniedzÄjs man piedÄvÄ 100 (caur kabeli).
Faktiski jau ir izgudrots problÄmas risinÄjums: otrs Wi-Fi interfeiss, kas darbojas ar frekvenci 2,4 GHz, un otrs piekļuves punkts. NetÄlu esoÅ”ajÄ stendÄ nopirku nevis pirmo, bet otro USB Wi-Fi āsvilpiā, ko sastapu. PÄrdevÄju mocÄ«ja jautÄjumi par mikroshÄmojumu, saderÄ«bu ar ARM Linux kodoliem un iespÄju strÄdÄt AP režīmÄ (viÅÅ” bija pirmais, kurÅ” sÄka).
MÄs konfigurÄjam āsvilpiā pÄc analoÄ£ijas ar iebÅ«vÄto Wi-Fi adapteri.
Vispirms pÄrdÄvÄsim to uz 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
MÄs uzticÄsim jaunÄ Wi-Fi interfeisa pÄrvaldÄ«bu atseviŔķam hostapd dÄmonam, kas sÄksies un apstÄsies atkarÄ«bÄ no stingri noteiktas āsvilpesā klÄtbÅ«tnes sistÄmÄ: wl1.
KonfigurÄcijas fails /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]
Å Ä« faila saturs ir tieÅ”i atkarÄ«gs no USB Wi-Fi adaptera modeļa, tÄpÄc banÄla kopÄÅ”ana/ielÄ«mÄÅ”ana var neizdoties.
KopÄjiet izplatÄ«Å”anas pakalpojuma failu uz /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
un samazinÄt tÄ saturu lÄ«dz Å”Ädai formai:
[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
Atliek tikai iespÄjot jaunu hostapd gadÄ«jumu:
# systemctl enable hostapd2
Tas ir viss! Pavelciet āsvilpiā un paÅ”u āaveÅuā, apskatiet apkÄrtÄjos bezvadu tÄ«klus.
Visbeidzot, es vÄlos jÅ«s brÄ«dinÄt par USB Wi-Fi adaptera un Raspberry baroÅ”anas avota kvalitÄti. Savienota ākarsta svilpeā dažkÄrt var izraisÄ«t āaveÅu sasalÅ”anuā Ä«slaicÄ«gu elektrÄ«bas traucÄjumu dÄļ.
Avots: www.habr.com