Raspberry Pi + CentOS = Wi-Fi Hotspot (an jî routerê raspberry bi kulpek sor)

Li ser Internetnternetê li ser çêkirina xalên gihîştina Wi-Fi-ya ku li ser bingeha PC-ya yek-board Raspberry-ê ye, gelek agahdarî hene. Wekî qaîdeyek, ev tê vê wateyê ku pergala xebitandina Raspbian ya xwemalî ya Raspberry bikar tîne.

Ji ber ku ez pêgirê pergalên RPM-based im, min nekarî vê kerameta piçûk derbas bikim û CentOS-a xweya delal li ser wê neceribînim.

Gotar rêwerzan ji bo çêkirina routerek Wi-Fi 5GHz / AC ji Raspberry Pi 3 Model B+ li ser bingeha pergala xebitandinê CentOS peyda dike. Dê gelek hîleyên standard lê hindik naskirî hebin, û wekî bonus - nexşeyek ji bo girêdana alavên Wi-Fi yên din bi Raspberry re, ku dihêle ew bi hevdemî di çend awayan de bixebite (2,4+5GHz).

Raspberry Pi + CentOS = Wi-Fi Hotspot (an jî routerê raspberry bi kulpek sor)
(tevlihevkirina wêneyên belaş ên berdest)

Ka em tavilê bala xwe bidin ku hin lezgehên kozmîkî dê nexebitin. Ez herî zêde 100 Mbps ji Raspberry-ya xwe li ser hewayê derdixim, û ev leza peydakarê min ê Înternetê vedigire. Çima hûn hewceyê AC-ya wusa sist in, heke di teoriyê de hûn dikarin li ser N-yê jî nîv gigabit bistînin? Ger we ev pirs ji xwe kiriye, wê hingê biçin firotgehê ku bi heşt antenên derveyî ve routerek rastîn bikirin.

0. Hûn ê hewce bikin

  • Bi rastî, "hilbera raspberry" bixwe bi kalîber e: Pi 3 Model B+ (ji bo bidestxistina lez û kanalên 5GHz yên xwestî);
  • MicroSD baş >= 4 GB;
  • Stasyona xebatê ya bi Linux û xwendevan/nivîskarê microSD;
  • Hebûna jêhatîbûnên têr di Linux de, gotar ji bo Geekek perwerdekirî ye;
  • Têkiliya tora têl (eth0) di navbera Raspberry û Linux de, servera DHCP-ê li ser tora herêmî dimeşîne û ji her du cîhazan ve gihîştina Înternetê.

Li ser xala dawîn şîroveyek piçûk. "Kîjan yekem hat, hêk an ..." di nebûna amûrên gihîştina Înternetê de meriv çawa rêwerek Wi-Fi çêdike? Werin em vê xebata dilşewat li derveyî çarçoweya gotarê bihêlin û bi tenê texmîn bikin ku Raspberry bi têl bi tora herêmî ve girêdayî ye û gihîştina Înternetê heye. Di vê rewşê de, ji bo sazkirina "raspberry" em ê hewceyê TV-yek zêde û manipulatorek nebin.

1. CentOS saz bikin

Rûpelê malê yê projeyê

Di dema nivîsandina vê gotarê de, guhertoya xebitandinê ya CentOS li ser cîhazê 32-bit e. Li cîhek li ser tevna gerdûnî ya Cîhanê ez rastî nêrînan hatim ku performansa van OS-yên li ser mîmariya ARM-a 64-bit bi qasî 20% kêm dibe. Ez ê vê kêliyê bê şîrove bihêlim.

Li Linux-ê, wêneya hindiktirîn bi kernelê dakêşin "-RaspberryPI-"û wê li microSD binivîsin:

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

Berî ku em dest bi karanîna wêneyê bikin, em ê dabeşkirina SWAP-ê jê derxînin, rootê li tevahiya cildê berdest berfireh bikin û ji SELinux xilas bibin. Algorîtma hêsan e: Li Linux-ê kopiyek root çêbikin, ji bilî yekem (/boot) hemî dabeşan ji microSD jêbirin, rootek nû biafirînin û naveroka wê ji kopiyê vegerînin.

Mînaka kiryarên pêwîst (derketina konsolê ya giran)

# 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

Piştî vekirina naveroka dabeşa root, wextê wê ye ku hin guhertinan li wê bikin.

SELinux tê de neçalak bike /mnt/etc/selinux/config:

SELINUX=disabled

Editing /mnt/etc/fstab, di wê de tenê du navnîşan di derbarê dabeşan de hiştin: boot (/boot, bê guhertin) û root (em nirxa UUID-ê diguhezînin, ku bi xwendina deranîna fermana blkid li Linux-ê dikare were dîtin):

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

Di dawiyê de, em parametreyên boota kernelê diguhezînin: em cîhek nû ji bo dabeşkirina root diyar dikin, derketina agahdariya xeletkirinê neçalak dikin û (bi vebijarkî) kernel qedexe dike ku navnîşanên IPv6 li ser navgînên torê veqetîne:

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

Li vir naverok e /mnt/cmdline.txt bi forma jêrîn (yek rêzek bê daçek):

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

Done:

# cd
# umount /mnt
# sync

Em microSD-ê di "raspberry" de ji nû ve saz dikin, wê dest pê dikin û bi ssh (root / centos) gihîştina torê digirin.

2. Sazkirina CentOS

Sê tevgerên yekem ên bêserûber: pispor, yum -y update, destpêbikin.

Em dev ji rêveberiya torê berdin torê kirin:

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

Pelê biafirîne (bi pelrêçan re) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Em "raspberry" ji nû ve dest pê dikin û dîsa bi riya ssh-ê gihîştina torê digirin (dibe ku navnîşana IP-yê biguhere). Bala xwe bidin tiştên ku têne bikar anîn /etc/resolv.conf, berê ji hêla Gerînendeyê Torê ve hatî afirandin. Ji ber vê yekê, heke pirsgirêkên çareseriyê hebin, naveroka wê biguherînin. Bikaranîn systemd-çareser kirin em ê nekin.

Em "nepêwist" radikin, barkirina OS-ê tamîr dikin û lez dikin:

# 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

Kî hewce dike cron û yê ku çêkirî nahese timer systemd, dikare tiştê ku wenda ye destnîşan bike. / var / log- û lê binêre journalctl. Heke hûn hewceyê dîroka têketinê ne (ji hêla xwerû, agahdarî tenê ji gava ku pergalê dest pê dike ve têne hilanîn):

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

Bikaranîna IPv6 ji hêla karûbarên bingehîn ve neçalak bike (heke hewce bike)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Têkiliya demê li ser "raspberry" tiştek girîng e. Ji ber ku li derveyî qutiyê şiyana hardware tune ye ku rewşa heyî ya demjimêrê di dema nûvebootkirinê de hilîne, hevdengkirin hewce ye. Daemonek pir baş û bilez ji bo vê ye kronî - jixwe hatî saz kirin û bixweber dest pê dike. Hûn dikarin serverên NTP-ê li yên herî nêzîk biguherînin.

/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

Ji bo danîna qada demjimêr em ê bikar bînin fen. Ji ber ku mebesta me ew e ku em routerek Wi-Fi bi frekansên 5GHz biafirînin, em ê pêşî ji surprîz re amade bikin. regulator:

# yum info crda
Kurte: Daemonê lihevhatina birêkûpêk ji bo tora bêtêl 802.11

Ev sêwirana xirab, di heman demê de li ser bingeha devera demjimêrê jî, karanîna (li Rûsyayê) frekansên 5GHz û kanalên bi hejmarên "bilind" "qedexe" dike. Xefet ev e ku meriv navçeyek demjimêr bêyî karanîna navên parzemînan/bajaran were danîn, ango li şûna:

# timedatectl set-timezone Europe/Moscow

Em çap dikin:

# timedatectl set-timezone Etc/GMT-3

Û destikên dawîn li ser porê pergalê:

# 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. Pêvekên CentOS

Her tiştê ku li jor hate gotin dikare ji bo sazkirina CentOS "vanilla" li ser Raspberry Pi rêwerzên bêkêmasî were hesibandin. Pêdivî ye ku hûn PC-ya ku di kêmtirî 10 çirkeyan de (ji nû ve) boot dike, kêmtir ji 15 Megabytes RAM û 1.5 Gigabytes microSD bikar tîne (bi rastî ji 1 Gigabyte kêmtir ji ber netemamiya /bootê, lê em rast bin).

Ji bo sazkirina nermalava xala gihîştina Wi-Fi li ser vê pergalê, hûn ê hewce bikin ku kapasîteyên belavkirina standard CentOS hinekî berfireh bikin. Berî her tiştî, ka em ajokera (firmware) adaptera Wi-Fi-ya çêkirî nûve bikin. Malpera malê ya projeyê dibêje:

Wifi li ser Raspberry 3B û 3B+

Pelên firmware Raspberry PI 3B/3B+ destûr nayê dayîn ku ji hêla Projeya CentOS ve bêne belav kirin. Hûn dikarin gotarên jêrîn bikar bînin da ku pirsgirêkê fam bikin, firmware bistînin û wifi saz bikin.

Tiştê ku ji bo projeya CentOS-ê qedexe ye ji bo karanîna kesane ji me re ne qedexe ye. Em li CentOS firmware-ya belavkirinê ya Wi-Fi bi ya têkildar ji pêşdebirên Broadcom re diguhezînin (ew heman blokên binary nefret ...). Ev, bi taybetî, dê dihêle hûn di moda xala gihîştinê de AC-ê bikar bînin.

Nûvekirina firmware Wi-FiModela cîhazê û guhertoya firmware ya heyî bibî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 

Em dibînin ku guhertoya firmware 7.45.18 ya 01.03.2015/XNUMX/XNUMX e, û rêza hejmarên jêrîn bi bîr bînin: 43455 (brcmfmac43455-sdio.bin).

Wêneya Raspbian ya heyî dakêşin. Kesên tembel dikarin wêneyê li microSD binivîsin û pelên bi firmware ji wir bistînin. An jî hûn dikarin dabeşkirina root ya wêneyê li Linux-ê siwar bikin û tiştê ku hûn hewce ne ji wir kopî bikin:

# 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

Pêdivî ye ku pelên firmware adapterê Wi-Fi yên ku têne encamdan werin kopî kirin û bi "raspberry" di pelrêçayê de bêne guheztin. /usr/lib/firmware/brcm/

Em routerê paşerojê ji nû ve dest pê dikin û bi dilxweşî dibişirîn:

# 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 

Versiyon: 7.45.154 27.02.2018.

Û bê guman 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. Veavakirina torê û dijwariyên li pêş

Wekî ku me li jor li hev kir, "raspberry" bi "têl" bi tora herêmî ve girêdayî ye. Ka em bihesibînin ku pêşkêşvan bi heman rengî gihîştina Înternetê peyda dike: navnîşana li ser tora giştî bi dînamîk ji hêla servera DHCP ve tê derxistin (dibe ku bi girêdana MAC-ê re). Di vê rewşê de, piştî sazkirina dawîn a raspberry, hûn tenê hewce ne ku kabloya pêşkêşker têxin nav wê û hûn qediyan. Destûrname bi kar tîne systemd-torê - Mijara gotarek cuda ye û li vir nayê nîqaş kirin.

Têkiliya Wi-Fi ya Raspberry torgilokek herêmî ye, û adapterê Ethernet-ê ya çêkirî (eth0) derveyî ye. Werin em tora herêmî bi statîkî hejmar bikin, mînak: 192.168.0.0/24. Navnîşana Raspberry: 192.168.0.1. Pêşkêşkarek DHCP dê li ser tora derveyî (Internetê) bixebite.

Pirsgirêka Lihevhatina Navê и bernameçêkerê navdar ê Guatemalayî - du tengasiyên ku li benda her kesê ku navbeynkar û karûbarên torê di belavkirinên systemd de mîheng dike.

Kaosa paralel (derbasbûna lîrîk)Lennart Pottering bernameya xwe amade kir sîstem Gelek baş. Ev sîstem bernameyên din ewqas zû dest pê dike ku ew, dema ku ji lêdana hakemê bilbilê xelas nebin, di destpêkê de terpilin û bêyî ku dest bi astengiya xwe bikin.

Lê bi ciddî, ​​paralelkirina êrîşkar a pêvajoyên dest pêkirî di destpêka OS-ya pergalê de ji bo pisporên LSB-ê yên demsalî cûreyek "pira kerê" ye. Xweşbextane, rêzkirina vê "kaosa paralel" sade dibe, her çend ne her gav eşkere be.

Em du navgînên pira virtual bi navên domdar diafirînin: lan и wan. Em ê adapter(ên) Wi-Fi bi ya yekem, û eth0 "raspberry" bi ya duyemîn re "girêdin".

/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=erê hewcedariya îşaretkirina kernelê bi riya sysctl ji holê radike da ku rêvekirinê çalak bike.
navnîşana MACA= Ger hewce be em şîrove nekin û biguherînin.

Pêşî em eth0 "girêdidin". Em "pirsgirêka yekrengiyê" bi bîr tînin û tenê navnîşana MAC ya vê navberê bikar tînin, ku dikare were dîtin, mînakî, bi vî rengî:

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

Em diafirînin /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Em pelê mîhengê berê eth0 jêbirin, Raspberry-ê ji nû ve saz bikin û bigihîjin torê (navnîşana IP-ê bi îhtîmalek mezin dê biguhere):

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

5.DNSMASQ

Ji bo çêkirina nuqteyên gihîştina Wi-Fi, tiştek ji çend şîretan nayê dnsmasq + hostepd hîna fêhm nekiriye. Min bê hêvî nekin.

Ger kesek ji bîr kir, hingê ...hostepd - ev tiştê ku adapterên Wi-Fi kontrol dike (bi taybetî, ew ê balê bikişîne ser girêdana wan bi virtual lan "raspberries"), xerîdarên bêtêl destûr dide û tomar dike.

dnsmasq - stûna torê ya xerîdaran mîheng dike: navnîşanên IP-yê, serverên DNS, deriyê xwerû û dilxweşiyên mîna wan vedihewîne.

Ka em bi dnsmasq dest pê bikin:

# yum install dnsmasq

Plateablon /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

li gor dilê xwe biguherîne.

minimalîst /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

"Sêrbaz" li vir di parametreyê de ye bind-dînamîk, ku ji daemonê dnsmasq re dibêje ku li bendê bimîne heya ku ew li ser pergalê xuya bibe interface=lan, û piştî destpêkirinê ji pêleke tenêtiya serbilind bêhis nebe.

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

6. HOSTAPD

Û di dawiyê de, mîhengên hostapd-a sêrbaz. Ez guman nakim ku kesek vê gotarê di lêgerîna van rêzikên hêja de dixwîne.

Berî sazkirina hostapd-ê, hûn hewce ne ku hûn "pirsgirêka yekrêziyê" derbas bikin. Adaptera Wi-Fi ya çêkirî wlan0 dikare bi hêsanî navê xwe biguhezîne wlan1 dema ku amûrên USB Wi-Fi yên din ve girêdide. Ji ber vê yekê, em ê navên navberê bi awayê jêrîn rast bikin: em ê ji bo adapterên (bêtêl) navên bêhempa peyda bikin û wan bi navnîşanên MAC-ê ve girêbidin.

Ji bo adapterê Wi-Fi-ya çêkirî, ku hîn jî wlan0 e:

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

Em diafirînin /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Niha em ê piştrast bin wl0 - Ev Wi-Fi-ya çêkirî ye. Em Raspberry ji nû ve saz bikin da ku ji vê yekê piştrast bin.

Lêkirin:

# yum install hostapd wireless-tools

Pelê veavakirinê /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

Bêyî ku kêliyekê ji bîr bike Komîteya Awarte ya Dewletê, pîvanên ku em hewce ne biguhezînin û bi destan fonksiyonê kontrol bikin:

# hostapd /etc/hostapd/hostapd.conf

hostapd dê di moda înteraktîf de dest pê bike, rewşa xwe li konsolê belav bike. Ger xeletî tunebin, wê hingê xerîdarên ku moda AC-ê piştgirî dikin dê karibin bi xala gihîştinê ve girêbidin. Ji bo rawestandina hostapd - Ctrl-C.

Tiştê ku dimîne ev e ku di destpêka pergalê de hostapd çalak bike. Ger hûn tiştê standard bikin (systemctl hostapd çalak bike), wê hingê piştî nûvekirina paşîn hûn dikarin cinek "di xwînê de dizivire" bi teşhîsa "interface wl0 nehat dîtin". Di encama "kaosa paralel", hostapd ji kernelê ku adapterê bêtêlê dît zûtir dest pê kir.

Înternet bi çareyan tije ye: Ji demek bi zorê berî destpêkirina daemonê (çend hûrdeman), heya daemonek din a ku xuyangê navbeynê dişopîne û (ji nû ve) hostpad dest pê dike. Çareserkirin pir bikêr in, lê pir xirab in. Em ji bo alîkariyê bang li yê mezin dikin sîstem bi "armanc" û "kar" û "girêdayiyên" xwe.

Pelê karûbarê belavkirinê kopî bikin /etc/systemd/system/hostapd.service:

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

û naveroka wê bi forma jêrîn kêm bikin:

[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

Sêrbaziya pelê karûbarê nûvekirî di girêdana dînamîkî ya hostapd-ê de bi armanca nû re ye - pêwendiya wl0. Dema ku navber xuya dike, daemon dest pê dike; dema ku winda dibe, ew disekine. Û ev hemî serhêl e - bêyî nûvekirina pergalê. Dema ku adapterek USB Wi-Fi bi Raspberry ve girêdide ev teknîk dê bi taybetî bikêr be.

Niha hûn dikarin:

# systemctl enable hostapd
# reboot

7. IPTABLES

"Çi???" © Erê, belê! Netû sîstem. Kombeyên nûjen tune (di formê de firewalld), ku di dawiyê de heman tiştî dikin.

Ka em ya berê ya baş bikar bînin iptables, ku karûbarên wî, piştî destpêkirinê, dê qaîdeyên torê di kernelê de bar bike û bêyî ku niştecîh bimîne û çavkaniyan bixwin bi bêdengî biqede. systemd xwedan rengek xweşik e IPMasquerade=, lê dîsa jî em ê wergera navnîşan (NAT) û dîwarê agir spartin iptables.

Lêkirin:

# yum install iptables-services
# systemctl enable iptables ip6tables

Ez tercîh dikim ku veavakirina iptables wekî skrîptekê hilînim (mînak):

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

Em skrîpta jorîn pêk tînin û şiyana damezrandina girêdanên SSH yên têlkirî yên bi Raspberry re winda dikin. Rast e, me routerek Wi-Fi çêkiriye, ku gihandina wê "bi riya Înternetê" ji hêla xwerû ve qedexe ye - naha tenê "li hewa". Em kabloya Ethernet ya pêşkêşker girêdidin û dest bi gerokê dikin!

8. Bonus: +2,4GHz

Dema ku min yekem routera Raspberry bi karanîna xêzkirina ku li jor hatî destnîşan kirin berhev kir, min di nav malbata xwe de hejmarek amûrek vedît ku, ji ber kêmasiyên sêwirana Wi-Fi-ya wan, qet nedikarî "raspberry" bibînin. Veavakirina routerê ku di 802.11b/g/n de bixebite nesporî bû, ji ber ku leza herî zêde "li hewayê" di vê rewşê de ji 40 Mbit derbas nebû, û pêşkêşvanê Internetnternetê yê min ê bijare 100 (bi kabloyê) ji min re pêşkêş dike.

Di rastiyê de, çareseriyek ji pirsgirêkê re jixwe hatî vedîtin: pêwendiyek Wi-Fi ya duyemîn ku bi frekansa 2,4 GHz dixebite, û xalek gihîştina duyemîn. Li stenbolek nêzîk min ne ya yekem, lê ya duyemîn USB-ya Wi-Fi-ya ku ez pê re hatim kirî. Firoşkar ji pirsên li ser chipset, lihevhatina bi kernelên ARM Linux û îhtîmala xebitandina di moda AP-ê de êş kişand (ew yê yekem bû ku dest pê kir).

Em bi adapterê Wi-Fi-ya çêkirî ve "histle" bi analogî mîheng dikin.

Pêşîn, em navê wê biguherînin 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

Em ê rêveberiya navbeynkariya Wi-Fi ya nû bispêrin daemonek hostapd-ê ya cihê, ku dê li gorî hebûna "whistle" ya hişk a di pergalê de dest pê bike û bisekine: wl1.

Pelê veavakirinê /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]

Naveroka vê pelê rasterast bi modela adapterê USB-ya Wi-Fi ve girêdayî ye, ji ber vê yekê kopî/pastek banal dikare we têk bibe.

Pelê karûbarê belavkirinê kopî bikin /etc/systemd/system/hostapd2.service:

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

û naveroka wê bi forma jêrîn kêm bikin:

[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

Tiştê ku dimîne ev e ku meriv mînakek nû ya hostapd çalak bike:

# systemctl enable hostapd2

Navê pêger! "Whistle" û "raspberry" bixwe bikişînin, li torên bêtêl ên li dora xwe binêrin.

Û di dawiyê de, ez dixwazim we di derbarê kalîteya adapterê USB Wi-Fi û dabînkirina hêzê ya Raspberry de hişyar bikim. "Whistle germ" ya girêdayî carinan dikare ji ber pirsgirêkên elektrîkê yên kurt-kurt bibe sedema "cemidandina raspberry".

Source: www.habr.com

Add a comment