Raspberry Pi + CentOS = Wi-Fi Hotspot (edo mugurdi bideratzailea kapela gorri batekin)

Interneten informazio ugari dago Raspberry plaka bakarreko ordenagailu batean oinarritutako Wi-Fi sarbide puntuak sortzeari buruz. Oro har, horrek Raspbian-en jatorrizko sistema eragilea erabiltzea esan nahi du.

RPMn oinarritutako sistemen atxikimendua izanik, ezin nuen mirari txiki honetatik pasatu eta ez nuen nire CentOS maitea bertan probatu.

Artikuluak CentOS sistema eragilean oinarritutako Raspberry Pi 5 Model B+ batetik 3GHz/AC Wi-Fi bideratzailea egiteko argibideak ematen ditu. Hainbat trikimailu estandar baina ezezagunak izango dira, eta bonus gisa - Wi-Fi ekipamendu osagarriak Raspberry-ra konektatzeko marrazki bat, aldi berean hainbat modutan (2,4+5GHz) funtziona dezan.

Raspberry Pi + CentOS = Wi-Fi Hotspot (edo mugurdi bideratzailea kapela gorri batekin)
(doan eskuragarri dauden irudien nahasketa)

Kontuan izan dezagun berehala abiadura kosmiko batzuek ez dutela funtzionatuko. Gehienez 100 Mbps ateratzen ditut nire Raspberry airetik, eta honek nire Interneteko hornitzailearen abiadura estaltzen du. Zergatik behar duzu hain geldoa AC, teorian gigabit erdia lor dezakezu N-n ere? Galdera hau egin badiozu zeure buruari, zoaz dendara kanpoko zortzi antena dituen benetako bideratzaile bat erostera.

0. Zer beharko duzu

  • Egia esan, "mugurdi produktua" bera kalibrekoa da: Pi 3 Model B+ (5GHz-ko abiadura eta kanal preziatua lortzeko);
  • MicroSD ona >= 4GB;
  • Lan-estazioa Linux eta microSD irakurgailu/idazlearekin;
  • Linux-en trebetasun nahikoak eskuragarri izatea, artikulua Geek trebatu batentzat da;
  • Sare kable bidezko (eth0) konexioa Raspberry eta Linuxen artean, sare lokalean DHCP zerbitzaria exekutatzen duena eta bi gailuetatik Interneterako sarbidea.

Azken puntuari buruzko iruzkin txiki bat. “Zein izan zen lehenengo, arrautza edo...” nola egin Wi-Fi bideratzaile bat Internetera sartzeko ekiporik ezean? Utz dezagun ariketa dibertigarri hau artikuluaren esparrutik kanpo eta pentsa dezagun Raspberry sare lokalera hari bidez konektatuta dagoela eta Interneterako sarbidea duela. Kasu honetan, ez dugu telebista gehigarririk eta manipulatzailerik beharko "mugurdia" konfiguratzeko.

1. Instalatu CentOS

Proiektuaren hasierako orria

Artikulu hau idazteko unean, CentOS-en exekutatzen ari den gailuan 32 biteko bertsioa da. Nonbait World Wide Web-en iritzia topatu nuen 64 biteko ARM arkitekturan horrelako sistema eragileen errendimendua % 20 murrizten dela. Une hau iruzkin gabe utziko dut.

Linux-en, deskargatu gutxieneko irudia nukleoarekin "-RaspberryPI-"eta idatzi microSD-ra:

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

Irudia erabiltzen hasi aurretik, SWAP partizioa kenduko dugu, erroa zabalduko dugu erabilgarri dagoen bolumen osora eta SELinux kenduko dugu. Algoritmoa sinplea da: egin erroaren kopia Linux-en, ezabatu microSDko partizio guztiak lehenengoa izan ezik (/boot), sortu erro berri bat eta itzuli bere edukia kopiatik.

Beharrezko ekintzen adibidea (kontsolaren irteera gogorra)

# 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

Erro partizioaren edukia deskonprimitu ondoren, aldaketa batzuk egiteko garaia da.

Desgaitu SELinux-en /mnt/etc/selinux/config:

SELINUX=disabled

Edizioa /mnt/etc/fstab, bertan partizioei buruzko bi sarrera bakarrik utziz: boot (/boot, aldaketarik gabe) eta root (UUID balioa aldatzen dugu, Linux-en blkid komandoaren irteera aztertuta aurki dezakeguna):

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

Azkenik, nukleoaren abiarazte-parametroak aldatzen ditugu: erro-partizioaren kokapen berri bat zehazten dugu, arazketa-informazioaren irteera desgaitzen dugu eta (aukeran) nukleoari sareko interfazeetan IPv6 helbideak esleitzea debekatzen diogu:

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

Hona hemen edukia /mnt/cmdline.txt forma honetara (lerro bat marrarik gabe):

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

Amaitu:

# cd
# umount /mnt
# sync

MicroSD berrantolatzen dugu "mugurdira", abiarazi eta sarerako sarbidea lortzen dugu ssh bidez (root/centos).

2. CentOS konfiguratzea

Lehenengo hiru mugimendu astinezinak: passwd, yum-eta eguneratzea, berrabiarazi.

Sarearen kudeaketa oparitzen dugu sarean:

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

Sortu fitxategi bat (direktorioekin batera) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

"Mugurdia" berrabiarazi eta berriro sarerako sarbidea lortzen dugu ssh bidez (IP helbidea alda daiteke). Erreparatu zer erabiltzen den /etc/resolv.conf, Network Manager-ek lehenago sortua. Hori dela eta, konpontzeko arazoak izanez gero, editatu bere edukia. Erabili sistemak ebatzi du ez dugu egingo.

"Alferrikakoa" kentzen dugu, sistema eragilearen karga konpontzen eta bizkortzen dugu:

# 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

Nork behar du cron eta barneratua digeritzen ez duena sistemako tenporizadoreak, falta dena finkatu dezake. / Var / log- eta begiratu journalctl. Erregistroaren historia behar baduzu (lehenespenez, informazioa sistema abiarazten den unetik soilik gordetzen da):

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

Desgaitu oinarrizko zerbitzuen IPv6 erabilera (beharrezkoa bada)/ Etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

"Mugurdiaren" denboraren garrantzia gauza garrantzitsua da. Kutxatik kanpo ez dagoenez erlojuaren uneko egoera berrabiaraztean gordetzeko hardware gaitasunik, sinkronizazioa beharrezkoa da. Honetarako deabru oso ona eta azkarra da chrony - dagoeneko instalatuta eta automatikoki hasten da. NTP zerbitzariak hurbilen daudenetara alda ditzakezu.

/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

Erabiliko dugun ordu-eremua ezartzeko trikimailua. Gure helburua 5GHz-ko maiztasunetan funtzionatzen duen Wi-Fi bideratzailea sortzea denez, aldez aurretik ezustekoak prestatuko ditugu. erregulatzailea:

# yum info crda
Laburpena: 802.11 haririk gabeko sareetarako araudia betetzeko deabrua

Diseinu gaizto honek, ordu-eremuan oinarrituta ere, "debekatu" egiten du (Errusian) 5GHz-ko maiztasunak eta zenbaki "altuak" dituzten kanalak erabiltzea. Trikimailua ordu-eremu bat ezartzea da kontinenteen/hirien izenak erabili gabe, hau da, hau da:

# timedatectl set-timezone Europe/Moscow

Sakatzen dugu:

# timedatectl set-timezone Etc/GMT-3

Eta sistemaren orrazkerari azken ukituak:

# 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 gehigarriak

Goian esandako guztia Raspberry Pi-n "banilla" CentOS instalatzeko argibide osotzat har daiteke. 10 segundo baino gutxiagoan (berriro) abiarazten duen PC batekin amaitu beharko zenuke, 15 Megabyte RAM eta 1.5 Gigabyte microSD baino gutxiago erabiltzen dituena (egia esan, 1 Gigabyte baino gutxiago / abiarazte osatugabe baten ondorioz, baina zintzoak izan gaitezen).

Sistema honetan Wi-Fi sarbide-puntuaren softwarea instalatzeko, CentOS banaketa estandarraren gaitasunak apur bat zabaldu beharko dituzu. Lehenik eta behin, berritu dezagun integratutako Wi-Fi egokigailuaren kontrolatzailea (firmwarea). Proiektuaren hasierako orrialdeak dio:

Wifi Raspberry 3B eta 3B+-n

Raspberry PI 3B/3B+ firmware fitxategiak ezin ditu CentOS Proiektuak banatu. Artikulu hauek erabil ditzakezu arazoa ulertzeko, firmwarea lortzeko eta wifia konfiguratzeko.

CentOS proiekturako debekatuta dagoena ez dago guretzat erabilera pertsonalerako debekatuta. CentOS-en Wi-Fi-ren banaketaren firmwarea Broadcom-eko garatzaileei dagokienarekin ordezkatzen dugu (gorrototako bitar blob haiek...). Honek, bereziki, AC sarbide moduan erabiltzeko aukera emango dizu.

Wi-Fi firmwarearen eguneratzeaAurki itzazu gailuaren modeloa eta uneko firmwarearen bertsioa:

# 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 

Firmwarearen bertsioa 7.45.18/01.03.2015/XNUMXko XNUMX dela ikusten dugu, eta honako zenbaki multzo hau gogoratzen dugu: 43455 (brcmfmac43455-sdio.bin).

Deskargatu Raspbian egungo irudia. Alferrak irudia microSDra idatz dezakete eta hortik firmwarearekin fitxategiak har ditzakete. Edo irudiaren root partizioa Linux-en munta dezakezu eta hortik behar duzuna kopiatu:

# 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

Sortutako Wi-Fi egokitzaileen firmware fitxategiak kopiatu eta "mugurdi"-rekin ordezkatu behar dira direktorioan /usr/lib/firmware/brcm/

Etorkizuneko bideratzailea berrabiarazi eta pozik irribarre egiten dugu:

# 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 

Bertsioa: 7.45.154/27.02.2018/XNUMXko XNUMX.

Eta noski 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. Sarearen konfigurazioa eta etorkizuneko erronkak

Goian adostu genuen bezala, "mugurdia" "kablez" sare lokalera konektatzen da. Demagun hornitzaileak Interneterako sarbidea modu berean ematen duela: sare publikoko helbidea DHCP zerbitzariak dinamikoki igortzen du (agian MAC loturarekin). Kasu honetan, mugurdiaren azken konfigurazioa egin ondoren, hornitzailearen kablea "konektatu" besterik ez duzu behar eta listo. Baimena erabiliz systemd-networkd - aparteko artikulu baten gaia eta ez da hemen eztabaidatzen.

Raspberry-ren Wi-Fi interfazea(k) sare lokala da, eta integratutako Ethernet egokitzailea (eth0) kanpokoa da. Zenbaki dezagun sare lokala modu estatikoan, adibidez: 192.168.0.0/24. Mugurdi helbidea: 192.168.0.1. DHCP zerbitzari batek kanpoko sarean (Internet) funtzionatuko du.

Izenen koherentziaren arazoa и Guatemalako programatzaile ospetsua - Sistemaren banaketan sareko interfazeak eta zerbitzuak konfiguratzen dituen edonork zain dituen bi arazo.

Kaos paraleloa (digresio lirikoa)Lennart Pottering-ek bere programa osatu du systemd Oso ondo. Hau systemd beste programa batzuk hain azkar abiarazten ditu, ezen, epailearen txistuaren kolpetik errekuperatzeko astirik ez dutenez, irteeran estropezu egin eta erortzen dira oztopo-ibilbidea hasi ere egin gabe.

Baina serioski, systemd OS-aren hasieran abiarazitako prozesuen paralelismo oldarkorra "asto-zubi" moduko bat da LSB sekuentzialeko espezialista onduentzat. Zorionez, "kaos paralelo" horri ordena jartzea erraza suertatzen da, beti agerikoa ez den arren.

Bi zubi-interfaze birtual sortzen ditugu izen konstanteekin: lan и wan. Wi-Fi egokitzailea(k) lehenengora "konektatuko" dugu, eta eth0 "mugurdia" bigarrenera.

/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=bai sysctl bidez nukleoari iradokizunak emateko beharra kentzen du bideraketa gaitzeko.
MACHelbidea= Utzi iruzkinak eta aldatu behar izanez gero.

Lehenik eth0 "konektatzen" dugu. "Uniformetasun arazoa" gogoratzen dugu eta interfaze honen MAC helbidea soilik erabiltzen dugu, adibidez, honela aurki daitekeena:

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

Guk sortzen dugu /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Aurreko eth0 konfigurazio fitxategia ezabatzen dugu, Raspberry berrabiarazi eta sarerako sarbidea lortzen dugu (IP helbidea aldatuko da ziurrenik):

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

5.DNSMASQ

Wi-Fi sarbide puntuak egiteko, ezer ez da pare goxo bat baino dnsmasq + hostapd oraindik ez dut asmatu. Nire ustez.

Norbaitek ahaztu badu, orduan...hostapd - hau da Wi-Fi egokigailuak kontrolatzen dituena (bereziki, birtualera konektatzeaz arduratuko da lan "mugurdiak"), haririk gabeko bezeroak baimendu eta erregistratzen ditu.

dnsmasq — Bezeroen sareko pila konfiguratzen du: IP helbideak, DNS zerbitzariak, atebide lehenetsia eta antzeko gozamenak igortzen ditu.

Has gaitezen dnsmasq-ekin:

# yum install dnsmasq

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

edita ezazu zure gustura.

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

Hemen "magia" parametroan dago lotu-dinamikoa, dnsmasq deabruari sisteman agertu arte itxaron dezala esaten diona interfazea=lan, eta ez ahuldu hasi osteko bakardade harro baten ondorioz.

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

6. OSTALARITZA

Eta azkenik, hostapd konfigurazio magikoak. Ez dut zalantzarik norbait artikulu hau irakurtzen ari dela, hain zuzen, lerro preziatu horien bila.

Hostapd instalatu aurretik, "uniformitate arazoa" gainditu behar duzu. Wlan0 Wi-Fi egokitzaile integratuak bere izena wlan1 izatera erraz alda dezake USB Wi-Fi ekipo osagarriak konektatzean. Hori dela eta, honela konponduko ditugu interfaze-izenak: (haririk gabeko) egokitzaileentzako izen esklusiboak sortuko ditugu eta MAC helbideetara lotuko ditugu.

Eraikitako Wi-Fi egokigailurako, oraindik wlan0 dena:

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

Guk sortzen dugu /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Orain ziur egongo gara wl0 - Wi-Fi barneratua da. Raspberry berrabiarazten dugu hau ziurtatzeko.

Instalatu:

# yum install hostapd wireless-tools

Konfigurazio fitxategia /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

Une batez ahaztu gabe Estatuko Larrialdi Batzordea, aldatu behar ditugun parametroak eta eskuz egiaztatu funtzionaltasuna:

# hostapd /etc/hostapd/hostapd.conf

hostapd modu interaktiboan hasiko da, bere egoera kontsolara igorriz. Akatsik ez badago, AC modua onartzen duten bezeroak sarbide puntura konektatu ahal izango dira. Hostapd gelditzeko - Ctrl-C.

Sistemaren abiaraztean hostapd gaitzea besterik ez da geratzen. Gauza estandarra egiten baduzu (systemctl enable hostapd), hurrengo berrabiarazi ondoren deabru bat "odolean biraka" lor dezakezu diagnostikoarekin "ez da wl0 interfazea aurkitu". "Kaos paraleloaren" ondorioz, hostapd kernelak haririk gabeko egokitzailea aurkitu baino azkarrago hasi zen.

Internet erremedioz beteta dago: deabrua abiarazi aurretik behartutako denbora-muga batetik (zenbait minutu), interfazearen itxura kontrolatzen duen eta ostalari-panela (berriro) abiarazten duen beste daemon batera. Irtenbideak nahiko bideragarriak dira, baina izugarri itsusiak. Handiari laguntza eske deitzen diogu systemd bere “helburuekin” eta “zereginekin” eta “menpekotasunekin”.

Kopiatu banaketa zerbitzuaren fitxategia /etc/systemd/system/hostapd.service:

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

eta murriztu bere edukia forma honetara:

[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

Eguneratutako zerbitzu-fitxategiaren magia hostapd-ek helburu berriarekin duen lotura dinamikoan datza - wl0 interfazea. Interfazea agertzen denean, deabrua abiarazten da; desagertzen denean, gelditzen da. Eta hau guztia sarean dago, sistema berrabiarazi gabe. Teknika hau bereziki erabilgarria izango da USB Wi-Fi egokitzaile bat Raspberry batera konektatzean.

Orain egin dezakezu:

# systemctl enable hostapd
# reboot

7. IPTABLEAK

"Zer???" © Bai, bai! Bat ere ez systemd. Ez dago konbinazio berririk (forman firewalld), gauza bera egiten amaitzen dutenak.

Erabil dezagun zahar ona iptables, zeinen zerbitzuak, hasi ondoren, sare-arauak nukleoan kargatuko ditu eta isil-isilik itxiko dira egoiliar geratu gabe eta baliabideak kontsumitu gabe. systemd dotorea du IPMasquerade=, baina hala ere helbidearen itzulpena (NAT) eta suebakia iptablesen esku utziko ditugu.

Instalatu:

# yum install iptables-services
# systemctl enable iptables ip6tables

Nahiago dut iptables-en konfigurazioa script gisa gordetzea (adibidea):

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

Goiko script-a exekutatzen dugu eta Raspberry-rekin kabledun SSH konexio berriak ezartzeko gaitasuna galtzen dugu. Hori bai, Wi-Fi bideratzaile bat egin dugu, zeinaren sarbidea "Internet bidez" lehenespenez debekatuta dago - orain "aire bidez" soilik. Hornitzailearen Ethernet kablea konektatzen dugu eta nabigatzen hasten gara!

8. Bonua: +2,4GHz

Lehen Raspberry bideratzailea goian deskribatutako marrazkia erabiliz muntatu nuenean, nire etxeko hainbat tramankulu aurkitu nituen, Wi-Fi diseinuaren mugak direla eta, "mugurdia" batere ikusi ezin zutenak. Bideratzailea birkonfiguratzea 802.11b/g/n-n funtzionatzeko ez zen kirolik egin, kasu honetan "airean" gehienezko abiadura ez baitzen 40 Mbit-a gainditzen, eta nire Interneteko hornitzaile gogokoenak 100 eskaintzen ditu (kable bidez).

Izan ere, arazoari irtenbide bat asmatua dago jada: 2,4 GHz-ko maiztasunean funtzionatzen duen bigarren Wi-Fi interfaze bat eta bigarren sarbide puntu bat. Inguruko postu batean ez nuen lehenengoa erosi, baina bigarren USB Wi-Fi "txistua" topatu nuen. Saltzailea txipset-ari, ARM Linux nukleoekin bateragarritasunari eta AP moduan lan egiteko aukerari buruzko galderengatik oinazetuta zegoen (hasi zen lehena izan zen).

"Txistua" konfiguratzen dugu integratutako Wi-Fi egokigailuarekin analogiaz.

Lehenik eta behin, izena aldatu diezaiogun 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 interfaze berriaren kudeaketa hostapd daemon bereizi baten esku utziko dugu, sisteman zorrozki definitutako "txistu" baten presentziaren arabera abiarazi eta geldituko dena: wl1.

Konfigurazio fitxategia /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]

Fitxategi honen edukia USB Wi-Fi egokigailuaren ereduaren araberakoa da zuzenean, beraz, kopiatu/itsatsi hutsak huts egin dezake.

Kopiatu banaketa zerbitzuaren fitxategia /etc/systemd/system/hostapd2.service:

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

eta murriztu bere edukia forma honetara:

[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-ren instantzia berri bat gaitzea da geratzen dena:

# systemctl enable hostapd2

Hori da dena! Tira "txistua" eta "mugurdia" bera, begiratu zure inguruko haririk gabeko sareak.

Eta azkenik, Raspberry-ren USB Wi-Fi egokigailuaren eta elikadura-horniduraren kalitateaz ohartarazi nahi dizut. Konektatutako "txistu beroa" batzuetan "mugurdia izoztea" eragin dezake epe laburreko arazo elektrikoengatik.

Iturria: www.habr.com

Gehitu iruzkin berria