Raspberry Pi + CentOS = Wi-Fi Hotspot (ё роутери малина бо кулоҳи сурх)

Дар Интернет миқдори зиёди маълумот оид ба таъсиси нуқтаҳои дастрасии Wi-Fi дар асоси компютери якбораи Raspberry мавҷуд аст. Чун қоида, ин маънои истифодаи системаи оператсионии Raspbian дар Raspberry мебошад.

Ман як пайрави системаҳои RPM асосёфта будам, ман наметавонистам аз ин мӯъҷизаи хурд гузашта бошам ва дар он CentOS-и маҳбуби худро санҷида натавонам.

Дар мақола дастурҳо оид ба сохтани роутери 5 ГГц/AC Wi-Fi аз Raspberry Pi 3 Model B+ дар асоси системаи оператсионии CentOS оварда шудааст. Якчанд ҳиллаҳои стандартӣ, вале каммаълум хоҳанд буд ва ҳамчун бонус - расм барои пайваст кардани таҷҳизоти иловагии Wi-Fi ба Raspberry, ки ба он имкон медиҳад, ки ҳамзамон дар якчанд режим (2,4+5 ГГц) кор кунад.

Raspberry Pi + CentOS = Wi-Fi Hotspot (ё роутери малина бо кулоҳи сурх)
(омехтаи тасвирҳои ройгон дастрас)

Биёед фавран қайд кунем, ки баъзе суръатҳои кайҳонӣ кор намекунанд. Ман аз Raspberry-и худ ҳадди аксар 100 Мбит / сонияро фишурдаам ва ин суръати провайдери интернети маро фаро мегирад. Чаро ба шумо чунин AC суст лозим аст, агар дар назария шумо метавонед ним гигабит ҳатто дар N ба даст? Агар шумо ин саволро ба худ дода бошед, пас ба мағоза равед, то роутери воқеӣ бо ҳашт мавҷгири беруна харед.

0. Он чизе ки ба шумо лозим аст

  • Дар асл, худи "маҳсулоти малина" дорои калибр аст: Pi 3 Model B+ (барои ноил шудан ба суръатҳо ва каналҳои дилхоҳи 5 ГГц);
  • microSD-и хуб >= 4 ГБ;
  • Истгоҳи корӣ бо Linux ва microSD хонанда/нависанда;
  • Мавҷудияти малакаҳои кофӣ дар Linux, мақола барои Geek омӯзонида шудааст;
  • Пайвастшавии шабакаи симӣ (eth0) байни Raspberry ва Linux, иҷрокунандаи сервери DHCP дар шабакаи маҳаллӣ ва дастрасии интернет аз ҳарду дастгоҳ.

Шарҳи хурд дар бораи нуқтаи охирин. "Кадом аввал омад, тухм ё..." дар сурати мавҷуд набудани таҷҳизоти дастрасӣ ба интернет чӣ гуна роутер Wi-Fi сохтан мумкин аст? Биёед ин машқи фароғатро аз доираи мақола берун гузорем ва танҳо фарз кунем, ки Raspberry ба шабакаи маҳаллӣ тавассути сим пайваст аст ва ба Интернет дастрасӣ дорад. Дар ин сурат барои гузоштани «малина» ба мо телевизори иловагй ва манипулятор лозим нест.

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, дар он танҳо ду сабтро дар бораи бахшҳо боқӣ мегузоранд: пурбор (/ boot, тағирот нест) ва реша (мо арзиши UUID-ро тағир медиҳем, ки онро тавассути омӯзиши баромади фармони blkid дар Linux фаҳмидан мумкин аст):

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, ки қаблан аз ҷониби Менеҷери шабака сохта шудааст. Аз ин рӯ, дар сурати ҳалли мушкилот, мундариҷаи онро таҳрир кунед. Истифода баред система ҳал карда шудааст мо намекунем.

Мо "нодаркор" -ро нест мекунем, таъмир мекунем ва боркунии ОС-ро суръат мебахшем:

# 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- ва аз назар гузаронед маҷалла. Агар ба шумо таърихи сабт ниёз дошта бошед (бо нобаёнӣ, маълумот танҳо аз лаҳзаи оғоз шудани система нигоҳ дошта мешавад):

# 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

Барои таъин кардани минтақаи вақт мо истифода мебарем ҳилла. Азбаски ҳадафи мо эҷод кардани роутери Wi-Fi дар басомадҳои 5 ГГц аст, мо пешакӣ ба сюрпризҳо омода мешавем танзимкунанда:

# 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

Ҳама чизҳое, ки дар боло гуфта шуданд, метавон дастурҳои мукаммал оид ба насби "ванил" CentOS дар Raspberry Pi ҳисобида шавад. Шумо бояд бо компютере ба даст оред, ки дар камтар аз 10 сония (аз нав) бор мекунад, камтар аз 15 Мегабайт хотираи оперативӣ ва 1.5 Гигабайт microSD-ро истифода мебарад (воқеан аз 1 Гигабайт аз сабаби нопурра / боркунӣ, аммо ростқавлона гӯем).

Барои насб кардани нармафзори нуқтаи дастрасии Wi-Fi дар ин система, шумо бояд имкониятҳои тақсимоти стандартии CentOS-ро каме васеъ кунед. Пеш аз ҳама, биёед драйвери (прошивка) адаптери дарунсохтаи Wi-Fi-ро навсозӣ кунем. Саҳифаи асосии лоиҳа мегӯяд:

Wifi дар Raspberry 3B ва 3B+

Файлҳои нармафзори Raspberry PI 3B/3B+ аз ҷониби лоиҳаи CentOS паҳн карда намешаванд. Шумо метавонед мақолаҳои зеринро барои фаҳмидани масъала истифода баред, нармафзори миёнаравӣ гиред ва WiFi-ро танзим кунед.

Он чизе, ки барои лоиҳаи CentOS манъ аст, барои истифодаи шахсӣ барои мо манъ нест. Мо нармафзори тақсимоти Wi-Fi-ро дар CentOS бо нармафзори мувофиқи таҳиягарони Broadcom иваз мекунем (он ҳамон блокҳои бинарии нафратовар...). Ин, аз ҷумла, ба шумо имкон медиҳад, ки AC дар ҳолати нуқтаи дастрасӣ истифода баред.

Навсозии нармафзори 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/XNUMX/XNUMX аст ва маҷмӯи рақамҳои зеринро дар хотир доред: 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/firmware/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 - мавзӯи мақолаи алоҳида ва дар ин ҷо муҳокима карда намешавад.

Интерфейси Wi-Fi Raspberry як шабакаи маҳаллӣ аст ва адаптери дохилии Ethernet (eth0) беруна аст. Биёед шабакаи маҳаллиро ба таври статикӣ рақамгузорӣ кунем, масалан: 192.168.0.0/24. Суроғаи малина: 192.168.0.1. Сервери DHCP дар шабакаи беруна (Интернет) кор хоҳад кард.

Мушкилоти мутобиқати номгузорӣ и барномасози машҳури Гватемала - ду мушкилоте, ки ҳар касе, ки интерфейсҳои шабакавӣ ва хидматҳоро дар дистрибюторҳои системавӣ танзим мекунад, интизор аст.

Бетартибиҳои параллелӣ (дигресси лирикӣ)Ленарт Поттеринг барномаи худро тартиб додааст systemd Хеле хуб. Ин systemd барномаҳои дигарро чунон зуд оғоз мекунад, ки онҳо аз зарбаи ҳуштаки довар фурсат наёфта, дар оғоз ҳатто пешпо мехӯранд ва меафтанд ва ҳатто ба мавзеи монеаи худ шурӯъ мекунанд.

Аммо ба таври ҷиддӣ параллелизатсияи хашмгини равандҳои оғозшуда дар оғози OS системавӣ як навъ "пули хар" барои мутахассисони ботаҷрибаи пайдарпайи LSB мебошад. Хушбахтона, ба тартиб овардан ба ин «бетартибиҳои параллелӣ» оддӣ мегардад, гарчанде ки на ҳамеша аён аст.

Мо ду интерфейси пули виртуалиро бо номҳои доимӣ эҷод мекунем: LAN и ван. Мо адаптер(ҳо)-и 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 барои фаъол кардани масирро аз байн мебарад.
Адреси MACA = Агар лозим бошад, шарҳ диҳем ва тағир диҳем.

Аввал мо 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, ҳеҷ чиз аз як ҷуфти ширин нест днсмаск + хостапд то ҳол дарк накардаанд. Ба андешаи ман.

Агар касе фаромӯш кунад, пас ...хостапд - ин чизест, ки адаптерҳои Wi-Fi-ро идора мекунад (аз ҷумла, он барои пайваст кардани онҳо ба виртуалӣ ғамхорӣ мекунад. LAN "малина") ба мизоҷони бесим иҷозат медиҳад ва ба қайд мегирад.

днсмаск — стеки шабакаи муштариёнро танзим мекунад: суроғаҳои 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 мегӯяд, ки то он даме, ки он дар система пайдо шавад, интизор шавад интерфейс = lan, ва аз як фитнаи танҳоии мағрур пас аз оғоз беҳуш нашавед.

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

6. HOSTAPD

Ва ниҳоят, конфигуратсияҳои ҷодугарӣ hostapd. Ман шубҳа надорам, ки касе ин мақоларо дар ҷустуҷӯи маҳз ҳамин сатрҳои гаронбаҳо мехонад.

Пеш аз насб кардани hostapd, шумо бояд "мушкилоти якхела" -ро бартараф кунед. Адаптери дарунсохти Wi-Fi wlan0 ҳангоми пайваст кардани таҷҳизоти иловагии Wi-Fi USB метавонад ба осонӣ номи худро ба 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 дарунсохт аст. Мо Raspberry-ро аз нав оғоз мекунем, то боварӣ ҳосил кунем.

Насб кунед:

# 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 дар реҷаи интерактивӣ оғоз карда, ҳолати худро ба консол пахш мекунад. Агар ягон хатогӣ вуҷуд надошта бошад, пас муштариёне, ки ҳолати AC-ро дастгирӣ мекунанд, метавонанд ба нуқтаи дастрасӣ пайваст шаванд. Барои қатъ кардани hostapd - Ctrl-C.

Танҳо он чизе, ки боқӣ мемонад, фаъол кардани hostapd дар оғози система аст. Агар шумо кори стандартиро иҷро кунед (systemctl hostapd-ро фаъол созед), пас пас аз бозоғозии навбатӣ шумо метавонед деви "дар хун чарх мезанад" бо ташхиси "интерфейси wl0 ёфт нашуд". Дар натиҷаи "бетартибиҳои параллелӣ", hostapd нисбат ба ядро ​​​​адаптери бесимро тезтар оғоз кард.

Интернет пур аз илоҷҳо аст: аз тайм-аути маҷбурӣ пеш аз оғози демон (якчанд дақиқа), то демони дигаре, ки намуди интерфейсро назорат мекунад ва (аз нав) hostpad-ро оғоз мекунад. Роҳҳо хеле қобили коранд, аммо хеле зишти. Мо бузургро ба ёрй даъват мекунем 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 ба Raspberry муфид хоҳад буд.

Акнун шумо метавонед:

# systemctl enable hostapd
# reboot

7. IPTABLES

"Чӣ???" © Ҳа, ҳа! Ҳеҷ systemd. Ягон комбайни навбаромад (дар шакли Сипар), ки дар охир хамин корро мекунанд.

Биёед аз пештараи хуб истифода барем iptables. systemd дорои шево мебошад IPMasquerade =, аммо мо ба ҳар ҳол тарҷумаи суроғаҳо (NAT) ва девори деворро ба iptables мегузорем.

Насб кунед:

# 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

Мо скрипти дар боло зикршударо иҷро мекунем ва қобилияти барқарор кардани пайвастҳои нави симии SSH бо Raspberry-ро аз даст медиҳем. Дуруст аст, ки мо як роутери Wi-Fi сохтем, ки дастрасӣ ба он "тавассути Интернет" бо нобаёнӣ манъ аст - ҳоло танҳо "тавассути ҳаво". Мо сими Ethernet-и провайдерро пайваст мекунем ва ба серфинг оғоз мекунем!

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

Вақте ки ман аввалин роутери Raspberry-ро бо истифода аз расми дар боло тавсифшуда васл кардам, ман дар хонаводаи худ як қатор гаҷетҳоро кашф кардам, ки аз сабаби маҳдудияти тарроҳии Wi-Fi онҳо “малина”-ро умуман дида наметавонистанд. Аз нав танзим кардани роутер барои кор дар 802.11b/g/n ғайри варзиш буд, зеро суръати максималии "бо ҳаво" дар ин ҳолат аз 40 Мбит зиёд набуд ва провайдери интернетии дӯстдоштаи ман ба ман 100 (тавассути кабел) пешниҳод мекунад.

Дар асл, роҳи ҳалли мушкилот аллакай ихтироъ шудааст: интерфейси дуюми Wi-Fi, ки дар басомади 2,4 ГГц кор мекунад ва нуқтаи дуюми дастрасӣ. Дар дӯкони ҳамсоя ман на аввал, балки дуюми 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 ва таъминоти барқи Raspberry огоҳ кунам. "Ҳуштакҳои гарм"-и пайвастшуда баъзан аз сабаби мушкилоти кӯтоҳмуддати барқ ​​​​метавонад "яхкунии малина" гардад.

Манбаъ: will.com

Илова Эзоҳ