Raspberry Pi + CentOS = Wi-Fi Hotspot (au kipanga njia cha raspberry kilicho na kofia nyekundu)

Kuna kiasi kikubwa cha habari kwenye mtandao juu ya kuunda pointi za kufikia Wi-Fi kulingana na Raspberry single-board PC. Kama sheria, hii inamaanisha kutumia mfumo wa uendeshaji wa Raspbian asili ya Raspberry.

Kwa kuwa mfuasi wa mifumo inayotegemea RPM, sikuweza kupita kwa muujiza huu mdogo na kutojaribu CentOS yangu mpendwa juu yake.

Makala hutoa maagizo ya kutengeneza kipanga njia cha 5GHz/AC Wi-Fi kutoka kwa Raspberry Pi 3 Model B+ kulingana na mfumo wa uendeshaji wa CentOS. Kutakuwa na hila kadhaa za kawaida lakini zisizojulikana, na kama bonasi - mchoro wa kuunganisha vifaa vya ziada vya Wi-Fi kwa Raspberry, ikiruhusu kufanya kazi wakati huo huo kwa njia kadhaa (2,4 + 5GHz).

Raspberry Pi + CentOS = Wi-Fi Hotspot (au kipanga njia cha raspberry kilicho na kofia nyekundu)
(mchanganyiko wa picha zinazopatikana bila malipo)

Hebu tuangalie mara moja kwamba baadhi ya kasi ya cosmic haitafanya kazi. Ninabana upeo wa Mbps 100 kutoka kwa Raspberry yangu angani, na hii hufunika kasi ya mtoa huduma wangu wa Intaneti. Kwa nini unahitaji AC ya uvivu, ikiwa kwa nadharia unaweza kupata nusu ya gigabit hata kwenye N? Ikiwa umejiuliza swali hili, kisha uende kwenye duka ili kununua router halisi na antenna nane za nje.

0. Utahitaji nini

  • Kweli, "bidhaa ya raspberry" yenyewe ni ya caliber: Pi 3 Model B+ (ili kufikia kasi na njia za 5GHz);
  • MicroSD nzuri >= 4GB;
  • Kituo cha kazi na Linux na msomaji/mwandishi wa microSD;
  • Upatikanaji wa ujuzi wa kutosha katika Linux, makala ni kwa ajili ya Geek mafunzo;
  • Muunganisho wa mtandao wa waya (eth0) kati ya Raspberry na Linux, inayoendesha seva ya DHCP kwenye mtandao wa ndani na ufikiaji wa Mtandao kutoka kwa vifaa vyote viwili.

Maoni madogo juu ya hatua ya mwisho. "Ni ipi iliyokuja kwanza, yai au ..." jinsi ya kufanya router ya Wi-Fi kwa kutokuwepo kwa vifaa vya upatikanaji wa mtandao? Hebu tuache zoezi hili la burudani nje ya upeo wa makala na tu kudhani kwamba Raspberry imeunganishwa kwenye mtandao wa ndani kwa waya na ina upatikanaji wa mtandao. Katika kesi hii, hatutahitaji TV ya ziada na manipulator ili kuanzisha "raspberry".

1. Sakinisha CentOS

Ukurasa wa nyumbani wa mradi

Wakati wa kuandika makala hii, toleo la uendeshaji la CentOS kwenye kifaa ni 32-bit. Mahali fulani kwenye Mtandao Wote wa Ulimwenguni nilikutana na maoni kwamba utendaji wa OS kama hizo kwenye usanifu wa 64-bit wa ARM umepunguzwa kwa kama 20%. Nitaondoka wakati huu bila maoni.

Kwenye Linux, pakua picha ndogo na kernel "-RaspberryPI-"na uandike kwa microSD:

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

Kabla ya kuanza kutumia picha, tutaondoa kizigeu cha SWAP kutoka kwake, kupanua mzizi kwa kiasi kizima cha kutosha na kuondokana na SELinux. Algorithm ni rahisi: fanya nakala ya mzizi kwenye Linux, futa sehemu zote kutoka kwa microSD isipokuwa ya kwanza (/boot), unda mzizi mpya na urejeshe yaliyomo kutoka kwa nakala.

Mfano wa vitendo vinavyohitajika (toto kali la kiweko)

# 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

Baada ya kufungua yaliyomo kwenye kizigeu cha mizizi, ni wakati wa kufanya mabadiliko fulani kwake.

Zima SELinux ndani /mnt/etc/selinux/config:

SELINUX=disabled

Kuhariri /mnt/etc/fstab, na kuacha ndani yake maingizo mawili tu kuhusu kizigeu: boot (/boot, hakuna mabadiliko) na mzizi (tunabadilisha thamani ya UUID, ambayo inaweza kupatikana kwa kusoma matokeo ya amri ya blkid kwenye Linux):

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

Hatimaye, tunabadilisha vigezo vya boot ya kernel: tunabainisha eneo jipya la kizigeu cha mizizi, kuzima matokeo ya habari ya utatuzi na (kwa hiari) tunakataza kernel kugawa anwani za IPv6 kwenye miingiliano ya mtandao:

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

Hapa kuna yaliyomo /mnt/cmdline.txt kwa fomu ifuatayo (mstari mmoja bila hyphens):

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

Imemaliza:

# cd
# umount /mnt
# sync

Tunapanga upya microSD kwenye "raspberry", tuzindua na kupata ufikiaji wa mtandao kupitia ssh (mizizi/centos).

2. Kuanzisha CentOS

Harakati tatu za kwanza zisizoweza kutetereka: passwd, Yum -yasasisha, reboot.

Tunatoa usimamizi wa mtandao mtandao:

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

Unda faili (pamoja na saraka) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Tunaanzisha tena "raspberry" na tena tunapata ufikiaji wa mtandao kupitia ssh (anwani ya IP inaweza kubadilika). Makini na kile kinachotumiwa /etc/resolv.conf, iliyoundwa mapema na Meneja wa Mtandao. Kwa hivyo, katika kesi ya shida na suluhisho, hariri yaliyomo. Tumia kutatuliwa kwa mfumo hatutafanya.

Tunaondoa "zisizo za lazima", ukarabati na uharakishe upakiaji wa 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

Nani anahitaji cron na ambaye hana kuchimba kujengwa ndani vipima muda vya mfumo, inaweza kubaini kile kinachokosekana. / var / logi- na uangalie journalctl. Ikiwa unahitaji historia ya kumbukumbu (kwa chaguo-msingi, habari huhifadhiwa tu kutoka wakati mfumo unapoanza):

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

Zima matumizi ya IPv6 na huduma za msingi (ikiwa inahitajika)/ nk / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Umuhimu wa wakati kwenye "raspberry" ni jambo muhimu. Kwa kuwa nje ya kisanduku hakuna uwezo wa vifaa ili kuokoa hali ya sasa ya saa wakati wa kuwasha upya, maingiliano inahitajika. Daemon nzuri sana na ya haraka kwa hii ni chrony - tayari imewekwa na huanza moja kwa moja. Unaweza kubadilisha seva za NTP hadi zilizo karibu zaidi.

/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

Kuweka eneo la saa tutatumia hila. Kwa kuwa lengo letu ni kuunda kipanga njia cha Wi-Fi kinachofanya kazi kwa masafa ya GHz 5, tutajitayarisha kwa mshangao mapema. mdhibiti:

#habari yum crda
Muhtasari: Daemon ya utiifu ya udhibiti kwa mtandao wa wireless wa 802.11

Ubunifu huu mbaya, pia kulingana na eneo la wakati, "hukataza" matumizi (nchini Urusi) ya masafa ya 5GHz na chaneli zilizo na nambari "za juu". Ujanja ni kuweka eneo la saa bila kutumia majina ya mabara/miji, yaani, badala ya:

# timedatectl set-timezone Europe/Moscow

Tunabonyeza:

# timedatectl set-timezone Etc/GMT-3

Na kugusa mwisho kwa hairstyle ya mfumo:

# hostnamectl set-hostname router

/mzizi/.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. Viongezi vya CentOS

Kila kitu kilichosemwa hapo juu kinaweza kuzingatiwa kama maagizo kamili ya kusanikisha "vanilla" CentOS kwenye Raspberry Pi. Unapaswa kuishia na Kompyuta ambayo (re) buti chini ya sekunde 10, hutumia chini ya Megabytes 15 za RAM na Gigabytes 1.5 za microSD (kwa kweli chini ya Gigabyte 1 kwa sababu ya /boot isiyokamilika, lakini hebu tuwe waaminifu).

Ili kufunga programu ya kufikia Wi-Fi kwenye mfumo huu, utahitaji kupanua kidogo uwezo wa usambazaji wa kawaida wa CentOS. Kwanza kabisa, hebu tuboreshe dereva (firmware) ya adapta ya Wi-Fi iliyojengwa. Ukurasa wa nyumbani wa mradi unasema:

Wifi kwenye Raspberry 3B na 3B+

Faili za programu dhibiti za Raspberry PI 3B/3B+ haziruhusiwi kusambazwa na Mradi wa CentOS. Unaweza kutumia makala zifuatazo ili kuelewa suala hilo, kupata firmware na kuanzisha wifi.

Kile ambacho ni marufuku kwa mradi wa CentOS si marufuku kwetu kwa matumizi ya kibinafsi. Tunabadilisha usambazaji wa programu dhibiti ya Wi-Fi katika CentOS na ile inayolingana kutoka kwa watengenezaji wa Broadcom (blobs hizo za binary zinazochukiwa ...). Hii, hasa, itawawezesha kutumia AC katika hali ya kufikia hatua.

Uboreshaji wa firmware ya Wi-FiJua muundo wa kifaa na toleo la sasa la programu:

# 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 

Tunaona kwamba toleo la firmware ni 7.45.18 la tarehe 01.03.2015/XNUMX/XNUMX, na kumbuka seti zifuatazo za nambari: 43455 (brcmfmac43455-sdio.bin).

Pakua picha ya sasa ya Raspbian. Watu wavivu wanaweza kuandika picha kwa microSD na kuchukua faili na firmware kutoka hapo. Au unaweza kuweka kizigeu cha mzizi wa picha kwenye Linux na unakili unachohitaji kutoka hapo:

# 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

Faili za firmware za adapta za Wi-Fi lazima zikopishwe na kubadilishwa na "raspberry" kwenye saraka /usr/lib/firmware/brcm/

Tunaanzisha tena kipanga njia cha baadaye na kutabasamu kwa kuridhika:

# 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 

Toleo: 7.45.154 la tarehe 27.02.2018/XNUMX/XNUMX.

Na bila shaka 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. Usanidi wa mtandao na changamoto zinazokuja

Kama tulivyokubaliana hapo juu, "raspberry" imeunganishwa na "waya" kwenye mtandao wa ndani. Hebu tuchukue kwamba mtoa huduma hutoa upatikanaji wa mtandao kwa njia sawa: anwani kwenye mtandao wa umma inatolewa kwa nguvu na seva ya DHCP (labda na MAC ya kumfunga). Katika kesi hii, baada ya kuanzisha mwisho wa raspberry, unahitaji tu "kuziba" cable ya mtoa huduma ndani yake na umefanya. Uidhinishaji kwa kutumia systemd-networkd - mada ya nakala tofauti na haijajadiliwa hapa.

Kiolesura cha Wi-Fi cha Raspberry ni mtandao wa ndani, na adapta ya Ethaneti iliyojengewa ndani (eth0) ni ya nje. Hebu tuhesabu mtandao wa ndani kwa takwimu, kwa mfano: 192.168.0.0/24. Anwani ya Raspberry: 192.168.0.1. Seva ya DHCP itafanya kazi kwenye mtandao wa nje (Mtandao).

Tatizo la Uthabiti wa Kutaja ΠΈ programu maarufu ya Guatemala - shida mbili ambazo zinangojea mtu yeyote ambaye anasanidi miingiliano ya mtandao na huduma katika usambazaji wa mfumo.

Machafuko sambamba (kituo cha sauti)Lennart Pottering ameandaa programu yake mwenyewe mfumo Vizuri sana. Hii mfumo huzindua programu zingine haraka sana hivi kwamba, bila kupata wakati wa kupona kutoka kwa kipyenga cha mwamuzi, hujikwaa na kuanguka mwanzoni bila hata kuanza kozi yao ya kikwazo.

Lakini kwa umakini, ulinganifu mkali wa michakato iliyozinduliwa mwanzoni mwa Mfumo wa Uendeshaji ni aina ya "daraja la punda" kwa wataalam wa mfululizo wa LSB. Kwa bahati nzuri, kuleta mpangilio kwa "machafuko sambamba" haya yanageuka kuwa rahisi, ingawa sio dhahiri kila wakati.

Tunaunda miingiliano miwili ya madaraja na majina ya mara kwa mara: lan ΠΈ wan. "Tutaunganisha" adapta ya Wi-Fi kwa ya kwanza, na eth0 "raspberry" hadi ya pili.

/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=ndio huondoa hitaji la kuashiria kernel kupitia sysctl ili kuwezesha uelekezaji.
Anwani ya MACA= ondoa maoni na ubadilishe ikiwa ni lazima.

Kwanza tuna "unganisha" eth0. Tunakumbuka "tatizo la usawa" na tunatumia tu anwani ya MAC ya kiolesura hiki, ambacho unaweza kujua, kwa mfano, kama hii:

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

Tunaunda /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Tunafuta faili ya usanidi iliyotangulia eth0, anzisha tena Raspberry na upate ufikiaji wa mtandao kwa hiyo (anwani ya IP itabadilika sana):

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

5.DNSMASQ

Kwa kutengeneza sehemu za ufikiaji wa Wi-Fi, hakuna kitu kinachozidi michache tamu dnsmasq + mwenyeji bado sijaielewa. Kwa maoni yangu.

Ikiwa mtu yeyote alisahau, basi ...mwenyeji - hii ndio kitu kinachodhibiti adapta za Wi-Fi (haswa, itachukua huduma ya kuziunganisha kwenye mtandao. lan "raspberries"), inaidhinisha na kusajili wateja wasio na waya.

dnsmasq - husanidi rundo la mtandao la wateja: hutoa anwani za IP, seva za DNS, lango chaguo-msingi na starehe zinazofanana.

Wacha tuanze na dnsmasq:

# yum install dnsmasq

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

ihariri kwa kupenda kwako.

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

"Uchawi" hapa upo kwenye parameta funga-nguvu, ambayo inaiambia dnsmasq daemon kusubiri hadi ionekane kwenye mfumo interface=lan, na si kukata tamaa kutokana na kifafa cha upweke wa kiburi baada ya kuanza.

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

6. HOSTAPD

Na mwishowe, usanidi wa uchawi wa hostapd. Sina shaka kuwa kuna mtu anasoma nakala hii akitafuta kwa usahihi mistari hii iliyothaminiwa.

Kabla ya kufunga hostapd, unahitaji kuondokana na "tatizo la kufanana". Adapta iliyojengewa ndani ya Wi-Fi wlan0 inaweza kubadilisha jina lake kwa urahisi kuwa wlan1 wakati wa kuunganisha vifaa vya ziada vya USB Wi-Fi. Kwa hiyo, tutatengeneza majina ya interface kwa njia ifuatayo: tutakuja na majina ya kipekee kwa adapta (zisizo na waya) na kuzifunga kwa anwani za MAC.

Kwa adapta ya Wi-Fi iliyojengwa, ambayo bado ni wlan0:

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

Tunaunda /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Sasa tutakuwa na uhakika kwamba wl0 - Hii ni Wi-Fi iliyojengwa. Tunaanzisha tena Raspberry ili kuhakikisha hili.

Sakinisha:

# yum install hostapd wireless-tools

Faili ya usanidi /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

Bila kusahau kwa muda Kamati ya Dharura ya Jimbo, badilisha vigezo tunavyohitaji na uangalie mwenyewe utendakazi:

# hostapd /etc/hostapd/hostapd.conf

hostapd itaanza katika hali ya mwingiliano, ikitangaza hali yake kwa kiweko. Ikiwa hakuna makosa, basi wateja wanaotumia hali ya AC wataweza kuunganisha kwenye kituo cha kufikia. Ili kusimamisha hostapd - Ctrl-C.

Kilichobaki ni kuwezesha hostapd katika uanzishaji wa mfumo. Ikiwa utafanya jambo la kawaida (systemctl wezesha hostapd), basi baada ya kuwasha tena unaweza kupata pepo "kuzunguka kwenye damu" na utambuzi "interface wl0 haipatikani". Kama matokeo ya "machafuko sambamba," hostapd ilianza haraka kuliko kernel ilipata adapta isiyo na waya.

Mtandao umejaa suluhu: kutoka kwa muda wa kuisha kwa kulazimishwa kabla ya kuanzisha daemoni (dakika kadhaa), hadi daemoni nyingine ambayo hufuatilia mwonekano wa kiolesura na (re)kuanzisha padi ya upangishaji. Suluhisho zinafanya kazi kabisa, lakini ni mbaya sana. Tunaomba msaada mkubwa mfumo na "malengo" yake na "kazi" na "tegemezi".

Nakili faili ya huduma ya usambazaji kwa /etc/systemd/system/hostapd.service:

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

na punguza yaliyomo kwa fomu ifuatayo:

[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

Ujanja wa faili ya huduma iliyosasishwa upo katika uunganishaji unaobadilika wa hostapd kwa lengo jipya - kiolesura cha wl0. Wakati kiolesura kinapoonekana, daemon huanza; inapotoweka, huacha. Na hii yote ni mtandaoni - bila kuanzisha upya mfumo. Mbinu hii itakuwa muhimu hasa wakati wa kuunganisha USB Wi-Fi ADAPTER kwa Raspberry.

Sasa unaweza:

# systemctl enable hostapd
# reboot

7. IPTABLES

β€œVipi???” Β© Ndiyo, ndiyo! Hakuna mfumo. Hakuna mchanganyiko mpya (katika fomu firewalld), ambayo huishia kufanya jambo lile lile.

Hebu tumia ile nzuri ya zamani iptables, ambaye huduma zake, baada ya kuanza, zitapakia sheria za mtandao kwenye kernel na kuzifunga kwa utulivu bila kukaa mkazi na bila kutumia rasilimali. systemd ina kifahari IPMasquerade=, lakini bado tutakabidhi tafsiri ya anwani (NAT) na ngome kwa iptables.

Sakinisha:

# yum install iptables-services
# systemctl enable iptables ip6tables

Napendelea kuhifadhi usanidi wa iptables kama hati (mfano):

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

Tunatekeleza hati iliyo hapo juu na kupoteza uwezo wa kuanzisha miunganisho mipya ya SSH yenye waya na Raspberry. Hiyo ni kweli, tumetengeneza kipanga njia cha Wi-Fi, ufikiaji ambao "kupitia Mtandao" umepigwa marufuku kwa chaguo-msingi - sasa tu "hewani". Tunaunganisha kebo ya Ethernet ya mtoa huduma na kuanza kuvinjari!

8. Bonasi: +2,4GHz

Nilipokusanya router ya kwanza ya Raspberry kwa kutumia mchoro ulioelezwa hapo juu, niligundua idadi ya gadgets katika kaya yangu ambayo, kutokana na mapungufu yao ya kubuni ya Wi-Fi, haikuweza kuona "raspberry" kabisa. Kuweka upya router kufanya kazi katika 802.11b/g/n haikuwa ya michezo, kwani kasi ya juu "juu ya hewa" katika kesi hii haikuzidi 40 Mbit, na mtoa huduma wangu wa mtandao anayependa ananipa 100 (kupitia cable).

Kwa kweli, suluhisho la tatizo tayari limezuliwa: interface ya pili ya Wi-Fi inayofanya kazi kwa mzunguko wa 2,4 GHz, na hatua ya pili ya kufikia. Katika duka la karibu sikununua sio ya kwanza, lakini "filimbi" ya pili ya USB Wi-Fi nilikutana nayo. Muuzaji aliteswa na maswali kuhusu chipset, utangamano na kernels za ARM Linux na uwezekano wa kufanya kazi katika hali ya AP (alikuwa wa kwanza kuanza).

Tunasanidi "filimbi" kwa mlinganisho na adapta ya Wi-Fi iliyojengwa.

Kwanza, hebu tuipe jina tena 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

Tutakabidhi usimamizi wa kiolesura kipya cha Wi-Fi kwa daemon tofauti ya hostapd, ambayo itaanza na kukoma kulingana na kuwepo kwa "filimbi" iliyofafanuliwa kabisa katika mfumo: wl1.

Faili ya usanidi /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]

Yaliyomo kwenye faili hii inategemea moja kwa moja mfano wa adapta ya USB Wi-Fi, kwa hivyo kunakili/kubandika kwa banal kunaweza kukukosa.

Nakili faili ya huduma ya usambazaji kwa /etc/systemd/system/hostapd2.service:

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

na punguza yaliyomo kwa fomu ifuatayo:

[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

Kilichobaki ni kuwezesha mfano mpya wa hostapd:

# systemctl enable hostapd2

Ni hayo tu! Piga "filimbi" na "raspberry" yenyewe, angalia mitandao ya wireless karibu nawe.

Na hatimaye, nataka kukuonya kuhusu ubora wa adapta ya USB Wi-Fi na usambazaji wa nguvu wa Raspberry. "filimbi ya moto" iliyounganishwa wakati mwingine inaweza kusababisha "kufungia raspberry" kutokana na matatizo ya muda mfupi ya umeme.

Chanzo: mapenzi.com

Kuongeza maoni