Raspberry Pi + CentOS = Wi-Fi Hotspot (eða hindberjabeini með rauðum hatti)

Það er mikið magn upplýsinga á netinu um að búa til Wi-Fi aðgangsstaði byggða á Raspberry eins borðs tölvu. Að jafnaði þýðir þetta að nota Raspbian stýrikerfið sem er innbyggt í Raspberry.

Þar sem ég er fylgjandi RPM-undirstaða kerfa gat ég ekki farið framhjá þessu litla kraftaverki og ekki prófað ástkæra CentOS minn á því.

Greinin veitir leiðbeiningar um gerð 5GHz/AC Wi-Fi beins úr Raspberry Pi 3 Model B+ byggt á CentOS stýrikerfinu. Það verða nokkur stöðluð en lítt þekkt brellur, og sem bónus - teikning til að tengja viðbótar Wi-Fi búnað við Raspberry, sem gerir það kleift að starfa samtímis í nokkrum stillingum (2,4+5GHz).

Raspberry Pi + CentOS = Wi-Fi Hotspot (eða hindberjabeini með rauðum hatti)
(blanda af frjálsum myndum)

Við skulum athuga strax að sumir kosmískir hraðar munu ekki virka. Ég kreisti að hámarki 100 Mbps úr Raspberry mínum yfir loftið, og þetta nær yfir hraða netþjónustunnar minnar. Af hverju þarf svona slakan AC, ef í orði er hægt að fá hálfan gígabit jafnvel á N? Ef þú hefur spurt sjálfan þig þessarar spurningar skaltu fara í búðina til að kaupa alvöru leið með átta ytri loftnetum.

0. Það sem þú þarft

  • Reyndar er „hindberjavaran“ sjálf af stærðargráðu: Pi 3 Model B+ (til að ná hinum eftirsótta 5GHz hraða og rásum);
  • Gott microSD >= 4GB;
  • Vinnustöð með Linux og microSD lesanda/ritara;
  • Framboð á nægilegri færni í Linux, greinin er fyrir þjálfaðan Geek;
  • Þráðlaus nettenging (eth0) milli Raspberry og Linux, keyrandi DHCP miðlara á staðarnetinu og internetaðgangur frá báðum tækjum.

Smá athugasemd við síðasta atriðið. „Hvort kom á undan, eggið eða...“ hvernig á að búa til Wi-Fi bein án netaðgangsbúnaðar? Skiljum þessa skemmtilegu æfingu utan við greinina og gerum einfaldlega ráð fyrir að Raspberryið sé tengt staðarnetinu með þráðum og hafi aðgang að internetinu. Í þessu tilfelli þurfum við ekki auka sjónvarp og stjórntæki til að setja upp „hindberja“.

1. Settu upp CentOS

Heimasíða verkefnisins

Þegar þessi grein er skrifuð er hlaupandi útgáfan af CentOS á tækinu 32-bita. Einhvers staðar á veraldarvefnum rakst ég á þær skoðanir að frammistaða slíkra stýrikerfa á 64-bita ARM arkitektúr minnki um allt að 20%. Ég mun skilja þessa stund eftir án athugasemda.

Á Linux skaltu hlaða niður lágmarksmyndinni með kjarnanum "-RaspberryPI-"og skrifaðu það á microSD:

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

Áður en byrjað er að nota myndina munum við fjarlægja SWAP skiptinguna úr henni, stækka rótina í allt tiltækt magn og losa okkur við SELinux. Reikniritið er einfalt: Búðu til afrit af rótinni á Linux, eyddu öllum skiptingum úr microSD nema þeirri fyrstu (/boot), búðu til nýja rót og skilaðu innihaldi hennar úr afritinu.

Dæmi um nauðsynlegar aðgerðir (alvarlegt stjórnborðsúttak)

# 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

Eftir að hafa pakkað upp innihaldi rótar skiptingarinnar er kominn tími til að gera nokkrar breytingar á því.

Slökktu á SELinux í /mnt/etc/selinux/config:

SELINUX=disabled

Klippingu /mnt/etc/fstab, skilur eftir í henni aðeins tvær færslur um skiptingarnar: boot (/boot, engar breytingar) og root (við breytum UUID gildinu, sem hægt er að finna út með því að rannsaka úttak blkid skipunarinnar á Linux):

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

Að lokum breytum við ræsibreytum kjarna: við tilgreinum nýja staðsetningu fyrir rótarskiptingu, slökkva á framleiðslu kembiupplýsinga og (valfrjálst) banna kjarnanum að úthluta IPv6 vistföngum á netviðmót:

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

Hér er innihaldið /mnt/cmdline.txt í eftirfarandi form (ein lína án bandstrik):

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

Lokið:

# cd
# umount /mnt
# sync

Við endurraða microSD í „hindberjum“, ræsum það og fáum netaðgang að því í gegnum ssh (rót/centos).

2. Uppsetning CentOS

Fyrstu þrjár óhagganlegu hreyfingarnar: passwd, yum-uppfærsla, endurræsa.

Við gefum netstjórnun nettengdur:

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

Búðu til skrá (ásamt möppum) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Við endurræsum „hindberið“ og fáum aftur netaðgang að því í gegnum ssh (IP-talan gæti breyst). Gefðu gaum hvað er notað /etc/resolv.conf, búin til áðan af Network Manager. Þess vegna, ef upp koma vandamál við að leysa, breyttu innihaldi þess. Notaðu systemd-leyst við munum ekki.

Við fjarlægjum „óþarfa“, viðgerðum og flýtum hleðslu stýrikerfisins:

# 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

Hver þarf cron og hver meltir ekki hið innbyggða systemd tímamælir, getur staðfest hvað vantar. / var / log- og líttu í gegnum journalctl. Ef þú þarft skráningarferil (sjálfgefið eru upplýsingar aðeins geymdar frá því augnabliki sem kerfið ræsir):

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

Slökktu á notkun IPv6 með grunnþjónustu (ef þess er krafist)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Mikilvægi tímans á „hindberjum“ er mikilvægur hlutur. Þar sem út úr kassanum er engin vélbúnaðargeta til að vista núverandi stöðu klukkunnar við endurræsingu, þarf samstillingu. Mjög góður og fljótur púki fyrir þetta er kórónía - þegar uppsett og byrjar sjálfkrafa. Þú getur breytt NTP netþjónum í þá næstu.

/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

Til að stilla tímabeltið sem við munum nota brellu. Þar sem markmið okkar er að búa til Wi-Fi bein sem starfar á 5GHz tíðnum, munum við undirbúa okkur fyrir óvart fyrirfram eftirlitsstofnanna:

# namm upplýsingar crda
Samantekt: Reglugerðarpúkinn fyrir 802.11 þráðlaust net

Þessi vonda hönnun, einnig byggð á tímabeltinu, „bannar“ notkun (í Rússlandi) á 5GHz tíðnum og rásum með „háum“ tölum. Galdurinn er að stilla tímabelti án þess að nota nöfn heimsálfa/borga, það er í stað þess að:

# timedatectl set-timezone Europe/Moscow

Við ýtum á:

# timedatectl set-timezone Etc/GMT-3

Og lokahnykkurinn á hárgreiðslu kerfisins:

# hostnamectl set-hostname router

/rót/.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 viðbætur

Allt sem sagt var hér að ofan getur talist fullkomnar leiðbeiningar um uppsetningu „vanillu“ CentOS á Raspberry Pi. Þú ættir að enda með tölvu sem (endur)ræsir sig á innan við 10 sekúndum, notar minna en 15 megabæti af vinnsluminni og 1.5 gígabæt af microSD (reyndar minna en 1 gígabæti vegna ófullkomins /ræsingar, en við skulum vera heiðarleg).

Til að setja upp hugbúnað fyrir Wi-Fi aðgangsstað á þessu kerfi þarftu að auka aðeins getu venjulegu CentOS dreifingarinnar. Fyrst af öllu skulum við uppfæra bílstjórann (fastbúnað) innbyggða Wi-Fi millistykkisins. Á heimasíðu verkefnisins segir:

Wifi á Raspberry 3B og 3B+

Ekki er heimilt að dreifa Raspberry PI 3B/3B+ fastbúnaðarskrám af CentOS Project. Þú getur notað eftirfarandi greinar til að skilja málið, fá fastbúnaðinn og setja upp wifi.

Það sem er bannað fyrir CentOS verkefnið er ekki bannað okkur til einkanota. Við skiptum út Wi-Fi fastbúnaði fyrir dreifingu í CentOS fyrir samsvarandi frá Broadcom þróunaraðilum (þeir sömu hatuðu tvöfalda kubbarnir...). Þetta gerir þér sérstaklega kleift að nota AC í aðgangsstaðaham.

Wi-Fi vélbúnaðar uppfærslaFinndu út gerð tækisins og núverandi fastbúnaðarútgáfu:

# 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 

Við sjáum að fastbúnaðarútgáfan er 7.45.18 dagsett 01.03.2015/XNUMX/XNUMX og muna eftir eftirfarandi númerasetti: 43455 (brcmfmac43455-sdio.bin).

Sæktu núverandi Raspbian mynd. Latir geta skrifað myndina á microSD og tekið skrárnar með fastbúnaðinum þaðan. Eða þú getur tengt rótarskiptingu myndarinnar í Linux og afritað það sem þú þarft þaðan:

# 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

Fastbúnaðarskrár Wi-Fi millistykkisins sem myndast verður að afrita og skipta út fyrir „hindberja“ í möppuna /usr/lib/firmware/brcm/

Við endurræsum framtíðarbeini og brosum ánægð:

# 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 

Útgáfa: 7.45.154 dagsett 27.02.2018.

Og auðvitað 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. Netstillingar og áskoranir framundan

Eins og við samþykktum hér að ofan er „hindberið“ tengt með „vír“ við staðarnetið. Gerum ráð fyrir að veitandinn veiti internetaðgang á nákvæmlega sama hátt: heimilisfangið á almenningsnetinu er gefið út með virkum hætti af DHCP-þjóninum (kannski með MAC-bindingu). Í þessu tilfelli, eftir lokauppsetningu hindbersins, þarftu bara að „stinga“ snúru þjónustuveitunnar inn í það og þú ert búinn. Heimild með því að nota systemd-networkd - efni sérstakrar greinar og er ekki fjallað um það hér.

Wi-Fi tengi Raspberry er staðarnet og innbyggði Ethernet millistykkið (eth0) er utanaðkomandi. Við skulum númera staðarnetið með kyrrstöðu, til dæmis: 192.168.0.0/24. Raspberry heimilisfang: 192.168.0.1. DHCP þjónn mun starfa á ytra netinu (internetinu).

Samræmisvandamál við nafngiftir и frægur Gvatemala forritari - tvö vandræði sem bíða allra sem stilla netviðmót og þjónustu í kerfisdreifingum.

Samhliða glundroði (lýrísk útrás)Lennart Pottering hefur tekið saman sitt eigið forrit systemd Mjög gott. Þetta systemd ræsir önnur forrit svo hratt að þeir, sem hafa ekki tíma til að jafna sig eftir flautuhögg dómarans, hrasa og detta í byrjun án þess að byrja á hindrunarbrautinni.

En í alvöru talað, árásargjarn samhliða ræst ferla í upphafi systemd OS er eins konar „asnabrú“ fyrir vana raðbundna LSB sérfræðinga. Sem betur fer reynist það einfalt að koma reglu á þennan „samhliða glundroða“, þó ekki alltaf augljóst.

Við búum til tvö sýndarbrúarviðmót með stöðugum nöfnum: lan и dvína. Við munum „tengja“ Wi-Fi millistykkið við þann fyrsta og eth0 „hindberja“ við þann síðari.

/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=já útilokar þörfina á að gefa vísbendingu um kjarnann í gegnum sysctl til að virkja leið.
MACaddress= Sleppum athugasemdum og breytum ef þörf krefur.

Fyrst „tengjum“ við eth0. Við munum eftir „jafnvægisvandamálinu“ og notum aðeins MAC vistfang þessa viðmóts, sem má finna út, til dæmis, svona:

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

Við sköpum /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Við eyðum fyrri stillingarskránni eth0, endurræsum Raspberry og fáum netaðgang að henni (IP-talan mun líklega breytast):

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

5.DNSMASQ

Fyrir að búa til Wi-Fi aðgangsstaði er ekkert betra en sætt par dnsmasq + hostapd hef ekki fattað það ennþá. Að mínu mati.

Ef einhver gleymdi, þá...hostapd - þetta er hluturinn sem stjórnar Wi-Fi millistykki (sérstaklega mun það sjá um að tengja þá við sýndarmyndina lan „hindberjum“), heimilar og skráir þráðlausa viðskiptavini.

dnsmasq — stillir netstafla viðskiptavina: gefur út IP tölur, DNS netþjóna, sjálfgefna gátt og álíka ánægju.

Byrjum á dnsmasq:

# yum install dnsmasq

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

breyttu því að þínu skapi.

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

„Galdurinn“ hér liggur í stikunni bind-dýnamískt, sem segir dnsmasq púknum að bíða þar til hann birtist á kerfinu tengi=lan, og falla ekki yfir af stoltri einmanaleika eftir ræsingu.

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

6. HOSTAPD

Og að lokum, magic hostapd stillingarnar. Ég efast ekki um að einhver sé að lesa þessa grein í leit að þessum dýrmætu línum.

Áður en þú setur upp hostapd þarftu að sigrast á „jafnvægisvandamálinu“. Innbyggði Wi-Fi millistykkið wlan0 getur auðveldlega breytt nafni sínu í wlan1 þegar viðbótar USB Wi-Fi búnaður er tengdur. Þess vegna munum við laga viðmótsnöfnin á eftirfarandi hátt: við munum koma með einstök nöfn fyrir (þráðlausu) millistykkin og binda þau við MAC vistföng.

Fyrir innbyggða Wi-Fi millistykkið, sem er enn wlan0:

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

Við sköpum /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Nú munum við vera viss um það wl0 - Þetta er innbyggt Wi-Fi. Við endurræsum Raspberry til að ganga úr skugga um þetta.

Setja upp:

# yum install hostapd wireless-tools

Stillingarskrá /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

Án þess að gleyma í augnablik Neyðarnefnd ríkisins, breyttu breytunum sem við þurfum og athugaðu handvirkt fyrir virkni:

# hostapd /etc/hostapd/hostapd.conf

hostapd mun ræsast í gagnvirkum ham og senda út ástand þess til stjórnborðsins. Ef það eru engar villur munu viðskiptavinir sem styðja AC-stillingu geta tengst aðgangsstaðnum. Til að stöðva hostapd - Ctrl-C.

Allt sem er eftir er að virkja hostapd í ræsingu kerfisins. Ef þú gerir staðlaða hlutinn (systemctl virkja hostapd), þá geturðu eftir næstu endurræsingu fengið púka sem „rúllar í blóði“ með greiningunni „tengi wl0 fannst ekki". Sem afleiðing af „samhliða glundroða“ byrjaði hostapd hraðar en kjarninn fann þráðlausa millistykkið.

Netið er fullt af úrræðum: allt frá þvinguðum tímamörkum áður en púkinn er ræstur (nokkrar mínútur), yfir í annan púka sem fylgist með útliti viðmótsins og (endur)ræsir hostpad. Lausnirnar eru alveg framkvæmanlegar, en hræðilega ljótar. Við köllum til hinnar frábæru um hjálp systemd með sínum „markmiðum“ og „verkefnum“ og „háðum“.

Afritaðu dreifingarþjónustuskrána til /etc/systemd/system/hostapd.service:

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

og minnka innihald þess í eftirfarandi form:

[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

Galdurinn við uppfærðu þjónustuskrána liggur í kraftmikilli bindingu hostapd við nýja skotmarkið - wl0 viðmótið. Þegar viðmótið birtist byrjar púkinn; þegar hann hverfur hættir hann. Og þetta er allt á netinu - án þess að endurræsa kerfið. Þessi tækni mun vera sérstaklega gagnleg þegar USB Wi-Fi millistykki er tengt við hindberja.

Nú geturðu:

# systemctl enable hostapd
# reboot

7. IPTAFLAR

"Hvað???" © Já, já! Enginn systemd. Engar nýmóðins keðjur (í formi firewalld), sem á endanum gera það sama.

Notum gamla góða iptables, þar sem þjónusta þeirra mun hlaða netreglum inn í kjarnann og leggja hljóðlega niður án þess að vera áfram búsettur og án þess að neyta auðlinda eftir að hún er hafin. systemd hefur glæsilegan IPMasquerade=, en við munum samt fela heimilisfangsþýðingu (NAT) og eldvegg til iptables.

Setja upp:

# yum install iptables-services
# systemctl enable iptables ip6tables

Ég vil frekar geyma iptables stillingar sem handrit (dæmi):

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

Við keyrum ofangreinda skriftu og missum getu til að koma á nýjum hlerunarbúnaði SSH tengingum við Raspberry. Það er rétt, við höfum búið til Wi-Fi bein, sem aðgangur að "í gegnum internetið" er sjálfgefið bannaður - nú aðeins "í loftinu". Við tengjum Ethernet snúru þjónustuveitunnar og byrjum að vafra!

8. Bónus: +2,4GHz

Þegar ég setti saman fyrsta hindberjabeini með teikningunni sem lýst er hér að ofan, uppgötvaði ég fjölda græja á heimilinu mínu sem, vegna takmarkana á Wi-Fi hönnun þeirra, sáu alls ekki „hindberið“. Að endurstilla beininn til að virka í 802.11b/g/n var óíþróttamannslegt, þar sem hámarkshraðinn „í loftinu“ í þessu tilfelli fór ekki yfir 40 Mbit og uppáhalds netveitan mín býður mér 100 (í gegnum kapal).

Reyndar hefur lausn á vandanum þegar verið fundin upp: annað Wi-Fi tengi sem starfar á tíðninni 2,4 GHz og annar aðgangsstaður. Í bás í nágrenninu keypti ég ekki það fyrsta, heldur annað USB Wi-Fi „flautið“ sem ég rakst á. Seljandinn var þjakaður af spurningum um kubbasettið, samhæfni við ARM Linux kjarna og möguleikann á að vinna í AP ham (hann var fyrstur til að byrja).

Við stillum „flautið“ á hliðstæðan hátt með innbyggða Wi-Fi millistykkinu.

Fyrst skulum við endurnefna það í 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

Við munum fela stjórnun nýja Wi-Fi viðmótsins sérstökum hostapd púka, sem mun ræsa og hætta eftir því að strangt skilgreint „flaut“ er í kerfinu: wl1.

Stillingarskrá /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]

Innihald þessarar skráar fer beint eftir gerð USB Wi-Fi millistykkisins, þannig að banal copy/paste gæti brugðist þér.

Afritaðu dreifingarþjónustuskrána til /etc/systemd/system/hostapd2.service:

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

og minnka innihald þess í eftirfarandi form:

[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

Allt sem er eftir er að virkja nýtt tilvik af hostapd:

# systemctl enable hostapd2

Það er allt og sumt! Dragðu í „flautuna“ og „hindberið“ sjálft, skoðaðu þráðlausu netin í kringum þig.

Og að lokum vil ég vara þig við gæðum USB Wi-Fi millistykkisins og aflgjafa Raspberry. Tengd „heit flaut“ getur stundum valdið „hindberjafrystingu“ vegna skammtíma rafmagnsvandamála.

Heimild: www.habr.com

Bæta við athugasemd