Raspberry Pi + CentOS = Wi-Fi Hotspot (və ya qırmızı papaqlı moruq marşrutlaşdırıcısı)

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.

Raspberry Pi + CentOS = Wi-Fi Hotspot (və ya qırmızı papaqlı moruq marşrutlaşdırıcısı)
(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

Layihənin ana səhifəsi

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 sistemli taymerlər, çatışmayanı müəyyən edə bilər. / var / log- və bax jurnalctl. Əgər log tarixçəsinə ehtiyacınız varsa (defolt olaraq, məlumat yalnız sistemin işə salındığı andan saxlanılır):

# 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).

Cari Raspbian şəklini yükləyin. Tənbəl insanlar şəkli microSD-yə yaza və oradan proshivka ilə faylları götürə bilər. Və ya Linux-da şəklin kök bölməsini quraşdıra və oradan lazım olanı köçürə bilərsiniz:

# 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.

Adlandırmanın ardıcıllığı problemi и məşhur Qvatemala proqramçısı - sistem paylamalarında şəbəkə interfeyslərini və xidmətlərini konfiqurasiya edən hər kəsi gözləyən iki problem.

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...hostapd - bu, Wi-Fi adapterlərini idarə edən şeydir (xüsusilə, onların virtual şəbəkəyə qoşulması ilə məşğul olacaq. lan "moruq"), simsiz müştərilərə icazə verir və qeydiyyatdan keçirir.

dnsmasq — müştərilərin şəbəkə yığınını konfiqurasiya edir: IP ünvanlarını, DNS serverlərini, standart şlüzləri və oxşar zövqləri verir.

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 Fövqəladə Hallar üzrə Dövlət Komitəsi, bizə lazım olan parametrləri dəyişdirin və funksionallığı əl ilə yoxlayın:

# 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

Добавить комментарий