Raspberry Pi + CentOS = Wi-Fi Hotspot (jew router tal-lampun b'kappell aħmar)

Hemm ammont kbir ta 'informazzjoni fuq l-Internet dwar il-ħolqien ta' punti ta 'aċċess Wi-Fi bbażati fuq PC Raspberry single-board. Bħala regola, dan ifisser li tuża s-sistema operattiva Raspbian indiġena għall-Raspberry.

Peress li aderenti tas-sistemi bbażati fuq RPM, ma stajtx ngħaddi minn dan il-miraklu żgħir u ma nipprovax l-għeżież CentOS tiegħi fuqu.

L-artikolu jipprovdi istruzzjonijiet biex tagħmel router Wi-Fi 5GHz/AC minn Raspberry Pi 3 Mudell B + ibbażat fuq is-sistema operattiva CentOS. Se jkun hemm diversi tricks standard iżda ftit li xejn magħrufa, u bħala bonus - tpinġija għall-konnessjoni ta 'tagħmir Wi-Fi addizzjonali mal-Raspberry, li jippermettilu jopera simultanjament f'diversi modi (2,4 + 5GHz).

Raspberry Pi + CentOS = Wi-Fi Hotspot (jew router tal-lampun b'kappell aħmar)
(taħlita ta' stampi disponibbli liberament)

Ejja ninnutaw mill-ewwel li xi veloċitajiet kożmiċi mhux se jaħdmu. Nagħfas massimu ta '100 Mbps mill-Raspberry tiegħi fuq l-arja, u dan ikopri l-veloċità tal-fornitur tal-Internet tiegħi. Għaliex għandek bżonn tali AC kajman, jekk fit-teorija tista 'tikseb nofs gigabit anke fuq N? Jekk staqsejt lilek innifsek din il-mistoqsija, imbagħad mur fil-maħżen biex tixtri router reali bi tmien antenni esterni.

0. Dak li ser ikollok bżonn

  • Attwalment, il-"prodott tal-lampun" innifsu huwa ta 'kalibru: Pi 3 Mudell B + (biex jinkisbu l-veloċitajiet u l-kanali mixtieqa ta' 5GHz);
  • Tajba microSD>= 4GB;
  • Workstation b'Linux u microSD reader/writer;
  • Disponibbiltà ta 'ħiliet suffiċjenti fil-Linux, l-artikolu huwa għal Geek imħarreġ;
  • Netwerk bil-fili (eth0) konnettività bejn Raspberry u Linux, li jħaddem server DHCP fuq in-netwerk lokali u aċċess għall-Internet miż-żewġ apparati.

Kumment żgħir fuq l-aħħar punt. "Li ġie l-ewwel, il-bajda jew..." kif tagħmel router Wi-Fi fin-nuqqas ta 'tagħmir ta' aċċess għall-Internet? Ejja nħallu dan l-eżerċizzju divertenti barra mill-ambitu tal-artikolu u sempliċement nassumu li l-Raspberry huwa konness man-netwerk lokali permezz tal-wajer u għandu aċċess għall-Internet. F'dan il-każ, mhux se neħtieġu TV addizzjonali u manipulatur biex inwaqqfu l-"lampun".

1. Installa CentOS

Home page tal-proġett

Fil-ħin tal-kitba ta 'dan l-artikolu, il-verżjoni operattiva ta' CentOS fuq l-apparat hija 32-bit. X'imkien fuq il-World Wide Web iltqajt ma' opinjonijiet li l-prestazzjoni ta' tali OSs fuq arkitettura ARM 64-bit titnaqqas sa 20%. Se nħalli dan il-mument mingħajr kumment.

Fuq Linux, niżżel l-immaġni minima bil-qalba "-RaspberryPI-"u iktebha fuq microSD:

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

Qabel ma nibdew nużaw l-immaġni, aħna se nneħħu l-partizzjoni SWAP minnha, nespandu l-għerq għall-volum kollu disponibbli u neħilsu minn SELinux. L-algoritmu huwa sempliċi: agħmel kopja tal-għerq fuq Linux, ħassar il-ħitan kollha mill-microSD ħlief l-ewwel (/boot), oħloq għerq ġdid u rritorna l-kontenut tiegħu mill-kopja.

Eżempju ta' azzjonijiet meħtieġa (output sever tal-console)

# 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

Wara li tħoll il-kontenut tal-partizzjoni tal-għeruq, wasal iż-żmien li tagħmel xi bidliet għaliha.

Iddiżattiva SELinux fi /mnt/etc/selinux/config:

SELINUX=disabled

Editjar /mnt/etc/fstab, li tħalli fiha biss żewġ entrati dwar il-ħitan: boot (/boot, l-ebda tibdil) u root (aħna nibdlu l-valur UUID, li jista 'jinstab billi nistudjaw l-output tal-kmand blkid fuq Linux):

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

Fl-aħħarnett, aħna nibdlu l-parametri tal-boot tal-kernel: aħna nispeċifikaw post ġdid għall-partizzjoni tal-għeruq, tiddiżattiva l-output tal-informazzjoni tad-debugging u (b'għażla) tipprojbixxi lill-kernel milli jassenja indirizzi IPv6 fuq interfaces tan-netwerk:

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

Hawn hu l-kontenut /mnt/cmdline.txt għall-forma li ġejja (linja waħda mingħajr sings):

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

Magħmul:

# cd
# umount /mnt
# sync

Aħna nirranġaw mill-ġdid il-microSD fil-"lampun", innieduha u niksbu aċċess għan-netwerk għalih permezz ta 'ssh (root/centos).

2. Twaqqif ta 'CentOS

L-ewwel tliet movimenti li ma jitħawwadx: passwd, yum -u aġġornament, reboot.

Aħna nagħtu l-ġestjoni tan-netwerk netwerk:

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

Oħloq fajl (flimkien mad-direttorji) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Aħna nibdew mill-ġdid il-"lampun" u nerġgħu niksbu aċċess għan-netwerk għalih permezz ta 'ssh (l-indirizz IP jista' jinbidel). Oqgħod attent għal dak li jintuża /etc/resolv.conf, созданный ранее Network Manager-ом. Поэтому, в случае проблем с resolve, отредактируйте его содержимое. Использовать issolvi bis-sistema aħna mhux se.

Aħna nneħħu dak "mhux meħtieġ", insewwu u nħaffu t-tagħbija tal-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

Min għandu bżonn Cron u min ma jiddiġerixxix il-built-in tajmers systemd, jistgħu jistabbilixxu dak li hu nieqes. / var / log- u tħares permezz journalctl. Если потребуется история журнала (по умолчанию хранятся сведения только с момента старта системы):

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

Iddiżattiva l-użu tal-IPv6 minn servizzi bażiċi (jekk meħtieġ)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Ir-rilevanza tal-ħin fuq il-"lampun" hija ħaġa importanti. Peress li barra mill-kaxxa m'hemm l-ebda kapaċità ta 'hardware li tissejvja l-istat attwali tal-arloġġ mal-reboot, hija meħtieġa sinkronizzazzjoni. Daemon tajjeb ħafna u veloċi għal dan huwa krony - diġà installat u jibda awtomatikament. Tista' tibdel is-servers NTP għal dawk l-eqreb.

/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

Biex nissettjaw iż-żona tal-ħin se nużaw trick. Peress li l-għan tagħna huwa li noħolqu router Wi-Fi li jopera fi frekwenzi 5GHz, aħna se nippreparaw għal sorpriżi minn qabel regolatur:

# yum info crda
Sommarju: Daemon ta' konformità regolatorja għal netwerking bla fili 802.11

Dan id-disinn ħażin, ibbażat ukoll fuq iż-żona tal-ħin, "jipprojbixxi" l-użu (fir-Russja) ta 'frekwenzi 5GHz u kanali b'numri "għoli". Il-trick huwa li tistabbilixxi żona tal-ħin mingħajr ma tuża l-ismijiet tal-kontinenti/bliet, jiġifieri, minflok:

# timedatectl set-timezone Europe/Moscow

Aħna nagħfas:

# timedatectl set-timezone Etc/GMT-3

U l-aħħar irtokki għall-hairstyle tas-sistema:

# 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

Dak kollu li ntqal hawn fuq jista 'jitqies bħala struzzjonijiet kompluti għall-installazzjoni ta' CentOS "vanilla" fuq il-Raspberry Pi. Għandek tispiċċa b'PC li (re)boots f'inqas minn 10 sekondi, juża inqas minn 15 Megabytes ta 'RAM u 1.5 Gigabytes ta' microSD (fil-fatt inqas minn 1 Gigabyte minħabba /boot mhux komplut, imma ejja nkunu onesti).

Biex tinstalla s-softwer tal-punt ta 'aċċess Wi-Fi fuq din is-sistema, ser ikollok bżonn tespandi ftit il-kapaċitajiet tad-distribuzzjoni standard CentOS. L-ewwelnett, ejja naġġornaw is-sewwieq (firmware) tal-adapter Wi-Fi integrat. Il-paġna ewlenija tal-proġett tgħid:

Wifi fuq il-Raspberry 3B u 3B+

Il-fajls tal-firmware Raspberry PI 3B/3B+ mhumiex permessi li jitqassmu mill-Proġett CentOS. Tista 'tuża l-artikoli li ġejjin biex tifhem il-kwistjoni, tikseb il-firmware u twaqqaf il-wifi.

Dak li huwa pprojbit għall-proġett CentOS mhuwiex ipprojbit għalina għall-użu personali. Nissostitwixxu l-Firmware tad-distribuzzjoni Wi-Fi f'CentOS b'dak korrispondenti mill-iżviluppaturi Broadcom (dawk l-istess blobs binarji mibgħuta...). Dan, b'mod partikolari, jippermettilek tuża AC fil-modalità tal-punt ta 'aċċess.

Aġġornament tal-firmware tal-Wi-FiSkopri l-mudell tal-apparat u l-verżjoni attwali tal-firmware:

# 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 

Naraw li l-verżjoni tal-firmware hija 7.45.18 datata 01.03.2015/XNUMX/XNUMX, u ftakar is-sett ta 'numri li ġej: 43455 (brcmfmac43455-sdio.bin).

Niżżel l-immaġni Raspbian attwali. In-nies għażżien jistgħu jiktbu l-immaġni fuq microSD u jieħdu l-fajls bil-firmware minn hemm. Jew tista 'timmonta l-partizzjoni tal-għeruq tal-immaġni fil-Linux u tikkopja dak li għandek bżonn minn hemm:

# 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

Il-fajls tal-firmware tal-adapter Wi-Fi li jirriżultaw għandhom jiġu kkupjati u sostitwiti b'"lampun" fid-direttorju /usr/lib/firmware/brcm/

Nibdew mill-ġdid ir-router futur u nitbissmu kuntenti:

# 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 

Verżjoni: 7.45.154 datata 27.02.2018/XNUMX/XNUMX.

U ovvjament 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. Konfigurazzjoni tan-netwerk u sfidi li ġejjin

Kif qbilna hawn fuq, il-"lampun" huwa konness b'"wajer" man-netwerk lokali. Ejja nassumu li l-fornitur jipprovdi aċċess għall-Internet eżattament bl-istess mod: l-indirizz fuq in-netwerk pubbliku jinħareġ b'mod dinamiku mis-server DHCP (forsi b'irbit MAC). F'dan il-każ, wara s-setup finali tal-lampun, għandek bżonn biss li "plagg" il-kejbil tal-fornitur fih u lest. Awtorizzazzjoni bl-użu systemd-networkd - is-suġġett ta 'artiklu separat u mhux diskuss hawn.

L-interface(s) tal-Wi-Fi tal-Raspberry hija netwerk lokali, u l-adapter Ethernet integrat (eth0) huwa estern. Ejja nnumera n-netwerk lokali b'mod statiku, pereżempju: 192.168.0.0/24. Indirizz tal-lampun: 192.168.0.1. Server DHCP se jopera fuq in-netwerk estern (Internet).

Problema tal-Konsistenza tal-Ismijiet и programmatur famuż tal-Gwatemala - żewġ problemi li jistennew lil kull min jikkonfigura interfaces u servizzi tan-netwerk fid-distribuzzjonijiet systemd.

Kaos parallel (digressjoni lirika)Lennart Pottering ikkumpila l-programm tiegħu stess systemd Tajjeb ħafna. Dan systemd запускает другие программы так быстро, что те, не успев опомниться от судейского пинка свистка, спотыкаются и падают на старте даже не начав свой бег с препятствиями.

Iżda serjament, il-parallelizzazzjoni aggressiva tal-proċessi mnedija fil-bidu tas-systemd OS hija tip ta '"pont tal-ħmar" għal speċjalisti LSB sekwenzjali imħawwar. Fortunatament, li jinġieb l-ordni għal dan il-"kaos parallel" jirriżulta li jkun sempliċi, għalkemm mhux dejjem ovvju.

Aħna noħolqu żewġ interfaces ta 'pont virtwali b'ismijiet kostanti: lan и wan. Aħna se "konnettja" l-adapter(i) Wi-Fi għall-ewwel wieħed, u l-eth0 "lampun" mat-tieni wieħed.

/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=iva telimina l-ħtieġa li tagħti ħjiel lill-qalba permezz ta' sysctl biex tippermetti r-rotot.
MACAddress= Ejja nħallu l-kumment u nbiddlu jekk meħtieġ.

Сначала «подключаем» eth0. Помним о «проблеме единообразия» и используем только MAC адрес этого интерфейса, узнать который можно, например, так:

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

Noħolqu /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Aħna nħassru l-fajl ta 'konfigurazzjoni preċedenti eth0, reboot l-Raspberry u nikseb aċċess għan-netwerk għalih (l-indirizz IP x'aktarx se jinbidel):

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

5.DNSMASQ

Biex tagħmel punti ta 'aċċess għall-Wi-Fi, xejn ma jegħleb ftit ħelu dnsmasq + hostapd għadhom ma dehretx. Fl-opinjoni tiegħi.

F'każ li xi ħadd nesa, allura...hostapd - din hija l-ħaġa li tikkontrolla l-adapters tal-Wi-Fi (b'mod partikolari, se tieħu ħsieb li tgħaqqadhom mal-virtwali lan "lampun"), jawtorizza u tirreġistra klijenti mingħajr fili.

dnsmasq — tikkonfigura l-munzell tan-netwerk tal-klijenti: toħroġ indirizzi IP, servers DNS, gateway default u delights simili.

Nibdew b'dnsmasq:

# yum install dnsmasq

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

editjaha kif tixtieq tiegħek.

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

Il-"maġija" hawnhekk tinsab fil-parametru bind-dinamika, li jgħid lid-dnsmasq daemon biex jistenna sakemm jidher fuq is-sistema interface=lan, u mhux ħażin minn qagħda ta 'solitudni kburi wara l-bidu.

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

6. HOSTAPD

U finalment, il-konfigurazzjonijiet magic hostapd. M'għandi l-ebda dubju li xi ħadd qed jaqra dan l-artiklu biex ifittex preċiżament dawn il-linji għażiża.

Qabel ma tinstalla hostapd, trid tegħleb il- "problema tal-uniformità". L-adapter Wi-Fi wlan0 inkorporat jista 'faċilment jibdel ismu għal wlan1 meta jgħaqqad tagħmir USB Wi-Fi addizzjonali. Għalhekk, se nirranġaw l-ismijiet tal-interface bil-mod li ġej: se noħorġu b'ismijiet uniċi għall-adapters (bla fili) u norbtuhom ma 'indirizzi MAC.

Għall-adapter Wi-Fi integrat, li għadu wlan0:

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

Noħolqu /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Issa se nkunu ċerti li wl0 - Din hija mibnija fil-Wi-Fi. Aħna nibdew mill-ġdid il-Raspberry biex niżguraw dan.

Installa:

# yum install hostapd wireless-tools

Fajl ta' konfigurazzjoni /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

Mingħajr ma ninsew għal mument Kumitat ta' Emerġenza Statali, ibdel il-parametri li neħtieġu u ċċekkja manwalment għall-funzjonalità:

# hostapd /etc/hostapd/hostapd.conf

hostapd se jibda fil-mod interattiv, xandir l-istat tiegħu lill-console. Jekk ma jkunx hemm żbalji, allura l-klijenti li jappoġġaw il-modalità AC jkunu jistgħu jikkonnettjaw mal-punt ta 'aċċess. Biex twaqqaf hostapd - Ctrl-C.

Li jibqa 'huwa li tippermetti hostapd fl-istartjar tas-sistema. Jekk tagħmel il-ħaġa standard (systemctl enable hostapd), imbagħad wara r-reboot li jmiss tista 'tikseb dimostrazzjoni "rolling fid-demm" bid-dijanjosi "interface wl0 ma nstabx". Bħala riżultat ta '"kaos parallel," hostapd beda aktar malajr milli l-qalba sab l-adapter mingħajr fili.

L-Internet huwa mimli rimedji: minn timeout sfurzat qabel ma jibda d-daemon (diversi minuti), għal daemon ieħor li jimmonitorja d-dehra tal-interface u (jerġa) jibda l-hostpad. Is-soluzzjonijiet huma pjuttost fattibbli, iżda terriblement ikrah. Nappellaw lill-kbir għall-għajnuna systemd bil-“miri” u “kompiti” u “dipendenzi” tagħha.

Ikkopja l-fajl tas-servizz tad-distribuzzjoni għal /etc/systemd/system/hostapd.service:

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

u naqqas il-kontenut tiegħu għall-forma li ġejja:

[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

Il-maġija tal-fajl tas-servizz aġġornat tinsab fl-irbit dinamiku ta 'hostapd mal-mira l-ġdida - l-interface wl0. Meta tidher l-interface, id-daemon jibda; meta jisparixxi, jieqaf. U dan kollu huwa online - mingħajr ma terġa 'tibda s-sistema. Din it-teknika tkun utli b'mod speċjali meta tikkonnettja adapter USB Wi-Fi ma 'Raspberry.

Issa tista':

# systemctl enable hostapd
# reboot

7. IPTABLES

"X'???" © Iva, iva! Xejn systemd. L-ebda kombinazzjoni ġdida (fil-forma firewalld), li jispiċċaw jagħmlu l-istess ħaġa.

Ejja nużaw il-qadim tajjeb iptables, li s-servizzi tagħhom, wara li jibdew, se jgħabbi r-regoli tan-netwerk fil-qalba u jagħlqu bil-kwiet mingħajr ma jibqgħu residenti u mingħajr ma jikkunsmaw ir-riżorsi. systemd għandu eleganti IPMasquerade=, iżda xorta se nafdaw it-traduzzjoni tal-indirizz (NAT) u l-firewall lil iptables.

Installa:

# yum install iptables-services
# systemctl enable iptables ip6tables

Nippreferi naħżen il-konfigurazzjoni tal-iptables bħala skript (eżempju):

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

Aħna nwettqu l-iskript ta 'hawn fuq u nitilfu l-abbiltà li nistabbilixxu konnessjonijiet SSH bil-fili ġodda mal-Raspberry. Dak id-dritt, għamilna router Wi-Fi, li l-aċċess għalih "permezz tal-Internet" huwa pprojbit awtomatikament - issa biss "over the air". Aħna nqabbdu l-kejbil Ethernet tal-fornitur u nibdew nisserfjaw!

8. Bonus: + 2,4GHz

Meta immuntajt l-ewwel router tal-lampun bl-użu tat-tpinġija deskritta hawn fuq, skoprejt numru ta 'aġġeġġi fid-dar tiegħi li, minħabba l-limitazzjonijiet tad-disinn Wi-Fi tagħhom, ma setgħux jaraw il-"lampun" xejn. Ir-konfigurazzjoni mill-ġdid tar-router biex taħdem f'802.11b/g/n ma kinitx sportiva, peress li l-veloċità massima "fuq l-arja" f'dan il-każ ma qabżetx 40 Mbit, u l-fornitur tal-Internet favorit tiegħi joffrili 100 (permezz tal-kejbil).

Fil-fatt, soluzzjoni għall-problema diġà ġiet ivvintata: it-tieni interface Wi-Fi li topera bi frekwenza ta '2,4 GHz, u t-tieni punt ta' aċċess. Fi stall fil-qrib xtrajt mhux l-ewwel, iżda t-tieni USB Wi-Fi "whistle" li ltqajt magħha. Il-bejjiegħ kien itturmentat minn mistoqsijiet dwar iċ-chipset, il-kompatibilità mal-kernels ARM Linux u l-possibbiltà li jaħdem fil-mod AP (hu kien l-ewwel li beda).

Aħna kkonfiguraw il-"whistle" b'analoġija mal-adapter Wi-Fi integrat.

L-ewwel, ejja nbiddlu l-isem għal 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

Aħna se nafdaw il-ġestjoni tal-interface Wi-Fi l-ġdida lil daemon hostapd separat, li jibda u jieqaf skont il-preżenza ta '"whistle" definit b'mod strett fis-sistema: wl1.

Fajl ta' konfigurazzjoni /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]

Il-kontenut ta 'dan il-fajl jiddependi direttament fuq il-mudell tal-adapter USB Wi-Fi, għalhekk kopja/pejst banali tista' tonqosek.

Ikkopja l-fajl tas-servizz tad-distribuzzjoni għal /etc/systemd/system/hostapd2.service:

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

u naqqas il-kontenut tiegħu għall-forma li ġejja:

[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

Jibqa' biss li tiġi attivata istanza ġdida ta' hostapd:

# systemctl enable hostapd2

Dak kollox! Iġbed il-"whistle" u l-"lampun" innifsu, ħares lejn in-netwerks mingħajr fili ta 'madwarek.

U fl-aħħarnett, nixtieq twissik dwar il-kwalità tal-adapter USB Wi-Fi u l-provvista tal-enerġija tal-Raspberry. "whistle sħun" konness xi kultant jista 'jikkawża "iffriżar tal-lampun" minħabba problemi elettriċi għal żmien qasir.

Sors: www.habr.com

Żid kumment