Raspberry Pi + CentOS = Hotspot Wi-Fi (no router sùbh-craoibhe le ad dearg)

Tha tòrr fiosrachaidh air an eadar-lìn mu bhith a’ cruthachadh puingean inntrigidh Wi-Fi stèidhichte air PC aon-bhòrd Raspberry. Mar riaghailt, tha seo a 'ciallachadh a bhith a' cleachdadh siostam-obrachaidh Raspbian a tha dùthchasach don Raspberry.

Le bhith a’ cumail ri siostaman stèidhichte air RPM, cha b’ urrainn dhomh a dhol seachad air a’ mhìorbhail bheag seo agus gun a bhith a’ feuchainn CentOS mo ghràidh air.

Tha an artaigil a’ toirt seachad stiùireadh airson router Wi-Fi 5GHz / AC a dhèanamh bho Model B + Raspberry Pi 3 stèidhichte air siostam obrachaidh CentOS. Bidh grunn chleasan àbhaisteach ach air nach eil mòran eòlach, agus mar bhuannachd - dealbh airson uidheamachd Wi-Fi a bharrachd a cheangal ris an Raspberry, a leigeas leis obrachadh aig an aon àm ann an grunn mhodhan (2,4 + 5GHz).

Raspberry Pi + CentOS = Hotspot Wi-Fi (no router sùbh-craoibhe le ad dearg)
(measgachadh de dhealbhan a tha rim faighinn gu saor)

Bheir sinn an aire sa bhad nach obraich cuid de luaths cosmach. Bidh mi a’ brùthadh suas ri 100 Mbps a-mach às an sùbh-craoibhe agam thairis air an èadhar, agus tha seo a’ còmhdach astar mo sholaraiche eadar-lìn. Carson a tha feum agad air AC cho slaodach, ma tha thu ann an teòiridh gheibh thu leth gigabit eadhon air N? Ma tha thu air a ’cheist seo fhaighneachd dhut fhèin, rachaibh chun bhùth gus fìor router a cheannach le ochd antennas a-muigh.

0. Na bhios a dhìth ort

  • Gu fìrinneach, tha an “toradh sùbh-craoibhe” fhèin de chàileachd: Pi 3 Model B + (gus na h-astaran agus na seanalan cliùiteach 5GHz a choileanadh);
  • MicroSD math>= 4GB;
  • Ionad-obrach le Linux agus leughadair / sgrìobhadair microSD;
  • Sgilean gu leòr ri fhaighinn ann an Linux, tha an artaigil airson Geek air a thrèanadh;
  • Ceangal lìonra uèirleas (eth0) eadar Raspberry agus Linux, a’ ruith frithealaiche DHCP air an lìonra ionadail agus ruigsinneachd eadar-lìn bhon dà inneal.

Beachd bheag air a’ phuing mu dheireadh. “Cò thàinig an toiseach, an ugh no...” mar a nì thu router Wi-Fi às aonais uidheamachd ruigsinneachd eadar-lìn? Fàgaidh sinn an eacarsaich aoigheachd seo taobh a-muigh raon an artaigil agus dìreach gabh ris gu bheil an sùbh-craoibhe ceangailte ris an lìonra ionadail le uèir agus gu bheil cothrom aige air an eadar-lìn. Anns a 'chùis seo, cha bhith feum againn air telebhisean a bharrachd agus inneal-làimhseachaidh gus an "sùbh-craoibh" a stèidheachadh.

1. Stàlaich CentOS

Duilleag dachaigh pròiseact a

Aig àm sgrìobhaidh an artaigil seo, tha an tionndadh ruith de CentOS air an inneal 32-bit. An àiteigin air an Lìon Cruinne thàinig mi tarsainn air beachdan gu bheil coileanadh OSes mar sin air ailtireachd ARM 64-bit air a lughdachadh cho mòr ri 20%. Fàgaidh mi am mionaid seo gun iomradh.

Air Linux, luchdaich sìos an ìomhaigh as lugha leis an kernel "- RaspberryPI-"agus sgrìobh e gu microSD:

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

Mus tòisich sinn air an ìomhaigh a chleachdadh, bheir sinn air falbh an sgaradh SWAP bhuaithe, leudaichidh sinn am freumh chun an tomhas gu lèir a tha ri fhaighinn agus gheibh sinn cuidhteas SELinux. Tha an algairim sìmplidh: dèan leth-bhreac den fhreumh air Linux, sguab às a h-uile sgaradh bhon microSD ach a’ chiad (/ bròg), cruthaich freumh ùr agus thoir air ais na tha ann bhon leth-bhreac.

Eisimpleir de ghnìomhan riatanach (toradh tòcan cruaidh)

# 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

Às deidh na tha anns an sgaradh freumh a dhì-phapadh, tha an t-àm ann beagan atharrachaidhean a dhèanamh air.

Cuir à comas SELinux a-steach /mnt/etc/selinux/config:

SELINUX=disabled

Deasachadh /mnt/etc/fstab, a’ fàgail ann dìreach dà inntrig mu na sgaraidhean: bròg (/ boot, gun atharrachaidhean) agus freumh (bidh sinn ag atharrachadh luach UUID, a gheibhear a-mach le bhith a’ sgrùdadh toradh an àithne blkid air Linux):

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

Mu dheireadh, bidh sinn ag atharrachadh paramadairean bròg kernel: bidh sinn a’ sònrachadh àite ùr airson an sgaradh freumha, a’ cuir casg air toradh fiosrachadh deasbaid agus (gu roghnach) a’ toirmeasg an kernel bho bhith a’ sònrachadh seòlaidhean IPv6 air eadar-aghaidh lìonra:

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

Seo an t-susbaint /mnt/cmdline.txt chun an fhoirm a leanas (aon loidhne gun tàthan):

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

Dèanta:

# cd
# umount /mnt
# sync

Bidh sinn ag ath-rèiteachadh am microSD a-steach don “sùbh-craoibhe”, ga chuir air bhog agus a’ faighinn cothrom lìonra thuige tro ssh (root / centos).

2. A 'stèidheachadh CentOS

A 'chiad trì gluasadan neo-sheasmhach: sgaoileadh, ùrachadh-yum, reboot.

Bheir sinn seachad riaghladh lìonra lìonradh:

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

Cruthaich faidhle (còmhla ri clàran) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Bidh sinn ag ath-thòiseachadh an “sùbh-craoibhe” agus a-rithist gheibh sinn cothrom lìonra thuige tro ssh (faodaidh an seòladh IP atharrachadh). Thoir aire do na tha air a chleachdadh /etc/resolv.conf, air a chruthachadh na bu thràithe le Manaidsear Lìonra. Mar sin, ma tha duilgheadasan ann le fuasgladh, deasaich na tha ann. Cleachd systemd-fuasgladh cha bhi sinn.

Bidh sinn a’ toirt air falbh an “neo-riatanach”, a’ càradh agus a’ luathachadh luchdachadh an 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

Cò a dh'fheumas cron agus cò nach cnàmhas an togta timers siostam, is urrainn dearbhadh dè tha a dhìth. / var / log- agus coimhead troimhe journalctl. Ma tha feum agad air eachdraidh loga (gu bunaiteach, chan eil fiosrachadh air a stòradh ach bhon mhionaid a thòisicheas an siostam):

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

Cuir à comas cleachdadh IPv6 le seirbheisean bunaiteach (ma tha feum air)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Tha iomchaidheachd ùine air an “sùbh-craoibhe” na rud cudromach. Leis nach eil comas bathar-cruaidh ann gus staid gnàthach a’ ghleoc a shàbhaladh nuair a thèid ath-thòiseachadh, tha feum air sioncronadh. Is e deamhan fìor mhath agus luath airson seo cronaidh - air a chuir a-steach mu thràth agus a’ tòiseachadh gu fèin-ghluasadach. Faodaidh tu frithealaichean NTP atharrachadh chun fheadhainn as fhaisge ort.

/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

Gus an raon ùine a shuidheachadh cleachdaidh sinn cleas. Leis gur e ar n-amas router Wi-Fi a chruthachadh a bhios ag obair aig triceadan 5GHz, bidh sinn ag ullachadh airson iongnadh ro-làimh riaghladair:

# yum fiosrachadh crda
Geàrr-chunntas: Daemon gèilleadh riaghlaidh airson lìonrachadh gun uèir 802.11

Tha an dealbhadh olc seo, a tha cuideachd stèidhichte air an raon ùine, “a’ toirmeasg" cleachdadh (anns an Ruis) de tricead 5GHz agus seanalan le àireamhan “àrd”. Is e an cleas sòn ùine a shuidheachadh gun a bhith a’ cleachdadh ainmean mòr-thìrean / mòr-bhailtean, is e sin, an àite:

# timedatectl set-timezone Europe/Moscow

Bidh sinn a 'bruthadh:

# timedatectl set-timezone Etc/GMT-3

Agus tha an suathadh mu dheireadh ri stoidhle gruaige an t-siostam:

# 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 Add-ons

Faodar beachdachadh air a h-uile dad a chaidh a ràdh gu h-àrd mar stiùireadh coileanta airson a bhith a’ stàladh “vanilla” CentOS air an Raspberry Pi. Bu chòir dhut crìoch a chuir air PC a bhios (ath) bròg ann an nas lugha na 10 diogan, a’ cleachdadh nas lugha na 15 Megabytes de RAM agus 1.5 Gigabytes de microSD (gu dearbh nas lugha na 1 Gigabyte mar thoradh air / bròg neo-choileanta, ach bi onarach).

Gus bathar-bog puing ruigsinneachd Wi-Fi a chuir a-steach air an t-siostam seo, feumaidh tu comasan an t-sgaoilidh àbhaisteach CentOS a leudachadh beagan. An toiseach, leig dhuinn an draibhear (firmware) den inneal-atharrachaidh Wi-Fi a chaidh a thogail a-steach ùrachadh. Tha duilleag-dachaigh a’ phròiseict ag ràdh:

Wifi air an Raspberry 3B agus 3B +

Chan fhaod na faidhlichean firmware Raspberry PI 3B / 3B + a bhith air an sgaoileadh le Pròiseact CentOS. Faodaidh tu na h-artaigilean a leanas a chleachdadh gus a’ chùis a thuigsinn, am firmware fhaighinn agus an wifi a stèidheachadh.

Chan eil na tha air a thoirmeasg airson pròiseact CentOS air a thoirmeasg dhuinn airson cleachdadh pearsanta. Bidh sinn a’ dol an àite firmware cuairteachaidh Wi-Fi ann an CentOS leis an fhear fhreagarrach bho luchd-leasachaidh Broadcom (na h-aon bloban binary gràin ...). Leigidh seo, gu sònraichte, leat AC a chleachdadh ann am modh puing inntrigidh.

Luchdaich a-nuas am bathar-bog airson Wi FiFaigh a-mach modail an uidheim agus an tionndadh firmware làithreach:

# 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 

Chì sinn gur e 7.45.18 leis an deit 01.03.2015/XNUMX/XNUMX an dreach firmware, agus cuimhnich air an t-seata àireamhan a leanas: 43455 (brcmfmac43455-sdio.bin).

Luchdaich a-nuas an dealbh Rasputin. Faodaidh daoine leisg an ìomhaigh a sgrìobhadh gu microSD agus na faidhlichean a thoirt leis a’ firmware às an sin. No faodaidh tu bun-stèidh na h-ìomhaigh a chuir suas ann an Linux agus dèan lethbhreac de na tha a dhìth ort às an sin:

# 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

Feumar na faidhlichean firmware adapter Wi-Fi a thig às a chopaigeadh agus “sùbh-craoibhe” a chuir a-steach don eòlaire /usr/lib/firmware/brcm/

Bidh sinn ag ath-thòiseachadh an router san àm ri teachd agus a ’gàireachdainn gu toilichte:

# 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 

Tionndadh: 7.45.154 le ceann-latha 27.02.2018/XNUMX/XNUMX.

Agus gu dearbh 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. Rèiteachadh lìonra agus na dùbhlain a tha romhainn

Mar a dh’ aontaich sinn gu h-àrd, tha an “sùbh-craoibhe” ceangailte le “uèir” ris an lìonra ionadail. Gabhamaid ris gu bheil an solaraiche a’ toirt cothrom air an eadar-lìon san aon dòigh: tha an seòladh air an lìonra poblach air a chuir a-mach gu dinamach leis an t-seirbheisiche DHCP (is dòcha le ceangal MAC). Anns a ’chùis seo, às deidh an sùbh-craoibhe mu dheireadh a shuidheachadh, cha leig thu leas ach càball an t-solaraiche a“ plug ”a-steach agus tha thu deiseil. Ùghdarrachadh a 'cleachdadh siostam-lìonra - cuspair artaigil air leth agus chan eil e air a dheasbad an seo.

Is e lìonra ionadail a th’ ann an eadar-aghaidh(ean) Wi-Fi Raspberry, agus tha an inneal-atharrachaidh Ethernet togte (eth0) taobh a-muigh. Leig dhuinn an lìonra ionadail àireamhachadh gu staitigeach, mar eisimpleir: 192.168.0.0/24. Seòladh sùbh-craoibhe: 192.168.0.1. Bidh frithealaiche DHCP ag obair air an lìonra a-muigh (Eadar-lìon).

Trioblaid Co-chòrdalachd ainmeachadh и prògramadair ainmeil Guatemalan - dà thrioblaid a tha a’ feitheamh ri neach sam bith a bhios a’ rèiteachadh eadar-aghaidh lìonra agus seirbheisean ann an sgaoilidhean siostam.

Mì-riaghailt co-shìnte (digression liriceach)Tha Lennart Pottering air a phrògram fhèin a chur ri chèile siostam Fìor mhath. Seo siostam a’ cur air bhog prògraman eile cho luath is gu bheil iad, gun ùine aca faighinn seachad air bho shèideadh an rèitire den fhìdeag, a’ tuisleadh agus a’ tuiteam aig an toiseach gun eadhon tòiseachadh air a’ chùrsa bacaidh aca.

Ach dha-rìribh, tha an co-shìnteadh ionnsaigheach de phròiseasan a chaidh a chuir air bhog aig toiseach an OS systemd na sheòrsa de “drochaid asal” airson eòlaichean ràitheil LSB. Gu fortanach, tha e a’ tionndadh a-mach gu bheil e sìmplidh òrdugh a thoirt don “chaos co-shìnte” seo, ged nach eil e an-còmhnaidh follaiseach.

Bidh sinn a’ cruthachadh dà eadar-aghaidh drochaid brìgheil le ainmean seasmhach: lan и wan. Bidh sinn “a’ ceangal ”an inneal-atharrachaidh (ean) Wi-Fi ris a’ chiad fhear, agus an eth0 “sùbh-craoibhe” ris an dàrna fear.

/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 = tha a’ cur às don fheum air sanas don kernel tro sysctl gus slighe a chomasachadh.
MACAddress= Leig leinn uncomment agus atharrachadh ma tha sin riatanach.

An toiseach bidh sinn “a’ ceangal ”eth0. Tha sinn a 'cuimhneachadh air an "duilgheadas èideadh" agus a' cleachdadh a-mhàin seòladh MAC an eadar-aghaidh seo, a gheibhear a-mach, mar eisimpleir, mar seo:

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

Bidh sinn a 'cruthachadh /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Sguabaidh sinn às am faidhle rèiteachaidh a bh’ ann roimhe eth0, ath-thòisich an Raspberry agus gheibh sinn cothrom lìonra air (is coltaiche gun atharraich an seòladh IP):

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

5.DNSMASQ

Airson puingean inntrigidh Wi-Fi a dhèanamh, chan eil dad a’ toirt buaidh air càraid milis dnsmasq + hostapd chan eil fios agam fhathast. Na’m bheachdsa.

Ma dhìochuimhnicheas duine, an uairsin ...hostapd - is e seo an rud a bhios a’ cumail smachd air innealan-atharrachaidh Wi-Fi (gu sònraichte, bheir e aire do bhith gan ceangal ris an inneal brìgheil lan "sùbh-craoibh"), a 'ceadachadh agus a' clàradh luchd-dèiligidh gun uèir.

dnsmasq - a’ rèiteachadh stac lìonra de luchd-dèiligidh: cuir a-mach seòlaidhean IP, frithealaichean DNS, geata bunaiteach agus toileachasan coltach ris.

Feuch an tòisich sinn le dnsmasq:

# yum install dnsmasq

Шаблон /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

deasaich e mar a thogras tu.

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

Tha an “draoidheachd” an seo na laighe anns a’ pharamadair ceangail-fiùghantach, a tha ag innse don daemon dnsmasq feitheamh gus an nochd e air an t-siostam eadar-aghaidh = lan, agus gun a bhi fann o sholus an uaigneas uaibhrich an dèigh an toisich.

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

6. HOSTAPD

Agus mu dheireadh, na rèiteachaidhean hostapd draoidheachd. Chan eil teagamh sam bith agam gu bheil cuideigin a’ leughadh an artaigil seo a’ lorg nan loidhnichean luachmhor sin.

Mus stàlaich thu hostapd, feumaidh tu faighinn seachad air an “duilgheadas èideadh”. Faodaidh an inneal-atharrachaidh Wi-Fi togte wlan0 an t-ainm atharrachadh gu wlan1 gu furasta nuair a cheanglas e uidheamachd USB Wi-Fi a bharrachd. Mar sin, socraichidh sinn na h-ainmean eadar-aghaidh san dòigh a leanas: thig sinn suas le ainmean sònraichte airson na h-innealan-atharrachaidh (gun uèir) agus gan ceangal ri seòlaidhean MAC.

Airson an inneal-atharrachaidh Wi-Fi togte, a tha fhathast wlan0:

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

Bidh sinn a 'cruthachadh /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

A-nis bidh sinn cinnteach sin wl0 - Is e Wi-Fi togte a tha seo. Bidh sinn ag ath-thòiseachadh an Raspberry gus dèanamh cinnteach à seo.

Stàladh:

# yum install hostapd wireless-tools

Faidhle rèiteachaidh /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

Gun a bhith a 'dìochuimhneachadh airson mionaid Comataidh Èiginn na Stàite, atharraich na crìochan a dh’ fheumas sinn agus thoir sùil le làimh airson comas-gnìomh:

# hostapd /etc/hostapd/hostapd.conf

tòisichidh hostapd ann am modh eadar-ghnìomhach, a’ craoladh a staid chun chonsail. Mura h-eil mearachdan ann, bidh e comasach dha teachdaichean a tha a’ toirt taic do mhodh AC ceangal ris an àite inntrigidh. Gus stad a chur air hostapd - Ctrl-C.

Chan eil air fhàgail ach hostapd a chomasachadh ann an tòiseachadh an t-siostaim. Ma nì thu an rud àbhaisteach (systemctl enable hostapd), an uairsin às deidh an ath ath-thòiseachadh gheibh thu deamhan “a’ dol a-steach don fhuil ”leis a’ bhreithneachadh “eadar-aghaidh wl0 cha deach a lorg". Mar thoradh air “caos co-shìnte,” thòisich hostapd nas luaithe na lorg an kernel an inneal-atharrachaidh gun uèir.

Tha an eadar-lìn làn de leigheasan: bho àm èiginneach mus tòisich thu air an deamhan (grunn mhionaidean), gu deamhan eile a bhios a’ cumail sùil air coltas an eadar-aghaidh agus (ath) a’ tòiseachadh an hostpad. Tha na fuasglaidhean gu math obrachail, ach gu math grànda. Bidh sinn a’ gairm air an fhear mhòr airson cuideachadh siostam le na “amasan” agus “gnìomhan” agus “eisimeileachd”.

Dèan lethbhreac den fhaidhle seirbheis cuairteachaidh gu /etc/systemd/system/hostapd.service:

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

agus lughdaich na tha ann dhan fhoirm a leanas:

[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

Tha draoidheachd an fhaidhle seirbheis ùraichte na laighe ann an ceangal fiùghantach hostapd ris an targaid ùr - an eadar-aghaidh wl0. Nuair a nochdas an eadar-aghaidh, tòisichidh an daemon; nuair a thèid e à sealladh, stadaidh e. Agus tha seo uile air-loidhne - gun rebooting an t-siostam. Bidh an dòigh seo gu sònraichte feumail nuair a cheanglas tu inneal-atharrachaidh USB Wi-Fi ri sùbh-craoibhe.

A-nis faodaidh tu:

# systemctl enable hostapd
# reboot

7. IPTABLES

“Dè???” © Tha, tha! Chan eil gin siostam. Chan eil measgachadh ùr ann (anns an fhoirm firewalld), a tha mu dheireadh a’ dèanamh an aon rud.

Cleachdamaid an seann tè mhath iptables, a bhios na seirbheisean aca, às deidh dhaibh tòiseachadh, a’ luchdachadh riaghailtean lìonra a-steach don kernel agus air an dùnadh gu sàmhach gun a bhith a ’fuireach agus gun a bhith a’ caitheamh ghoireasan. tha stoidhle eireachdail aig systemd IPMasquerade =, ach bidh sinn fhathast an urra ris an eadar-theangachadh seòladh (NAT) agus balla-teine ​​​​gu iptables.

Stàladh:

# yum install iptables-services
# systemctl enable iptables ip6tables

Is fheàrr leam an rèiteachadh iptables a stòradh mar sgriobt (eisimpleir):

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

Bidh sinn a’ cur an gnìomh an sgriobt gu h-àrd agus a’ call an comas ceanglaichean SSH uèirleas ùra a stèidheachadh leis an Raspberry. Tha sin ceart, tha sinn air router Wi-Fi a dhèanamh, ruigsinneachd air a bheil “tron eadar-lìn” air a thoirmeasg gu bunaiteach - a-nis dìreach “thairis air an èadhar”. Bidh sinn a ’ceangal càball Ethernet an t-solaraiche agus a’ tòiseachadh a ’surfadh!

8. Bonus: +2,4GHz

Nuair a chruinnich mi a’ chiad router sùbh-craoibhe a’ cleachdadh an dealbh a chaidh a mhìneachadh gu h-àrd, lorg mi grunn innealan anns an dachaigh agam nach b’ urrainn, mar thoradh air na crìochan dealbhaidh Wi-Fi aca, an “sùbh-craoibhe” fhaicinn idir. Bha ath-dhealbhadh an router gu bhith ag obair ann an 802.11b / g / n neo-spòrs, leis nach robh an astar as àirde “thairis air an èadhar” sa chùis seo nas àirde na 40 Mbit, agus tha an solaraiche eadar-lìn as fheàrr leam a ’tabhann 100 dhomh (tro chàball).

Gu dearbh, chaidh fuasgladh don duilgheadas a chruthachadh mar-thà: an dàrna eadar-aghaidh Wi-Fi ag obair aig tricead 2,4 GHz, agus an dàrna àite inntrigidh. Aig stàile faisg air làimh cheannaich mi chan e a’ chiad fhear, ach an dàrna “feadag” USB Wi-Fi air an tàinig mi tarsainn. Bha an neach-reic air a chràdh le ceistean mun chipset, co-chòrdalachd le kernels ARM Linux agus an comas a bhith ag obair ann am modh AP (b’ esan a’ chiad fhear a thòisich).

Bidh sinn a’ rèiteachadh an “fhìdeag” a rèir coslas leis an inneal-atharrachaidh Wi-Fi togte.

An toiseach, leig dhuinn ath-ainmeachadh gu 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

Cuiridh sinn earbsa ann an riaghladh an eadar-aghaidh Wi-Fi ùr gu deamhan hostapd air leth, a thòisicheas agus a stadas a rèir làthaireachd “feadag” a tha air a mhìneachadh gu teann san t-siostam: wl1.

Faidhle rèiteachaidh /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]

Tha susbaint an fhaidhle seo gu dìreach an urra ri modail an inneal-atharrachaidh USB Wi-Fi, agus mar sin faodaidh leth-bhreac / pasgain casg fàiligeadh ort.

Dèan lethbhreac den fhaidhle seirbheis cuairteachaidh gu /etc/systemd/system/hostapd2.service:

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

agus lughdaich na tha ann dhan fhoirm a leanas:

[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

Chan eil air fhàgail ach eisimpleir ùr de hostapd a chomasachadh:

# systemctl enable hostapd2

Sin e! Tarraing an “fìdeag” agus an “sùbh-craoibhe” fhèin, thoir sùil air na lìonraidhean gun uèir timcheall ort.

Agus mu dheireadh, tha mi airson rabhadh a thoirt dhut mu chàileachd an adapter USB Wi-Fi agus solar cumhachd an Raspberry. Uaireannan faodaidh “feadag teth” ceangailte “reothadh sùbh-craoibhe” adhbhrachadh mar thoradh air trioblaidean dealain geàrr-ùine.

Source: www.habr.com

Cuir beachd ann