Raspberry Pi + CentOS = Wi-Fi қосылу нүктесі (немесе қызыл қалпақшасы бар таңқурай маршрутизаторы)

Интернетте Raspberry бір тақталы ДК негізінде Wi-Fi кіру нүктелерін құру туралы ақпараттың үлкен көлемі бар. Әдетте, бұл Raspberry-ге тән Raspbian операциялық жүйесін пайдалануды білдіреді.

RPM негізіндегі жүйелерді ұстанушы болғандықтан, мен бұл кішкентай ғажайыптан өтіп кете алмадым және оған сүйікті CentOS-ты қолданып көрмедім.

Мақалада CentOS операциялық жүйесіне негізделген Raspberry Pi 5 B+ моделінен 3 ГГц/айнымалы ток Wi-Fi маршрутизаторын жасау нұсқаулары берілген. Бірнеше стандартты, бірақ аз белгілі трюктар болады, ал бонус ретінде - Raspberry-ге бір уақытта бірнеше режимде (2,4+5 ГГц) жұмыс істеуге мүмкіндік беретін қосымша Wi-Fi жабдығын қосуға арналған сызба болады.

Raspberry Pi + CentOS = Wi-Fi қосылу нүктесі (немесе қызыл қалпақшасы бар таңқурай маршрутизаторы)
(еркін қолжетімді суреттер қоспасы)

Кейбір ғарыштық жылдамдықтардың жұмыс істемейтінін бірден атап өтейік. Мен Raspberry құрылғысынан ауа арқылы максимум 100 Мбит/с сығып аламын және бұл менің Интернет провайдерімнің жылдамдығын қамтиды. Неліктен сізге мұндай баяу айнымалы ток қажет, егер теорияда N-де жарты гигабит алуға болады? Егер сіз өзіңізге осы сұрақты қойған болсаңыз, онда сегіз сыртқы антеннасы бар нақты маршрутизаторды сатып алу үшін дүкенге барыңыз.

0. Сізге не қажет болады

  • Шындығында, «таңқурай өнімінің» өзі калибрлі: Pi 3 Model B+ (5 ГГц жиіліктер мен арналарға қол жеткізу үшін);
  • Жақсы microSD >= 4 ГБ;
  • Linux және microSD оқу құралы/жазушысы бар жұмыс станциясы;
  • Linux жүйесінде жеткілікті дағдылардың болуы, мақала оқытылған Geek үшін;
  • Raspberry және Linux арасындағы сымды желі (eth0) қосылымы, жергілікті желіде DHCP серверін іске қосу және екі құрылғыдан Интернетке қол жеткізу.

Соңғы нүктеге шағын түсініктеме. «Қайсысы бірінші болды, жұмыртқа немесе...» Интернетке қол жеткізуге арналған жабдық болмаған кезде Wi-Fi маршрутизаторын қалай жасауға болады? Бұл ойын-сауық жаттығуын мақаланың шеңберінен тыс қалдырып, таңқурай жергілікті желіге сым арқылы қосылған және Интернетке қол жетімді деп есептейік. Бұл жағдайда «таңқурайды» орнату үшін бізге қосымша теледидар мен манипулятор қажет емес.

1. CentOS орнатыңыз

Жобаның басты беті

Осы мақаланы жазу кезінде құрылғыдағы CentOS-тың жұмыс істейтін нұсқасы 32-бит болып табылады. Дүниежүзілік желіде 64-биттік ARM архитектурасында мұндай операциялық жүйелердің өнімділігі 20% -ға төмендейді деген пікірлерді кездестірдім. Мен бұл сәтті пікірсіз қалдырамын.

Linux жүйесінде ядромен минималды кескінді жүктеп алыңыз »-RaspberryPI-«және оны microSD-ге жазыңыз:

# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz | 
  dd of=/dev/mmcblk0 bs=4M
# sync

Кескінді пайдалануды бастамас бұрын, біз одан SWAP бөлімін алып тастаймыз, түбірді барлық қолжетімді көлемге дейін кеңейтеміз және SELinux-тан құтыламыз. Алгоритм қарапайым: Linux жүйесінде түбірдің көшірмесін жасаңыз, біріншіден (/жүктеуден) басқа microSD дискісінің барлық бөлімдерін жойыңыз, жаңа түбір жасаңыз және оның мазмұнын көшірмеден қайтарыңыз.

Қажетті әрекеттердің мысалы (қатты консоль шығысы)

# 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

Түбірлік бөлімнің мазмұнын ашқаннан кейін оған кейбір өзгерістер енгізудің уақыты келді.

SELinux жүйесін өшіріңіз /mnt/etc/selinux/config:

SELINUX=disabled

Өңдеу /mnt/etc/fstab, онда бөлімдер туралы екі жазба қалдырыңыз: жүктеу (/жүктеу, өзгерістер жоқ) және түбір (біз UUID мәнін өзгертеміз, оны Linux жүйесіндегі blkid пәрменінің шығысын зерттеу арқылы білуге ​​болады):

UUID=6a1a0694-8196-4724-a58d-edde1f189b31  /     ext4    defaults,noatime 0 0
UUID=6938-F4F2                             /boot vfat    defaults,noatime 0 0

Соңында, ядроның жүктелу параметрлерін өзгертеміз: түбірлік бөлім үшін жаңа орынды көрсетеміз, жөндеу ақпаратының шығысын өшіреміз және (міндетті емес) ядроға желі интерфейстерінде IPv6 мекенжайларын тағайындауға тыйым саламыз:

# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt

Міне, мазмұны /mnt/cmdline.txt келесі пішінге (дефиссіз бір жол):

root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1

Аяқталған:

# cd
# umount /mnt
# sync

Біз microSD картасын «таңқурайға» қайта реттейміз, оны іске қосамыз және оған ssh (root/centos) арқылы желіге қол жеткіземіз.

2. CentOS орнату

Алғашқы үш мызғымас қозғалыс: passwd, yum -y жаңарту, қайта жүктеу.

Біз желіні басқаруды береміз желілік:

# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off

Файл жасау (каталогтармен бірге) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Біз «таңқурайды» қайта жүктейміз және оған ssh арқылы қайтадан желіге қол жеткіземіз (IP мекенжайы өзгеруі мүмкін). Қолданылатын нәрсеге назар аударыңыз /etc/resolv.conf, бұрын Network Manager жасаған. Сондықтан шешуге қатысты мәселелер туындаған жағдайда оның мазмұнын өңдеңіз. Қолдану жүйемен шешілді болмаймыз.

Біз «қажетсізді» алып тастаймыз, жөндейміз және ОЖ жүктелуін тездетеміз:

# 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

Кімге керек Cron ал кіріктірілгенді кім қорытпайды жүйелік таймерлер, жетіспейтінін анықтай алады. / var / log- және мұқият қараңыз journalctl. Егер сізге журнал журналы қажет болса (әдепкі бойынша ақпарат тек жүйе іске қосылған сәттен бастап сақталады):

# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf

Негізгі қызметтермен IPv6 пайдалануды өшіру (қажет болса)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

«Таңқурайға» уақыттың сәйкестігі маңызды нәрсе. Қайта жүктеу кезінде сағаттың ағымдағы күйін сақтау үшін қораптан тыс аппараттық мүмкіндік болмағандықтан, синхрондау қажет. Бұл үшін өте жақсы және жылдам демон хрония - әлдеқашан орнатылған және автоматты түрде іске қосылады. NTP серверлерін ең жақын серверлерге өзгертуге болады.

/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

Уақыт белдеуін орнату үшін біз қолданамыз С,СЂСРє. Біздің мақсатымыз 5 ГГц жиілікте жұмыс істейтін Wi-Fi маршрутизаторын жасау болғандықтан, біз тосын сыйларға алдын ала дайындаламыз. реттегіш:

# yum info crda
Қысқаша мазмұны: 802.11 сымсыз желіге арналған нормативтік сәйкестік демоны

Бұл зұлым дизайн, сонымен қатар уақыт белдеуіне негізделген, 5 ГГц жиіліктері мен «жоғары» сандары бар арналарды (Ресейде) пайдалануға «тыйым салады». Құрлықтардың/қалалардың атауларын пайдаланбай, яғни: орнына уақыт белдеуін орнатудың амалы:

# timedatectl set-timezone Europe/Moscow

Біз басамыз:

# timedatectl set-timezone Etc/GMT-3

Жүйенің шаш үлгісіне соңғы жанасулар:

# 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 қондырмалары

Жоғарыда айтылғандардың барлығын Raspberry Pi-де «ванильді» CentOS орнатуға арналған толық нұсқаулар деп санауға болады. Сіз 10 секундтан аз уақыт ішінде (қайта) жүктелетін, 15 мегабайттан аз жедел жады және 1.5 гигабайт microSD қолданатын компьютерді алуыңыз керек (толық емес/жүктелуіне байланысты шын мәнінде 1 гигабайттан аз, бірақ шынын айтайық).

Осы жүйеге Wi-Fi кіру нүктесі бағдарламалық құралын орнату үшін стандартты CentOS дистрибутивінің мүмкіндіктерін сәл кеңейту қажет. Ең алдымен, кірістірілген Wi-Fi адаптерінің драйверін (микробағдарламасын) жаңартайық. Жобаның басты бетінде былай делінген:

Raspberry 3B және 3B+ құрылғыларындағы Wi-Fi

Raspberry PI 3B/3B+ микробағдарлама файлдарын CentOS жобасымен таратуға рұқсат етілмейді. Мәселені түсіну, микробағдарламаны алу және Wi-Fi орнату үшін келесі мақалаларды пайдалануға болады.

CentOS жобасына тыйым салынған нәрсе бізге жеке пайдалануға тыйым салынбайды. Біз CentOS жүйесіндегі тарату Wi-Fi микробағдарламасын Broadcom әзірлеушілерінің сәйкес нұсқасымен ауыстырамыз (сол жек көретін екілік блоктар...). Бұл, атап айтқанда, кіру нүктесі режимінде айнымалы токты пайдалануға мүмкіндік береді.

Wi-Fi микробағдарламасын жаңартуҚұрылғы үлгісін және микробағдарламаның ағымдағы нұсқасын табыңыз:

# 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 

Микробағдарлама нұсқасы 7.45.18 ж. 01.03.2015 екенін көреміз және келесі сандар жинағын есте сақтаңыз: 43455 (brcmfmac43455-sdio.bin).

Ағымдағы Raspbian кескінін жүктеп алыңыз. Жалқаулар суретті microSD-ге жазып, микробағдарламасы бар файлдарды сол жерден ала алады. Немесе Linux жүйесінде кескіннің түбірлік бөлігін орнатуға және сол жерден қажет нәрсені көшіруге болады:

# 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

Алынған Wi-Fi адаптерінің микробағдарлама файлдарын каталогқа көшіріп, «таңқураймен» ауыстыру керек. /usr/lib/микробағдарлама/brcm/

Біз болашақ маршрутизаторды қайта жүктейміз және қуана күлеміз:

# 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 

Нұсқа: 7.45.154 27.02.2018 ж.

Және, әрине, 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. Желі конфигурациясы және алда тұрған міндеттер

Жоғарыда келіскеніміздей, «таңқурай» жергілікті желіге «сым» арқылы қосылған. Провайдер Интернетке қосылуды дәл осылай қамтамасыз етеді делік: жалпы желідегі мекенжай DHCP серверімен динамикалық түрде шығарылады (мүмкін MAC байланыстыруымен). Бұл жағдайда таңқурайды түпкілікті орнатудан кейін провайдердің кабелін оған «қосу» жеткілікті және сіз аяқтадыңыз. Қолдану арқылы авторизациялау systemd-networkd - жеке мақаланың тақырыбы және мұнда талқыланбайды.

Raspberry-дің Wi-Fi интерфейсі(лер)і жергілікті желі, ал кірістірілген Ethernet адаптері (eth0) сыртқы болып табылады. Жергілікті желіні статикалық түрде нөмірлейік, мысалы: 192.168.0.0/24. Таңқурай мекенжайы: 192.168.0.1. DHCP сервері сыртқы желіде (Интернет) жұмыс істейді.

Атау сәйкестігі мәселесі и атақты гватемалалық бағдарламашы - жүйелік дистрибутивтерде желілік интерфейстер мен қызметтерді конфигурациялайтын кез келген адамды күтетін екі қиындық.

Параллель хаос (лирикалық шегіну)Ленарт Поттеринг өзінің жеке бағдарламасын құрастырды systemd өте жақсы. Бұл systemd басқа бағдарламаларды тез іске қосатыны сонша, олар төрешінің ысқырығынан есін жинап үлгермей, тіпті кедергілер жолын бастамай-ақ, стартта сүрініп, құлап қалады.

Бірақ шындап айтқанда, жүйелік ОЖ басында іске қосылған процестердің агрессивті параллелизациясы тәжірибелі дәйекті LSB мамандары үшін өзіндік «есек көпірі» болып табылады. Бақытымызға орай, бұл «параллельді хаосқа» тәртіп орнату әрдайым анық болмаса да, қарапайым болып шығады.

Біз тұрақты атаулары бар екі виртуалды көпір интерфейсін жасаймыз: LAN и wan. Біз біріншіге Wi-Fi адаптерін, ал екіншісіне eth0 «таңқурайын» ​​«қосамыз».

/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=иә маршруттауды қосу үшін sysctl арқылы ядроға кеңес беру қажеттілігін жояды.
MACAaddress= Түсініктемені алып тастап, қажет болса өзгертейік.

Алдымен eth0-ді «қосамыз». Біз «біркелкілік мәселесін» есте сақтаймыз және осы интерфейстің тек MAC мекенжайын пайдаланамыз, оны білуге ​​болады, мысалы:

# cat /sys/class/net/eth0/address 

Біз жасаймыз /etc/systemd/network/eth.network:

[Match]
MACAddress=b8:27:eb:xx:xx:xx

[Network]
Bridge=wan

Біз eth0 алдыңғы конфигурация файлын жоямыз, Raspberry-ді қайта жүктеп, оған желіге қол жеткіземіз (IP мекенжайы өзгеруі мүмкін):

# rm -fv /etc/systemd/network/eth0.network
# reboot

5.DNSMASQ

Wi-Fi кіру нүктелерін жасау үшін ешнәрсе тәтті жұпты жеңе алмайды dnsmasq + hostapd оны әлі анықтаған жоқ. Менің ойымша.

Егер біреу ұмытып кетсе...hostapd - бұл Wi-Fi адаптерлерін басқаратын нәрсе (атап айтқанда, ол оларды виртуалдыға қосуды қамтамасыз етеді. LAN «таңқурай») сымсыз клиенттерге рұқсат береді және тіркейді.

dnsmasq — клиенттердің желілік стектерін конфигурациялайды: IP мекенжайларын, DNS серверлерін, әдепкі шлюзді және ұқсас ләззаттарды шығарады.

dnsmasq арқылы бастайық:

# yum install dnsmasq

Үлгі /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

оны өз қалауыңыз бойынша өңдеңіз.

минималистік /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

Мұндағы «сиқырлық» параметрде жатыр байланыстырушы-динамикалық, ол dnsmasq демонына жүйеде пайда болғанша күту керектігін айтады интерфейс=лан, және басталғаннан кейін мақтанышпен жалғыздық ұстамасынан есінен танып қалмайды.

# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f

6. HOSTAPD

Соңында, сиқырлы hostapd конфигурациялары. Біреудің бұл мақаланы дәл осы асыл жолдарды іздеп оқитынына күмәнім жоқ.

Hostapd орнатпас бұрын, «біркелкілік мәселесін» жеңу керек. Кірістірілген Wi-Fi адаптері wlan0 қосымша USB Wi-Fi жабдығын қосқанда өз атын wlan1 етіп оңай өзгерте алады. Сондықтан біз интерфейс атауларын келесі жолмен түзетеміз: біз (сымсыз) адаптерлердің бірегей атауларын ойлап табамыз және оларды MAC мекенжайларына байланыстырамыз.

Кірістірілген Wi-Fi адаптері үшін, ол әлі wlan0:

# cat /sys/class/net/wlan0/address 
b8:27:eb:xx:xx:xx

Біз жасаймыз /etc/systemd/network/wl0.link:

[Match]
MACAddress=b8:27:eb:xx:xx:xx

[Link]
Name=wl0

Енді біз бұған сенімді боламыз wl0 - Бұл кірістірілген Wi-Fi. Бұған көз жеткізу үшін таңқурайды қайта жүктейміз.

Орнату:

# yum install hostapd wireless-tools

Конфигурация файлы /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

Бір сәтке де ұмытпай Мемлекеттік төтенше жағдайлар комитеті, бізге қажет параметрлерді өзгертіңіз және функционалдылықты қолмен тексеріңіз:

# hostapd /etc/hostapd/hostapd.conf

hostapd өз күйін консольге тарата отырып, интерактивті режимде басталады. Егер қателер болмаса, айнымалы ток режимін қолдайтын клиенттер кіру нүктесіне қосыла алады. Hostapd тоқтату үшін - Ctrl-C.

Жүйені іске қосу кезінде hostapd мүмкіндігін қосу ғана қалады. Егер сіз стандартты әрекетті жасасаңыз (systemctl enable hostapd), содан кейін келесі қайта жүктеуден кейін сіз «қанға аунайтын» жынға ие бола аласыз «wl0 интерфейсі табылмады«. «Параллельдік хаос» нәтижесінде hostapd сымсыз адаптерді ядродан тапқаннан жылдамырақ іске қосылды.

Интернет емдеуге толы: демонды іске қосу алдындағы мәжбүрлі күтуден (бірнеше минут), интерфейстің көрінісін бақылайтын және (қайта) хост тақтасын іске қосатын басқа демонға дейін. Шешімдер өте тиімді, бірақ өте жағымсыз. Біз ұлы адамды көмекке шақырамыз systemd оның «мақсаттарымен» және «міндеттерімен» және «тәуелділіктерімен».

Тарату қызметі файлын мына жерге көшіріңіз /etc/systemd/system/hostapd.service:

# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system

және оның мазмұнын келесі пішінге келтіріңіз:

[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

Жаңартылған қызмет файлының сиқыры hostapd жаңа мақсатқа - wl0 интерфейсіне динамикалық байланыстыруында жатыр. Интерфейс пайда болған кезде демон іске қосылады, ол жоғалған кезде ол тоқтайды. Мұның бәрі желіде - жүйені қайта жүктеусіз. Бұл әдіс әсіресе USB Wi-Fi адаптерін таңқурайға қосқанда пайдалы болады.

Енді сіз:

# systemctl enable hostapd
# reboot

7. IPTABLES

«Не???» © Иә, иә! Жоқ systemd. Жаңадан шыққан комбайндар жоқ (формада firewalld), ол бірдей нәрсені жасайды.

Жақсы ескіні қолданайық iptables, оның қызметтері іске қосылғаннан кейін желі ережелерін ядроға жүктейді және резидент қалмай және ресурстарды тұтынбай тыныш өшеді. systemd талғампаздығы бар IPMasquerade=, бірақ біз әлі де iptables-ке мекенжай аудармасын (NAT) және желіаралық қалқанды сеніп тапсырамыз.

Орнату:

# yum install iptables-services
# systemctl enable iptables ip6tables

Мен iptables конфигурациясын сценарий ретінде сақтауды қалаймын (мысал):

#!/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

Біз жоғарыдағы сценарийді орындаймыз және Raspberry-мен жаңа сымды SSH қосылымдарын орнату мүмкіндігін жоғалтамыз. Дұрыс, біз Wi-Fi маршрутизаторын жасадық, оған әдепкі бойынша «Интернет арқылы» кіруге тыйым салынады - енді тек «әуе арқылы». Біз провайдердің Ethernet кабелін қосып, серфингті бастаймыз!

8. Бонус: +2,4 ГГц

Мен бірінші таңқурай маршрутизаторын жоғарыда сипатталған сызба бойынша құрастырған кезде, мен үй шаруашылығымдағы Wi-Fi дизайн шектеулеріне байланысты «таңқурайды» мүлде көре алмайтын бірқатар гаджеттерді таптым. Маршрутизаторды 802.11b/g/n жүйесінде жұмыс істеу үшін қайта конфигурациялау спорттық емес болды, өйткені бұл жағдайда «ауадағы» максималды жылдамдық 40 Мбит-тен аспады, ал менің сүйікті интернет-провайдерім маған 100 (кабель арқылы) ұсынады.

Шын мәнінде, мәселені шешу қазірдің өзінде ойлап тапты: 2,4 ГГц жиілікте жұмыс істейтін екінші Wi-Fi интерфейсі және екінші кіру нүктесі. Жақын жерде орналасқан дүңгіршектен мен бірінші емес, екінші USB Wi-Fi «ысқырығын» сатып алдым. Сатушыны чипсет, ARM Linux ядроларымен үйлесімділік және AP режимінде жұмыс істеу мүмкіндігі туралы сұрақтар қинады (ол бірінші болып бастады).

Біз «ысқырықты» кірістірілген Wi-Fi адаптеріне ұқсас етіп конфигурациялаймыз.

Алдымен оның атын өзгертейік 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

Біз жаңа Wi-Fi интерфейсін басқаруды бөлек hostapd демонына сеніп тапсырамыз, ол жүйеде қатаң анықталған «ысқырықтың» болуына байланысты басталады және тоқтайды: wl1.

Конфигурация файлы /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]

Бұл файлдың мазмұны USB Wi-Fi адаптерінің үлгісіне тікелей байланысты, сондықтан банальды көшіру/қою сәтсіз болуы мүмкін.

Тарату қызметі файлын мына жерге көшіріңіз /etc/systemd/system/hostapd2.service:

# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service

және оның мазмұнын келесі пішінге келтіріңіз:

[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

Тек hostapd жаңа данасын қосу ғана қалады:

# systemctl enable hostapd2

Осымен болды! «Ысқырықты» және «таңқурайдың» өзін тартыңыз, айналаңыздағы сымсыз желілерге қараңыз.

Ақыр соңында, мен USB Wi-Fi адаптерінің сапасы мен таңқурайдың қуат көзі туралы ескерткім келеді. Қосылған «ыстық ысқырық» кейде қысқа мерзімді электр ақауларына байланысты «таңқурайдың қатып қалуын» тудыруы мүмкін.

Ақпарат көзі: www.habr.com

пікір қалдыру