Raspberry tək lövhəli kompüter əsasında Wi-Fi giriş nöqtələrinin yaradılması ilə bağlı İnternetdə çoxlu məlumat var. Bir qayda olaraq, bu, Raspberry üçün doğma olan Raspbian əməliyyat sistemindən istifadə etmək deməkdir.
RPM əsaslı sistemlərin tərəfdarı olduğum üçün mən bu kiçik möcüzədən keçə bilmədim və sevimli CentOS-u sınaya bilmədim.
Məqalədə CentOS əməliyyat sistemi əsasında Raspberry Pi 5 Model B+-dan 3GHz/AC Wi-Fi marşrutlaşdırıcısı hazırlamaq üçün təlimatlar təqdim olunur. Bir neçə standart, lakin az tanınan fəndlər olacaq və bonus olaraq - Raspberry-yə əlavə Wi-Fi avadanlığının qoşulması, onun eyni vaxtda bir neçə rejimdə (2,4+5GHz) işləməsinə imkan verən çertyoj olacaq.
(sərbəst mövcud olan şəkillərin qarışığı)
Dərhal qeyd edək ki, bəzi kosmik sürətlər işləməyəcək. Raspberry-dən havadan maksimum 100 Mbps sıxıram və bu, İnternet provayderimin sürətini əhatə edir. Nəzəri olaraq hətta N-də yarım gigabit əldə edə bilsəniz, niyə belə ləng AC lazımdır? Əgər özünüzə bu sualı vermisinizsə, onda səkkiz xarici antenalı real router almaq üçün mağazaya gedin.
0. Nəyə ehtiyacınız olacaq
- Əslində, "moruq məhsulunun" özü kalibrlidir: Pi 3 Model B+ (istədiyi 5 GHz sürət və kanallara nail olmaq üçün);
- Yaxşı microSD >= 4GB;
- Linux və microSD oxucu/yazıçı ilə iş stansiyası;
- Linux-da kifayət qədər bacarıqların olması, məqalə təlim keçmiş Geek üçündür;
- Raspberry və Linux arasında simli şəbəkə (eth0) bağlantısı, yerli şəbəkədə DHCP serverini idarə etmək və hər iki cihazdan İnternetə çıxış.
Son nöqtəyə kiçik bir şərh. “Hansı birinci gəldi, yumurta və ya...” İnternetə çıxış üçün avadanlıq olmadıqda Wi-Fi marşrutlaşdırıcısını necə etmək olar? Bu əyləncəli məşqi məqalənin əhatə dairəsindən kənarda qoyaq və sadəcə olaraq, Moruqun yerli şəbəkəyə məftillə qoşulduğunu və İnternetə çıxışı olduğunu düşünək. Bu vəziyyətdə, "moruq" qurmaq üçün əlavə televizora və manipulyatora ehtiyacımız olmayacaq.
1. CentOS quraşdırın
Bu məqaləni yazarkən cihazda CentOS-un işləyən versiyası 32 bitdir. Ümumdünya Şəbəkəsinin bir yerində 64 bitlik ARM arxitekturasında bu cür OS-lərin performansının 20% -ə qədər azaldığı barədə fikirlərə rast gəldim. Bu anı şərhsiz tərk edəcəm.
Linux-da ləpə ilə minimal təsviri endirin "-RaspberryPI-"və bunu microSD-yə yazın:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Şəkli istifadə etməyə başlamazdan əvvəl ondan SWAP bölməsini çıxaracağıq, kökü bütün mövcud həcmə genişləndirəcəyik və SELinux-dan xilas olacağıq. Alqoritm sadədir: Linux-da kökün surətini çıxarın, birinci (/boot) istisna olmaqla, microSD-dən bütün bölmələri silin, yeni kök yaradın və onun məzmununu surətdən qaytarın.
Tələb olunan hərəkətlərin nümunəsi (ciddi konsol çıxışı)
# 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
Kök bölmənin məzmununu açdıqdan sonra ona bəzi dəyişikliklər etməyin vaxtı gəldi.
SELinux-u söndürün /mnt/etc/selinux/config:
SELINUX=disabled
Redaktə /mnt/etc/fstab, arakəsmələr haqqında yalnız iki giriş buraxaraq: açılış (/boot, dəyişiklik yoxdur) və kök (biz UUID dəyərini dəyişdiririk, bunu Linux-da blkid əmrinin çıxışını öyrənməklə tapmaq olar):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Nəhayət, kernel açılış parametrlərini dəyişdiririk: kök bölmə üçün yeni bir yer təyin edirik, sazlama məlumatının çıxışını söndürürük və (istəyə görə) nüvəyə şəbəkə interfeyslərində IPv6 ünvanlarını təyin etməyi qadağan edirik:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Budur məzmun /mnt/cmdline.txt aşağıdakı formaya (tiresiz bir sətir):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Done:
# cd
# umount /mnt
# sync
Biz microSD-ni “moruq”a düzəldirik, işə salırıq və ssh (root/centos) vasitəsilə ona şəbəkəyə giriş əldə edirik.
2. CentOS-un qurulması
İlk üç sarsılmaz hərəkət: passwd, yum -y yeniləmə, reboot.
Şəbəkə idarəçiliyini təhvil veririk şəbəkəli:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Fayl yaradın (kataloqlarla birlikdə) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
"Moruq"u yenidən başladın və yenidən ssh vasitəsilə şəbəkəyə giriş əldə edirik (IP ünvanı dəyişə bilər). Nə istifadə olunduğuna diqqət yetirin /etc/resolv.conf, əvvəllər Şəbəkə Meneceri tərəfindən yaradılmışdır. Buna görə də, həlli ilə bağlı problemlər olduqda, məzmununu redaktə edin. istifadə edin sistem həll edildi etməyəcəyik.
Biz "lazımsız"ları aradan qaldırırıq, təmir edirik və OS-nin yüklənməsini sürətləndiririk:
# 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
Kimə lazımdır cron və daxilini həzm etməyən
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Əsas xidmətlər tərəfindən IPv6 istifadəsini söndürün (lazım olduqda)/ etc / ssh / sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
"Moruq" üzərində vaxtın aktuallığı vacib bir şeydir. Yenidən başladıqdan sonra saatın cari vəziyyətini saxlamaq üçün heç bir hardware qabiliyyəti olmadığı üçün sinxronizasiya tələb olunur. Bunun üçün çox yaxşı və sürətli bir daemon xroniki - artıq quraşdırılıb və avtomatik başlayır. NTP serverlərini ən yaxın serverlərə dəyişə bilərsiniz.
/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
Saat qurşağını təyin etmək üçün istifadə edəcəyik hiylə. Məqsədimiz 5GHz tezliklərdə işləyən Wi-Fi router yaratmaq olduğundan, sürprizlərə əvvəlcədən hazırlaşacağıq. tənzimləyici:
# yum info crda
Xülasə: 802.11 simsiz şəbəkə üçün tənzimləyici uyğunluq demonu
Saat qurşağına əsaslanan bu pis dizayn 5GHz tezliklərin və "yüksək" nömrələri olan kanalların istifadəsini (Rusiyada) "qadağan edir". Hiylə qitələrin/şəhərlərin adlarından istifadə etmədən, yəni aşağıdakıların əvəzinə vaxt qurşağı təyin etməkdir:
# timedatectl set-timezone Europe/Moscow
Biz basırıq:
# timedatectl set-timezone Etc/GMT-3
Və sistemin saç düzümünə son toxunuşlar:
# 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 Əlavələri
Yuxarıda deyilənlərin hamısı Raspberry Pi-də "vanil" CentOS quraşdırmaq üçün tam təlimat hesab edilə bilər. Siz 10 saniyədən az müddətdə (yenidən) yüklənən, 15 Meqabaytdan az RAM və 1.5 Gigabayt microSD istifadə edən (əslində natamam / yükləməyə görə 1 Gigabaytdan az, amma düzünü desək) kompüter əldə etməlisiniz.
Bu sistemdə Wi-Fi giriş nöqtəsi proqramını quraşdırmaq üçün standart CentOS paylanmasının imkanlarını bir qədər genişləndirməlisiniz. Əvvəlcə daxili Wi-Fi adapterinin drayverini (firmware) təkmilləşdirək. Layihənin ana səhifəsində deyilir:
Raspberry 3B və 3B+-da Wi-Fi
Raspberry PI 3B/3B+ proqram təminatı fayllarının CentOS Layihəsi tərəfindən yayılmasına icazə verilmir. Problemi başa düşmək, proqram təminatını əldə etmək və wifi qurmaq üçün aşağıdakı məqalələrdən istifadə edə bilərsiniz.
CentOS layihəsi üçün qadağan edilənlər şəxsi istifadəmiz üçün qadağan edilmir. Biz CentOS-da Wi-Fi paylayıcı proqram təminatını Broadcom tərtibatçılarının müvafiq proqramı ilə əvəz edirik (eyni nifrət edilən ikili bloklar...). Bu, xüsusilə, giriş nöqtəsi rejimində AC-dən istifadə etməyə imkan verəcəkdir.
Wi-Fi proqram təminatının təkmilləşdirilməsiCihaz modelini və mövcud proqram təminatı versiyasını öyrənin:
# 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
Firmware versiyasının 7.45.18/01.03.2015/XNUMX-ci il tarixli XNUMX olduğunu görürük və aşağıdakı nömrələr dəstini xatırlayırıq: 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
Yaranan Wi-Fi adapter proqram faylları kopyalanmalı və qovluğa "moruq" ilə əvəz edilməlidir. /usr/lib/firmware/brcm/
Gələcək marşrutlaşdırıcını yenidən işə salırıq və məmnuniyyətlə gülümsəyəcəyik:
# 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
Versiya: 7.45.154-ci il tarixli 27.02.2018.
Və əlbəttə ki, 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. Şəbəkə konfiqurasiyası və qarşıda duran problemlər
Yuxarıda razılaşdığımız kimi, "moruq" yerli şəbəkəyə "tel" ilə bağlıdır. Fərz edək ki, provayder İnternetə çıxışı tam eyni şəkildə təmin edir: ictimai şəbəkədəki ünvan dinamik olaraq DHCP serveri tərəfindən verilir (bəlkə də MAC bağlanması ilə). Bu vəziyyətdə, moruqun son qurulmasından sonra, sadəcə provayderin kabelini ona "qoşmaq" lazımdır və işiniz bitdi. Avtorizasiyadan istifadə etməklə systemd-şəbəkə - ayrı bir məqalənin mövzusu və burada müzakirə edilmir.
Raspberry-nin Wi-Fi interfeys(lər)i yerli şəbəkədir və daxili Ethernet adapteri (eth0) xaricidir. Yerli şəbəkəni statik olaraq nömrələyək, məsələn: 192.168.0.0/24. Moruq ünvanı: 192.168.0.1. DHCP serveri xarici şəbəkədə (İnternet) işləyəcək.
Paralel xaos (lirik yayınma)Lennart Pottering öz proqramını tərtib edib systemd Çox yaxşı. Bu systemd digər proqramları o qədər tez işə salır ki, onlar hakimin fit çalmasından özünə gəlməyə vaxt tapmadan, hətta maneə kursuna başlamadan başlanğıcda büdrəyib yıxılırlar.
Ancaq ciddi şəkildə, sistemli OS-nin başlanğıcında işə salınan proseslərin aqressiv paralelləşdirilməsi təcrübəli ardıcıl LSB mütəxəssisləri üçün bir növ "eşşək körpüsüdür". Xoşbəxtlikdən, bu "paralel xaosa" nizam-intizam gətirmək həmişə aydın olmasa da, sadədir.
Sabit adlarla iki virtual körpü interfeysi yaradırıq: lan и wan. Birincisinə Wi-Fi adapter(lər)ini, ikincisinə isə eth0 “moruq”u “qoşacağıq”.
/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=bəli marşrutlaşdırmanı aktivləşdirmək üçün sysctl vasitəsilə nüvəyə işarə etmək ehtiyacını aradan qaldırır.
MACA ünvanı = Şərhdən çıxaraq və lazım gələrsə dəyişdirək.
Əvvəlcə eth0-ı "birləşdiririk". Biz "vahidlik problemini" xatırlayırıq və yalnız bu interfeysin MAC ünvanından istifadə edirik, məsələn, aşağıdakı kimi tapıla bilər:
# cat /sys/class/net/eth0/address
Biz yaradırıq /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Əvvəlki eth0 konfiqurasiya faylını silirik, Raspberry-ni yenidən başladın və ona şəbəkə girişi əldə edirik (IP ünvanı çox güman ki, dəyişəcək):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Wi-Fi giriş nöqtələrini yaratmaq üçün heç bir şey bir neçə şirindən üstün ola bilməz dnsmasq + hostapd hələ başa düşməmişəm. Məncə.
Əgər kimsə unudulsa, onda...
dnsmasq ilə başlayaq:
# yum install dnsmasq
Şablon /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
öz zövqünüzə görə redaktə edin.
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
Buradakı “sehrli” parametrdədir bağlama-dinamik, bu, dnsmasq demonuna sistemdə görünənə qədər gözləməyi söyləyir interfeys=lan, və başlanğıcdan sonra qürurlu tənhalıqdan huşunu itirmə.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
Və nəhayət, sehrli hostapd konfiqurasiyaları. Şübhə etmirəm ki, kimsə məhz bu dəyərli sətirləri axtarmaq üçün bu yazını oxuyur.
Hostapd quraşdırmadan əvvəl "vahidlik problemini" aradan qaldırmalısınız. Daxili Wi-Fi adapteri wlan0 əlavə USB Wi-Fi avadanlığını birləşdirərkən asanlıqla adını wlan1 olaraq dəyişə bilər. Buna görə də, interfeys adlarını aşağıdakı şəkildə düzəldəcəyik: (simsiz) adapterlər üçün unikal adlar tapacağıq və onları MAC ünvanlarına bağlayacağıq.
Hələ wlan0 olan daxili Wi-Fi adapteri üçün:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Biz yaradırıq /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
İndi biz buna əmin olacağıq wl0 - Bu daxili Wi-Fi-dır. Buna əmin olmaq üçün Raspberry-ni yenidən işə salırıq.
Yüklemek:
# yum install hostapd wireless-tools
Konfiqurasiya faylı /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
Bir an belə unutmadan
# hostapd /etc/hostapd/hostapd.conf
hostapd öz vəziyyətini konsola yayımlayaraq interaktiv rejimdə başlayacaq. Heç bir səhv yoxdursa, AC rejimini dəstəkləyən müştərilər giriş nöqtəsinə qoşula biləcəklər. Hostapd-ni dayandırmaq üçün - Ctrl-C.
Qalan şey sistemin başlanğıcında hostapd-ni aktivləşdirməkdir. Standart bir şeyi etsəniz (systemctl hostapd-ni aktivləşdirin), onda növbəti yenidən başladıqdan sonra "qan içində yuvarlanan" bir cin əldə edə bilərsiniz.wl0 interfeysi tapılmadı". "Paralel xaos" nəticəsində hostapd simsiz adapterin tapdığı nüvədən daha sürətli işə başladı.
İnternet çarələrlə doludur: demonu işə salmazdan əvvəl məcburi fasilədən (bir neçə dəqiqə), interfeysin görünüşünü izləyən və (yenidən) hostpad-ı işə salan başqa bir demona qədər. Həlllər olduqca işləkdir, lakin olduqca çirkindir. Biz böyük olanı köməyə çağırırıq systemd "məqsədləri" və "tapşırıqları" və "asılılıqları" ilə.
Dağıtım xidməti faylını kopyalayın /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
və məzmununu aşağıdakı formaya endirin:
[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
Yenilənmiş xidmət faylının sehri hostapd-nin yeni hədəfə - wl0 interfeysinə dinamik bağlanmasındadır. İnterfeys görünəndə demon başlayır, yox olduqda isə dayanır. Və bütün bunlar onlayndır - sistemi yenidən başlatmadan. Bu texnika USB Wi-Fi adapterini Raspberry-yə qoşarkən xüsusilə faydalı olacaq.
İndi edə bilərsiniz:
# systemctl enable hostapd
# reboot
7. IPTABLƏR
"Nə???" © Bəli, bəli! Heç biri systemd. Yeni açılmış kombaynlar yoxdur (formada firewalld), eyni şeyi edən.
Gəlin köhnə yaxşıdan istifadə edək iptables, onun xidmətləri başladıqdan sonra şəbəkə qaydalarını nüvəyə yükləyəcək və rezident qalmadan və resursları sərf etmədən sakitcə bağlanacaq. systemd zərifdir IPMasquerade=, lakin biz yenə də ünvan tərcüməsini (NAT) və təhlükəsizlik divarını iptables-ə həvalə edəcəyik.
Yüklemek:
# yum install iptables-services
# systemctl enable iptables ip6tables
Mən iptables konfiqurasiyasını skript kimi saxlamağa üstünlük verirəm (nümunə):
#!/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
Yuxarıdakı skripti icra edirik və Raspberry ilə yeni simli SSH əlaqələri yaratmaq imkanını itiririk. Düzdür, biz "İnternet vasitəsilə" giriş standart olaraq qadağan edilən bir Wi-Fi marşrutlaşdırıcısı yaratdıq - indi yalnız "hava ilə". Provayderin Ethernet kabelini bağlayırıq və sörf etməyə başlayırıq!
8. Bonus: +2,4GHz
Yuxarıda təsvir olunan rəsmdən istifadə edərək ilk Moruq marşrutlaşdırıcısını yığdığım zaman evimdə Wi-Fi dizayn məhdudiyyətlərinə görə “moruq”u ümumiyyətlə görə bilməyən bir sıra qadcetlər aşkar etdim. Routerin 802.11b/g/n-də işləməsi üçün yenidən konfiqurasiya edilməsi idmansız idi, çünki bu halda "hava üzərində" maksimal sürət 40 Mbit-i keçmədi və sevimli İnternet provayderim mənə 100 (kabel vasitəsilə) təklif edir.
Əslində, problemin həlli artıq icad edilmişdir: 2,4 GHz tezliyində işləyən ikinci Wi-Fi interfeysi və ikinci giriş nöqtəsi. Yaxınlıqdakı tövlədə mən birinci yox, ikinci USB Wi-Fi “düdük” aldım. Satıcı çipset, ARM Linux ləpələri ilə uyğunluq və AP rejimində işləmək imkanı ilə bağlı suallardan əziyyət çəkirdi (ilk işə başlayan o idi).
Quraşdırılmış Wi-Fi adapterinə bənzətmə ilə "fit" i konfiqurasiya edirik.
Əvvəlcə adını dəyişdirək 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
Yeni Wi-Fi interfeysinin idarə edilməsini sistemdə ciddi şəkildə müəyyən edilmiş “fit”in mövcudluğundan asılı olaraq işə başlayacaq və dayanacaq ayrıca hostapd demonuna həvalə edəcəyik: wl1.
Konfiqurasiya faylı /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]
Bu faylın məzmunu birbaşa USB Wi-Fi adapterinin modelindən asılıdır, ona görə də banal surəti/yapışdırmaq uğursuzluğa düçar ola bilər.
Dağıtım xidməti faylını kopyalayın /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
və məzmununu aşağıdakı formaya endirin:
[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
Qalan şey yeni hostapd nümunəsini aktivləşdirməkdir:
# systemctl enable hostapd2
Hamısı budur! "Fit" və "moruq" özünü çəkin, ətrafınızdakı simsiz şəbəkələrə baxın.
Və nəhayət, sizə USB Wi-Fi adapterinin keyfiyyəti və Raspberry-nin enerji təchizatı barədə xəbərdarlıq etmək istəyirəm. Qoşulmuş "isti fit" bəzən qısa müddətli elektrik problemləri səbəbindən "moruq donmasına" səbəb ola bilər.
Mənbə: www.habr.com