Raspberry Pi + CentOS = Man cychwyn Wi-Fi (neu lwybrydd mafon gyda het goch)

Mae llawer iawn o wybodaeth ar y Rhyngrwyd ar greu pwyntiau mynediad Wi-Fi yn seiliedig ar gyfrifiadur un bwrdd Raspberry. Fel rheol, mae hyn yn golygu defnyddio system weithredu Raspbian sy'n frodorol i'r Mafon.

Gan fy mod yn ymlynwr o systemau sy'n seiliedig ar RPM, ni allwn basio heibio'r wyrth fach hon a pheidio â cheisio fy annwyl CentOS arno.

Mae'r erthygl yn darparu cyfarwyddiadau ar gyfer gwneud llwybrydd Wi-Fi 5GHz/AC o Model B+ Raspberry Pi 3 yn seiliedig ar system weithredu CentOS. Bydd nifer o driciau safonol ond anhysbys, ac fel bonws - llun ar gyfer cysylltu offer Wi-Fi ychwanegol i'r Mafon, gan ganiatáu iddo weithredu ar yr un pryd mewn sawl dull (2,4 + 5GHz).

Raspberry Pi + CentOS = Man cychwyn Wi-Fi (neu lwybrydd mafon gyda het goch)
(cymysgedd o ddelweddau sydd ar gael am ddim)

Gadewch inni nodi ar unwaith na fydd rhai cyflymderau cosmig yn gweithio. Rwy'n gwasgu uchafswm o 100 Mbps allan o fy Mafon dros yr awyr, ac mae hyn yn cwmpasu cyflymder fy narparwr Rhyngrwyd. Pam mae angen AC mor swrth, os mewn egwyddor gallwch chi gael hanner gigabit hyd yn oed ar N? Os ydych chi wedi gofyn y cwestiwn hwn i chi'ch hun, yna ewch i'r siop i brynu llwybrydd go iawn gydag wyth antena allanol.

0. Beth fydd ei angen arnoch chi

  • Mewn gwirionedd, mae'r “cynnyrch mafon” ei hun o galibr: Pi 3 Model B+ (i gyflawni'r cyflymderau a'r sianeli 5GHz chwenychedig);
  • MicroSD da >= 4GB;
  • Gweithfan gyda darllenydd / ysgrifennwr Linux a microSD;
  • Argaeledd sgiliau digonol yn Linux, mae'r erthygl ar gyfer Geek hyfforddedig;
  • Cysylltedd rhwydwaith gwifrau (eth0) rhwng Mafon a Linux, rhedeg gweinydd DHCP ar y rhwydwaith lleol a mynediad i'r Rhyngrwyd o'r ddau ddyfais.

Sylw bach ar y pwynt olaf. “Pa un ddaeth gyntaf, yr wy neu...” sut i wneud llwybrydd Wi-Fi yn absenoldeb unrhyw offer mynediad Rhyngrwyd? Gadewch i ni adael yr ymarfer difyr hwn y tu allan i gwmpas yr erthygl a thybio'n syml bod y Mafon wedi'i gysylltu â'r rhwydwaith lleol trwy wifren a bod ganddo fynediad i'r Rhyngrwyd. Yn yr achos hwn, ni fydd angen teledu ychwanegol a manipulator i sefydlu'r "mafon".

1. Gosod CentOS

Tudalen gartref y prosiect

Ar adeg ysgrifennu'r erthygl hon, y fersiwn rhedeg o CentOS ar y ddyfais yw 32-bit. Rhywle ar y We Fyd Eang deuthum ar draws barn bod perfformiad OSes o'r fath ar bensaernïaeth ARM 64-bit yn cael ei leihau cymaint ag 20%. Gadawaf y foment hon heb sylw.

Ar Linux, lawrlwythwch y ddelwedd leiaf gyda'r cnewyllyn "-RaspberryPI-"a'i ysgrifennu at microSD:

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

Cyn dechrau defnyddio'r ddelwedd, byddwn yn tynnu'r rhaniad SWAP ohono, yn ehangu'r gwraidd i'r cyfaint cyfan sydd ar gael ac yn cael gwared ar SELinux. Mae'r algorithm yn syml: gwnewch gopi o'r gwraidd ar Linux, dileu pob rhaniad o'r microSD ac eithrio'r cyntaf (/ cist), creu gwraidd newydd a dychwelyd ei gynnwys o'r copi.

Enghraifft o gamau gweithredu gofynnol (allbwn consol difrifol)

# 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

Ar ôl dadbacio cynnwys y rhaniad gwraidd, mae'n bryd gwneud rhai newidiadau iddo.

Analluogi SELinux i mewn /mnt/etc/selinux/config:

SELINUX=disabled

Golygu /mnt/etc/fstab, gan adael ynddo ddau gofnod yn unig am y rhaniadau: cychwyn (/boot, dim newidiadau) a gwraidd (rydym yn newid y gwerth UUID, y gellir ei ddarganfod trwy astudio allbwn y gorchymyn blkid ar Linux):

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

Yn olaf, rydym yn newid paramedrau cychwyn y cnewyllyn: rydym yn nodi lleoliad newydd ar gyfer y rhaniad gwraidd, yn analluogi allbwn gwybodaeth dadfygio ac (yn ddewisol) yn gwahardd y cnewyllyn rhag aseinio cyfeiriadau IPv6 ar ryngwynebau rhwydwaith:

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

Dyma'r cynnwys /mnt/cmdline.txt i'r ffurflen ganlynol (un llinell heb gysylltiadau):

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

Wedi'i wneud:

# cd
# umount /mnt
# sync

Rydym yn aildrefnu'r microSD i'r “mafon”, yn ei lansio ac yn cael mynediad rhwydwaith iddo trwy ssh (root / centos).

2. Sefydlu CentOS

Y tri symudiad diysgog cyntaf: passwd, diweddariad yum, ailgychwyn.

Rydyn ni'n rhoi rheolaeth rhwydwaith i ffwrdd rhwydweithiol:

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

Creu ffeil (ynghyd â chyfeiriaduron) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Rydym yn ailgychwyn y “mafon” ac eto yn cael mynediad rhwydwaith iddo trwy ssh (gall y cyfeiriad IP newid). Rhowch sylw i'r hyn a ddefnyddir /etc/resolv.conf, a grëwyd yn gynharach gan Reolwr Rhwydwaith. Felly, rhag ofn y bydd problemau gyda datrys, golygu ei gynnwys. Defnydd systemd-datrys ni fyddwn.

Rydyn ni'n dileu'r “diangen”, yn atgyweirio ac yn cyflymu llwytho'r OS:

# 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

Pwy sydd angen cron a phwy nad yw'n treulio'r adeiledig amseryddion systemd, yn gallu sefydlu beth sydd ar goll. / var / log- ac edrych drwodd cylchgrawn. Os oes angen hanes logiau arnoch (yn ddiofyn, dim ond o'r eiliad y mae'r system yn dechrau y caiff gwybodaeth ei storio):

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

Analluoga'r defnydd o IPv6 gan wasanaethau sylfaenol (os oes angen)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Mae perthnasedd amser ar y “mafon” yn beth pwysig. Gan nad oes unrhyw allu caledwedd allan o'r blwch i arbed cyflwr presennol y cloc wrth ailgychwyn, mae angen cydamseru. Daemon da a chyflym iawn i hyn yw chrony - eisoes wedi'i osod ac yn cychwyn yn awtomatig. Gallwch newid gweinyddwyr NTP i'r rhai agosaf.

/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

I osod y parth amser y byddwn yn ei ddefnyddio tric. Gan mai ein nod yw creu llwybrydd Wi-Fi sy'n gweithredu ar amleddau 5GHz, byddwn yn paratoi ar gyfer pethau annisgwyl ymlaen llaw rheolydd:

# yum gwybodaeth crda
Crynodeb: Daemon cydymffurfio rheoliadol ar gyfer rhwydweithio diwifr 802.11

Mae'r dyluniad drwg hwn, sydd hefyd yn seiliedig ar y parth amser, yn “gwahardd” y defnydd (yn Rwsia) o amleddau 5GHz a sianeli â niferoedd “uchel”. Y tric yw gosod parth amser heb ddefnyddio enwau cyfandiroedd/dinasoedd, hynny yw, yn lle:

# timedatectl set-timezone Europe/Moscow

Rydym yn pwyso:

# timedatectl set-timezone Etc/GMT-3

A'r cyffyrddiadau olaf i steil gwallt y system:

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

Gellir ystyried popeth a ddywedwyd uchod yn gyfarwyddiadau cyflawn ar gyfer gosod “vanilla” CentOS ar y Raspberry Pi. Yn y pen draw, dylech chi gael cyfrifiadur personol sy'n (ail)bootio mewn llai na 10 eiliad, sy'n defnyddio llai na 15 Megabeit o RAM a 1.5 Gigabeit o microSD (llai nag 1 Gigabyte mewn gwirionedd oherwydd /cist anghyflawn, ond gadewch i ni fod yn onest).

I osod meddalwedd pwynt mynediad Wi-Fi ar y system hon, bydd angen i chi ehangu ychydig ar alluoedd y dosbarthiad safonol CentOS. Yn gyntaf oll, gadewch i ni uwchraddio gyrrwr (cadarnwedd) yr addasydd Wi-Fi adeiledig. Mae hafan y prosiect yn dweud:

Wifi ar y Mafon 3B a 3B+

Ni chaniateir i'r ffeiliau cadarnwedd Raspberry PI 3B/3B+ gael eu dosbarthu gan y Prosiect CentOS. Gallwch ddefnyddio'r erthyglau canlynol i ddeall y mater, cael y firmware a sefydlu'r wifi.

Nid yw'r hyn sy'n cael ei wahardd ar gyfer prosiect CentOS wedi'i wahardd i ni at ddefnydd personol. Rydym yn disodli'r firmware Wi-Fi dosbarthu yn CentOS gyda'r un cyfatebol gan ddatblygwyr Broadcom (y rhai sy'n casáu smotiau deuaidd tebyg...). Bydd hyn, yn arbennig, yn caniatáu ichi ddefnyddio AC yn y modd pwynt mynediad.

Uwchraddio firmware Wi-FiDarganfyddwch fodel y ddyfais a'r fersiwn firmware cyfredol:

# 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 

Gwelwn fod y fersiwn firmware yn 7.45.18 dyddiedig 01.03.2015/XNUMX/XNUMX, a chofiwch y set ganlynol o rifau: 43455 (brcmfmac43455-sdio.bin).

Lawrlwythwch y ddelwedd Raspbian gyfredol. Gall pobl ddiog ysgrifennu'r ddelwedd i microSD a chymryd y ffeiliau gyda'r firmware oddi yno. Neu gallwch osod rhaniad gwraidd y ddelwedd yn Linux a chopïo'r hyn sydd ei angen arnoch oddi yno:

# 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

Rhaid copïo'r ffeiliau cadarnwedd addasydd Wi-Fi sy'n deillio o hynny a rhoi “mafon” yn eu lle yn y cyfeiriadur /usr/lib/cadarnwedd/brcm/

Rydyn ni'n ailgychwyn llwybrydd y dyfodol ac yn gwenu'n fodlon:

# 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 

Fersiwn: 7.45.154 dyddiedig 27.02.2018/XNUMX/XNUMX.

Ac wrth gwrs 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. Cyfluniad rhwydwaith a'r heriau sydd o'n blaenau

Fel y cytunwyd uchod, mae'r "mafon" wedi'i gysylltu trwy "wifren" i'r rhwydwaith lleol. Gadewch i ni dybio bod y darparwr yn darparu mynediad i'r Rhyngrwyd yn union yr un ffordd: mae'r cyfeiriad ar y rhwydwaith cyhoeddus yn cael ei gyhoeddi'n ddeinamig gan y gweinydd DHCP (efallai gyda rhwymiad MAC). Yn yr achos hwn, ar ôl gosodiad terfynol y mafon, does ond angen i chi “blygio” cebl y darparwr i mewn iddo ac rydych chi wedi gorffen. Awdurdodi gan ddefnyddio systemd-rhwydwaith - pwnc erthygl ar wahân ac nid yw'n cael ei drafod yma.

Rhwydwaith lleol yw rhyngwyneb(au) Wi-Fi Raspberry, ac mae'r addasydd Ethernet adeiledig (eth0) yn allanol. Gadewch i ni rifo'r rhwydwaith lleol yn statig, er enghraifft: 192.168.0.0/24. Cyfeiriad mafon: 192.168.0.1. Bydd gweinydd DHCP yn gweithredu ar y rhwydwaith allanol (Rhyngrwyd).

Problem Cysondeb Enwi и rhaglennydd enwog o Guatemala - dwy drafferth sy'n aros i unrhyw un sy'n ffurfweddu rhyngwynebau rhwydwaith a gwasanaethau mewn dosraniadau systemd.

Anrhefn gyfochrog (gwyriad telynegol)Mae Lennart Pottering wedi llunio ei raglen ei hun systemd Da iawn. hwn systemd yn lansio rhaglenni eraill mor gyflym fel eu bod, heb gael amser i wella ar ôl ergyd y dyfarnwr, yn baglu a chwympo ar y dechrau heb hyd yn oed ddechrau eu cwrs rhwystrau.

Ond o ddifrif, mae cyfochrog ymosodol y prosesau a lansiwyd ar ddechrau'r OS systemd yn fath o “bont asyn” ar gyfer arbenigwyr LSB dilyniannol profiadol. Yn ffodus, mae dod â threfn i'r “anhrefn cyfochrog” hwn yn troi allan i fod yn syml, er nad yw bob amser yn amlwg.

Rydym yn creu dau ryngwyneb pont rithwir gydag enwau cyson: lan и wan. Byddwn yn “cysylltu” yr addasydd (au) Wi-Fi â'r un cyntaf, a'r eth0 "mafon" â'r ail un.

/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=ie yn dileu'r angen i awgrymu i'r cnewyllyn trwy sysctl i alluogi llwybro.
MACAddress= Gadewch i ni uncomment a newid os oes angen.

Yn gyntaf rydym yn “cysylltu” eth0. Rydyn ni'n cofio'r "broblem unffurfiaeth" ac yn defnyddio cyfeiriad MAC y rhyngwyneb hwn yn unig, y gellir ei ddarganfod, er enghraifft, fel hyn:

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

Rydym yn creu /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Rydyn ni'n dileu'r ffeil ffurfweddu flaenorol eth0, yn ailgychwyn y Mafon ac yn cael mynediad rhwydwaith iddi (mae'n debyg y bydd y cyfeiriad IP yn newid):

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

5.DNSMASQ

Am wneud pwyntiau mynediad Wi-Fi, nid oes dim yn curo cwpl melys dnsmasq + hostapd heb ei gyfrifo eto. Yn fy marn i.

Rhag ofn i unrhyw un anghofio, yna...hostapd - dyma'r peth sy'n rheoli addaswyr Wi-Fi (yn benodol, bydd yn gofalu am eu cysylltu â'r rhithwir lan "mafon"), yn awdurdodi ac yn cofrestru cleientiaid di-wifr.

dnsmasq — yn ffurfweddu'r pentwr rhwydwaith o gleientiaid: yn cyhoeddi cyfeiriadau IP, gweinyddwyr DNS, porth rhagosodedig a danteithion tebyg.

Gadewch i ni ddechrau gyda dnsmasq:

# yum install dnsmasq

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

ei olygu at eich dant.

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

Mae'r “hud” yma yn gorwedd yn y paramedr rhwym-dynamig, sy'n dweud wrth yr ellyll dnsmasq i aros nes ei fod yn ymddangos ar y system rhyngwyneb = lan, ac nid llewygu o ffit o unigrwydd balch ar ôl y dechrau.

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

6. HOSTAPD

Ac yn olaf, y ffurfweddau hostapd hud. Nid oes gennyf unrhyw amheuaeth bod rhywun yn darllen yr erthygl hon i chwilio am yr union linellau gwerthfawr hyn.

Cyn gosod hostapd, mae angen i chi oresgyn y “problem unffurfiaeth”. Gall yr addasydd Wi-Fi adeiledig wlan0 newid ei enw yn hawdd i wlan1 wrth gysylltu offer Wi-Fi USB ychwanegol. Felly, byddwn yn trwsio'r enwau rhyngwyneb yn y ffordd ganlynol: byddwn yn creu enwau unigryw ar gyfer yr addaswyr (diwifr) ac yn eu clymu i gyfeiriadau MAC.

Ar gyfer yr addasydd Wi-Fi adeiledig, sy'n dal i fod yn wlan0:

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

Rydym yn creu /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Nawr byddwn yn sicr o hynny wl0 - Mae hwn yn Wi-Fi adeiledig. Rydyn ni'n ailgychwyn y Mafon i wneud yn siŵr o hyn.

Gosod:

# yum install hostapd wireless-tools

Ffeil ffurfweddu /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

Heb anghofio am eiliad Pwyllgor Argyfwng y Wladwriaeth, newid y paramedrau sydd eu hangen arnom a gwirio â llaw am ymarferoldeb:

# hostapd /etc/hostapd/hostapd.conf

Bydd hostapd yn cychwyn yn y modd rhyngweithiol, gan ddarlledu ei gyflwr i'r consol. Os nad oes unrhyw wallau, yna bydd cleientiaid sy'n cefnogi modd AC yn gallu cysylltu â'r pwynt mynediad. I atal hostapd - Ctrl-C.

Y cyfan sydd ar ôl yw galluogi hostapd yng nghychwyniad y system. Os gwnewch y peth safonol (systemctl galluogi hostapd), yna ar ôl yr ailgychwyn nesaf gallwch gael cythraul yn “rholio i mewn gwaed” gyda'r diagnosis “rhyngwyneb wl0 heb ei ganfod" . O ganlyniad i “anrhefn gyfochrog,” cychwynnodd hostapd yn gyflymach nag y daeth y cnewyllyn o hyd i'r addasydd diwifr.

Mae'r Rhyngrwyd yn llawn atebion: o seibiant gorfodol cyn dechrau'r ellyll (sawl munud), i ellyll arall sy'n monitro ymddangosiad y rhyngwyneb ac (ail)gychwyn y pad gwesteiwr. Mae'r atebion yn eithaf ymarferol, ond yn ofnadwy o hyll. Rydym yn galw ar yr un gwych am help systemd gyda'i “nodau” a “tasgau” a “dibyniaethau”.

Copïwch ffeil y gwasanaeth dosbarthu i /etc/systemd/system/hostapd.service:

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

a lleihau ei gynnwys i'r ffurf ganlynol:

[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

Mae hud y ffeil gwasanaeth wedi'i diweddaru yn gorwedd yn rhwymiad deinamig hostapd i'r targed newydd - y rhyngwyneb wl0. Pan fydd y rhyngwyneb yn ymddangos, mae'r ellyll yn cychwyn; pan fydd yn diflannu, mae'n stopio. Ac mae hyn i gyd ar-lein - heb ailgychwyn y system. Bydd y dechneg hon yn arbennig o ddefnyddiol wrth gysylltu addasydd Wi-Fi USB â Mafon.

Nawr gallwch chi:

# systemctl enable hostapd
# reboot

7. IPTABLES

“Beth???” © Ydw, ydw! Dim systemd. Dim newfangled yn cyfuno (yn y ffurf firewalld), sy'n gwneud yr un peth yn y pen draw.

Gadewch i ni ddefnyddio'r hen un da iptables, y bydd eu gwasanaethau, ar ôl cychwyn, yn llwytho rheolau rhwydwaith i'r cnewyllyn ac yn cau'n dawel heb aros yn breswylydd a heb ddefnyddio adnoddau. systemd Mae gan gain IPMasquerade=, ond byddwn yn dal i ymddiried y cyfieithiad cyfeiriad (NAT) a wal dân i iptables.

Gosod:

# yum install iptables-services
# systemctl enable iptables ip6tables

Mae'n well gen i storio'r cyfluniad iptables fel sgript (enghraifft):

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

Rydym yn gweithredu'r sgript uchod ac yn colli'r gallu i sefydlu cysylltiadau SSH gwifrau newydd â'r Mafon. Mae hynny'n iawn, rydym wedi gwneud llwybrydd Wi-Fi, y mae mynediad iddo “trwy'r Rhyngrwyd” wedi'i wahardd yn ddiofyn - dim ond “dros yr awyr” bellach. Rydyn ni'n cysylltu cebl Ethernet y darparwr ac yn dechrau syrffio!

8. Bonws: +2,4GHz

Pan wnes i ymgynnull y llwybrydd Mafon cyntaf gan ddefnyddio'r llun a ddisgrifiwyd uchod, darganfyddais nifer o declynnau yn fy nghartref nad oeddent, oherwydd cyfyngiadau eu dyluniad Wi-Fi, yn gallu gweld y “mafon” o gwbl. Roedd ad-drefnu'r llwybrydd i weithio yn 802.11b/g/n yn anchwaraeon, gan nad oedd y cyflymder uchaf “dros yr awyr” yn yr achos hwn yn fwy na 40 Mbit, ac mae fy hoff ddarparwr Rhyngrwyd yn cynnig 100 (trwy gebl) i mi.

Mewn gwirionedd, mae datrysiad i'r broblem eisoes wedi'i ddyfeisio: ail ryngwyneb Wi-Fi yn gweithredu ar amledd o 2,4 GHz, ac ail bwynt mynediad. Mewn stondin gyfagos prynais nid y gyntaf, ond yr ail “chwiban” USB Wi-Fi y deuthum ar ei thraws. Cafodd y gwerthwr ei boenydio gan gwestiynau am y chipset, cydnawsedd â chnewyllyn ARM Linux a'r posibilrwydd o weithio yn y modd AP (fe oedd y cyntaf i ddechrau).

Rydym yn ffurfweddu'r “chwiban” trwy gyfatebiaeth â'r addasydd Wi-Fi adeiledig.

Yn gyntaf, gadewch i ni ei ailenwi i 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

Byddwn yn ymddiried rheolaeth y rhyngwyneb Wi-Fi newydd i ellyll hostapd ar wahân, a fydd yn dechrau ac yn stopio yn dibynnu ar bresenoldeb “chwiban” wedi'i ddiffinio'n llym yn y system: wl1.

Ffeil ffurfweddu /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]

Mae cynnwys y ffeil hon yn dibynnu'n uniongyrchol ar fodel yr addasydd Wi-Fi USB, felly gall copi / past banal eich methu.

Copïwch ffeil y gwasanaeth dosbarthu i /etc/systemd/system/hostapd2.service:

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

a lleihau ei gynnwys i'r ffurf ganlynol:

[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

Y cyfan sydd ar ôl yw galluogi enghraifft newydd o hostapd:

# systemctl enable hostapd2

Dyna i gyd! Tynnwch y “chwiban” a'r “mafon” ei hun, edrychwch ar y rhwydweithiau diwifr o'ch cwmpas.

Ac yn olaf, rwyf am eich rhybuddio am ansawdd yr addasydd USB Wi-Fi a chyflenwad pŵer y Mafon. Gall chwibaniad poeth weithiau achosi i'r mafon rewi oherwydd trafferthion trydanol tymor byr.

Ffynhonnell: hab.com

Ychwanegu sylw