Raspberry Pi + CentOS = Wi-Fi Hotspot (los yog raspberry router nrog lub kaus mom liab)

Muaj ntau cov ntaub ntawv hauv Is Taws Nem ntawm kev tsim Wi-Fi nkag mus rau cov ntsiab lus raws li Raspberry ib leeg-board PC. Raws li txoj cai, qhov no txhais tau tias siv Raspbian operating system ib txwm nyob rau Raspberry.

Ua ib tug adherent ntawm RPM-based systems, kuv tsis tuaj yeem dhau los ntawm qhov txuj ci me me no thiab tsis sim kuv tus hlub CentOS ntawm nws.

Cov kab lus muab cov lus qhia ua rau 5GHz / AC Wi-Fi router los ntawm Raspberry Pi 3 Model B + raws li CentOS operating system. Yuav muaj ob peb tus qauv tab sis me ntsis-paub tricks, thiab raws li ib tug ntxiv - ib tug kos duab rau txuas ntxiv Wi-Fi cov cuab yeej rau lub Raspberry, tso cai rau nws mus ua hauj lwm ib txhij nyob rau hauv ob peb hom (2,4 + 5GHz).

Raspberry Pi + CentOS = Wi-Fi Hotspot (los yog raspberry router nrog lub kaus mom liab)
(kev sib xyaw ntawm cov duab muaj dawb)

Cia peb nco ntsoov tam sim ntawd tias qee qhov cosmic velocities yuav tsis ua haujlwm. Kuv nyem qhov siab tshaj plaws ntawm 100 Mbps tawm ntawm kuv Raspberry hla huab cua, thiab qhov no suav nrog kev ceev ntawm kuv tus kws kho mob hauv Internet. Vim li cas koj thiaj xav tau AC sluggish, yog tias nyob rau hauv txoj kev xav koj tuaj yeem tau txais ib nrab ntawm gigabit txawm nyob rau N? Yog tias koj tau nug koj tus kheej cov lus nug no, tom qab ntawd mus rau tom khw yuav lub router tiag tiag nrog yim tus kav hlau txais xov sab nraud.

0. Yam koj yuav xav tau

  • Qhov tseeb, "raspberry khoom" nws tus kheej yog ntawm caliber: Pi 3 Model B + (kom ua tiav qhov siab 5GHz nrawm thiab cov channel);
  • Zoo microSD>= 4GB;
  • Workstation nrog Linux thiab microSD nyeem ntawv / sau ntawv;
  • Muaj kev txawj txaus hauv Linux, tsab xov xwm yog rau kev cob qhia Geek;
  • Wired network (eth0) kev sib txuas ntawm Raspberry thiab Linux, khiav DHCP server ntawm lub network hauv zos thiab kev siv Internet los ntawm ob qho khoom siv.

Ib qho lus me me ntawm lub ntsiab lus kawg. "Qhov twg yog thawj zaug, lub qe los yog ..." yuav ua li cas thiaj ua tau lub router Wi-Fi thaum tsis muaj cov cuab yeej siv Internet? Cia peb tawm ntawm qhov kev lom zem no tawm sab nraud ntawm qhov kev nthuav dav ntawm tsab xov xwm thiab tsuas yog xav tias Raspberry txuas nrog lub network hauv zos los ntawm xaim thiab muaj kev nkag mus rau Is Taws Nem. Nyob rau hauv cov ntaub ntawv no, peb yuav tsis xav tau ib tug ntxiv TV thiab ib tug manipulator los teeb lub "raspberry".

1. Nruab CentOS

Qhov project home page

Thaum lub sijhawm sau tsab xov xwm no, kev khiav haujlwm ntawm CentOS ntawm lub cuab yeej yog 32-ntsis. Qee qhov ntawm Lub Ntiaj Teb Wide Web Kuv tuaj hla kev xav tias qhov ua tau zoo ntawm OSes ntawm 64-ntsis ARM architecture raug txo los ntawm ntau npaum li 20%. Kuv yuav tawm lub sijhawm no yam tsis muaj lus pom.

Ntawm Linux, rub tawm cov duab tsawg kawg nrog lub ntsiav "- RaspberryPI-"thiab sau nws rau microSD:

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

Ua ntej pib siv cov duab, peb yuav tshem tawm SWAP muab faib los ntawm nws, nthuav cov hauv paus rau tag nrho cov ntim muaj thiab tshem tawm SELinux. Lub algorithm yog yooj yim: ua ib daim qauv ntawm cov hauv paus hniav ntawm Linux, tshem tawm tag nrho cov partitions ntawm microSD tsuas yog thawj (/boot), tsim ib lub hauv paus tshiab thiab xa rov qab nws cov ntsiab lus los ntawm daim ntawv theej.

Piv txwv ntawm qhov yuav tsum tau ua (tso tawm console hnyav)

# 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

Tom qab unpacking cov ntsiab lus ntawm lub hauv paus muab faib, nws yog lub sij hawm los ua ib co kev hloov rau nws.

Disable SELinux hauv /mnt/etc/selinux/config:

SELINUX=disabled

Kho kom raug /mnt/etc/fstab, tawm hauv nws tsuas yog ob qhov kev nkag ntawm cov kev faib tawm: khau raj (/ khau raj, tsis muaj kev hloov pauv) thiab hauv paus (peb hloov pauv tus nqi UUID, uas tuaj yeem pom los ntawm kev kawm cov zis ntawm blkid hais kom ua ntawm Linux):

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

Thaum kawg, peb hloov cov ntsiav khau raj tsis: peb qhia qhov chaw tshiab rau cov hauv paus muab faib, lov tes taw cov ntaub ntawv debugging thiab (optionally) txwv tsis pub lub ntsiav los ntawm kev muab IPv6 chaw nyob ntawm network interfaces:

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

Ntawm no yog cov ntsiab lus /mnt/cmdline.txt mus rau daim ntawv hauv qab no (ib kab tsis muaj hyphens):

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

Ua li cas:

# cd
# umount /mnt
# sync

Peb rov kho lub microSD rau hauv "raspberry", tso nws thiab tau txais kev nkag mus rau hauv lub network ntawm ssh (hauv paus / centos).

2. Teeb tsa CentOS

Thawj peb qhov kev txav tsis tuaj yeem: passwd, yum hloov tshiab, Reboot.

Peb muab kev tswj xyuas network networkd:

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

Tsim cov ntaub ntawv (ua ke nrog cov npe) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Peb reboot lub "raspberry" thiab rov tau txais kev nkag mus rau hauv lub network ntawm ssh (tus IP chaw nyob yuav hloov). Ua tib zoo saib seb yuav siv li cas /etc/resolv.conf, tsim ua ntej los ntawm Network Manager. Yog li ntawd, thaum muaj teeb meem nrog kev daws, kho nws cov ntsiab lus. Siv daws teeb meem peb yuav tsis.

Peb tshem tawm qhov "tsis tsim nyog", kho thiab ua kom lub chaw thau khoom ntawm 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

Leej twg xav tau cron thiab leej twg tsis zom cov built-in systemd timers, tuaj yeem tsim qhov uas ploj lawm. / var / cav- thiab saib dhau ntawv xov xwm. Yog tias koj xav tau cov ntaub ntawv keeb kwm (los ntawm lub neej ntawd, cov ntaub ntawv tsuas yog khaws cia txij thaum lub kaw lus pib):

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

Disable siv IPv6 los ntawm cov kev pabcuam yooj yim (yog tias xav tau)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Qhov tseem ceeb ntawm lub sijhawm ntawm "raspberry" yog qhov tseem ceeb. Txij li thaum tawm ntawm lub thawv tsis muaj peev xwm kho vajtse kom txuag tau lub xeev tam sim no ntawm lub moos thaum rov pib dua, synchronization yog xav tau. Ib tug zoo heev thiab ceev daemon rau qhov no yog mob - twb tau nruab thiab pib txiav. Koj tuaj yeem hloov NTP servers mus rau qhov ze tshaj plaws.

/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

Txhawm rau teeb tsa lub sijhawm peb yuav siv dag. Txij li thaum peb lub hom phiaj yog los tsim Wi-nkaus router ua haujlwm ntawm 5GHz zaus, peb yuav npaj rau kev xav tsis thoob ua ntej neeg tswj hwm:

#yum info crda
Summary : Regulatory compliance daemon for 802.11 wireless networking

Qhov kev tsim kev phem no, kuj tseem nyob ntawm thaj tsam lub sijhawm, "txhais" kev siv (hauv Russia) ntawm 5GHz zaus thiab cov channel nrog "siab" tus lej. Qhov ua kom yuam kev yog los teeb tsa lub sijhawm tsis siv cov npe ntawm cov teb chaws / nroog, uas yog, tsis yog:

# timedatectl set-timezone Europe/Moscow

Peb nias:

# timedatectl set-timezone Etc/GMT-3

Thiab qhov kawg kov rau cov plaub hau ntawm lub system:

# 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

Txhua yam uas tau hais los saum no tuaj yeem suav tias yog cov lus qhia ua tiav rau kev txhim kho "vanilla" CentOS ntawm Raspberry Pi. Koj yuav tsum xaus nrog lub PC uas (rov) khau raj hauv tsawg dua 10 vib nas this, siv tsawg dua 15 Megabytes ntawm RAM thiab 1.5 Gigabytes ntawm microSD (qhov tseeb tsawg dua 1 Gigabyte vim qhov tsis tiav / khau raj, tab sis cia peb ua siab ncaj).

Txhawm rau nruab Wi-Fi access point software ntawm qhov system no, koj yuav tsum tau nthuav dav me ntsis lub peev xwm ntawm tus qauv CentOS faib. Ua ntej tshaj plaws, cia peb hloov kho tus tsav tsheb (firmware) ntawm lub built-in Wi-Fi adapter. Qhov project home page hais tias:

Wifi ntawm Raspberry 3B thiab 3B +

Raspberry PI 3B / 3B + firmware cov ntaub ntawv tsis raug tso cai muab faib los ntawm CentOS Project. Koj tuaj yeem siv cov lus hauv qab no kom nkag siab qhov teeb meem, tau txais lub firmware thiab teeb tsa wifi.

Dab tsi yog txwv rau CentOS qhov project tsis txwv rau peb siv tus kheej. Peb hloov qhov kev faib tawm Wi-Fi firmware hauv CentOS nrog rau qhov sib thooj los ntawm Broadcom developers (cov tib neeg ntxub binary blobs ...). Qhov no, tshwj xeeb, yuav tso cai rau koj siv AC hauv hom nkag mus.

Txhim kho Wi-Fi firmwareTshawb xyuas cov qauv ntaus ntawv thiab tam sim no firmware version:

# 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 

Peb pom tias firmware version yog 7.45.18 hnub tim 01.03.2015/XNUMX/XNUMX, thiab nco ntsoov cov nram qab no cov zauv: 43455 (brcmfmac43455-sdio.bin).

Rub tawm cov duab Raspbian tam sim no. Cov neeg tub nkeeg tuaj yeem sau cov duab rau microSD thiab nqa cov ntaub ntawv nrog lub firmware los ntawm qhov ntawd. Lossis koj tuaj yeem mount lub hauv paus muab faib ntawm cov duab hauv Linux thiab luam qhov koj xav tau los ntawm qhov ntawd:

# 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

Qhov tshwm sim Wi-Fi adapter firmware cov ntaub ntawv yuav tsum tau theej thiab hloov nrog "raspberry" rau hauv phau ntawv teev npe /usr/lib/firmware/brcm/

Peb reboot lub router yav tom ntej thiab luag nyav contentedly:

# 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 

Version: 7.45.154 hnub tim 27.02.2018/XNUMX/XNUMX.

Thiab ntawm chav kawm 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. Network configuration thiab kev sib tw ua ntej

Raws li peb tau pom zoo saum toj no, "raspberry" txuas nrog "hlau" mus rau lub network hauv zos. Cia peb xav tias tus neeg muab kev pabcuam muab kev nkag mus rau Is Taws Nem raws nraim tib txoj kev: qhov chaw nyob ntawm cov pej xeem network yog muab dynamically los ntawm DHCP server (tej zaum nrog MAC khi). Hauv qhov no, tom qab kev teeb tsa zaum kawg ntawm raspberry, koj tsuas yog yuav tsum tau "plug" tus neeg muab kev pabcuam rau hauv nws thiab koj ua tiav. Kev tso cai siv systemd-networkd - lub ntsiab lus ntawm ib tsab xov xwm cais thiab tsis tau tham ntawm no.

Raspberry's Wi-Fi interface (s) yog lub network hauv zos, thiab cov khoom siv hauv Ethernet (eth0) yog sab nraud. Cia peb suav tus lej hauv zos statically, piv txwv li: 192.168.0.0/24. Raspberry chaw nyob: 192.168.0.1. DHCP neeg rau zaub mov yuav ua haujlwm ntawm sab nraud network (Internet).

Teeb meem kev sib haum xeeb ΠΈ nto moo Guatemalan programmer - ob qhov teeb meem uas tos ib tus neeg uas teeb tsa lub network interfaces thiab cov kev pabcuam hauv kev faib khoom.

Parallel chaos (lyrical digression)Lennart Pottering tau sau nws tus kheej txoj haujlwm systemd Zoo heev. Qhov no systemd launches lwm cov kev pab cuam sai heev uas lawv, tsis muaj sij hawm rov qab los ntawm tus referee lub tshuab ntawm lub xuav, ntog thiab ntog thaum pib yam tsis tau txawm pib lawv cov teeb meem.

Tab sis qhov tseeb, kev sib txuam sib luag ntawm cov txheej txheem pib thaum pib ntawm lub systemd OS yog ib hom "loj choj" rau cov kws tshaj lij LSB raws caij nyoog. Hmoov zoo, coj kev txiav txim rau qhov "chaos sib npaug" hloov mus ua qhov yooj yim, txawm tias tsis yog ib txwm pom tseeb.

Peb tsim ob qhov txuas txuas virtual nrog cov npe tas li: lan ΠΈ wan. Peb yuav "txuas" lub Wi-Fi adapter (s) rau thawj tus, thiab eth0 "raspberry" rau qhov thib ob.

/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 = yog tshem tawm qhov yuav tsum tau hint mus rau lub ntsiav ntawm sysctl kom pab tau txoj kev.
MACAddress = Cia peb uncomment thiab hloov yog tias tsim nyog.

Ua ntej peb "txuas" eth0. Peb nco ntsoov "qhov teeb meem tsis sib xws" thiab tsuas yog siv qhov chaw nyob MAC ntawm qhov interface no, uas tuaj yeem pom, piv txwv li, zoo li qhov no:

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

Peb tsim /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Peb tshem tawm cov ntaub ntawv teeb tsa yav dhau los eth0, rov pib lub Raspberry thiab tau txais kev nkag mus rau hauv network (tus IP chaw nyob feem ntau yuav hloov):

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

5.DNSMAQ

Txhawm rau ua Wi-Fi nkag mus rau cov ntsiab lus, tsis muaj dab tsi ntaus ob peb qab zib dnsmq ua + hostapd tseem tsis tau pom dua. Hauv kuv lub tswv yim.

Yog leej twg tsis nco qab lawm ces...hostapd - qhov no yog yam uas tswj Wi-Fi adapters (tshwj xeeb, nws yuav saib xyuas kev sib txuas ntawm lawv mus rau lub virtual lan "raspberries"), tso cai thiab sau npe cov neeg siv khoom wireless.

dnsmq ua - teeb tsa lub network pawg ntawm cov neeg siv khoom: teeb meem IP chaw nyob, DNS servers, lub rooj vag qub thiab zoo sib xws.

Cia peb pib nrog dnsmasq:

# yum install dnsmasq

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

kho nws raws li koj nyiam.

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

Lub "magic" ntawm no yog nyob rau hauv parameter khi-dynamic, uas qhia rau dnsmasq daemon tos kom txog thaum nws tshwm rau ntawm qhov system interface=lan, thiab tsis faint los ntawm ib tug haum ntawm txaus siab kho siab tom qab pib.

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

6. HOSTAPD

Thiab thaum kawg, cov khawv koob hostapd configurations. Kuv tsis muaj qhov tsis ntseeg tias ib tug neeg tab tom nyeem tsab xov xwm no hauv kev tshawb nrhiav cov kab no muaj nqis heev.

Ua ntej txhim kho hostapd, koj yuav tsum kov yeej "qhov teeb meem tsis sib xws". Lub built-in Wi-Fi adapter wlan0 tau yooj yim hloov nws lub npe rau wlan1 thaum txuas ntxiv USB Wi-Fi khoom. Yog li ntawd, peb yuav kho cov npe interface raws li hauv qab no: peb yuav los nrog cov npe tshwj xeeb rau (wireless) adapters thiab khi lawv rau MAC chaw nyob.

Rau lub built-in Wi-Fi adapter, uas yog tseem wlan0:

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

Peb tsim /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Tam sim no peb yuav paub tseeb tias wl0 - Qhov no yog built-in Wi-Fi. Peb reboot lub Raspberry kom paub tseeb tias qhov no.

Nruab:

# yum install hostapd wireless-tools

Configuration file /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

Tsis nco qab ib pliag State Emergency Committee, hloov cov kev txwv peb xav tau thiab manually tshawb xyuas kev ua haujlwm:

# hostapd /etc/hostapd/hostapd.conf

hostapd yuav pib hauv kev sib tham sib, tshaj tawm nws lub xeev mus rau lub console. Yog tias tsis muaj qhov yuam kev, cov neeg siv khoom txhawb nqa AC hom yuav tuaj yeem txuas mus rau qhov chaw nkag. Txhawm rau nres hostapd - Ctrl-C.

Txhua yam uas tseem tshuav yog txhawm rau pab kom hostapd hauv qhov system pib. Yog tias koj ua tus txheej txheem (systemctl enable hostapd), tom qab rov pib dua tom ntej koj tuaj yeem tau txais dab "dov hauv ntshav" nrog rau kev kuaj mob "interface wl0 tsis pom". Raws li qhov tshwm sim ntawm "kev tsis sib haum xeeb," hostapd pib sai dua li cov ntsiav pom lub wireless adapter.

Hauv Is Taws Nem yog tag nrho ntawm cov kev kho mob: los ntawm lub sijhawm yuam kev ua ntej pib daemon (ntau feeb), mus rau lwm tus daemon uas saib xyuas cov tsos ntawm lub interface thiab (rov) pib lub hostpad. Cov kev daws teeb meem yog qhov ua tau zoo heev, tab sis ua phem heev. Peb hu rau tus yawm suab kom pab systemd nrog nws "cov hom phiaj" thiab "ua haujlwm" thiab "dependencies".

Luam cov ntaub ntawv muab faib rau /etc/systemd/system/hostapd.service:

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

thiab txo nws cov ntsiab lus rau hauv daim ntawv hauv qab no:

[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

Cov khawv koob ntawm cov ntaub ntawv kev pabcuam tshiab yog nyob rau hauv kev sib txuas zoo ntawm hostapd rau lub hom phiaj tshiab - wl0 interface. Thaum lub interface tshwm, lub daemon pib; thaum nws ploj mus, nws nres. Thiab qhov no yog txhua yam hauv online - tsis muaj rebooting lub system. Cov txheej txheem no yuav muaj txiaj ntsig tshwj xeeb thaum txuas USB Wi-Fi adapter rau Raspberry.

Tam sim no koj tuaj yeem:

# systemctl enable hostapd
# reboot

7. IPTABLES

β€œXav???” Β© Yog, yog! Tsis muaj systemd. Tsis muaj newfangled combines (hauv daim ntawv firewalld), uas thaum kawg ua tib yam.

Wb siv tus qub zoo iptables, uas nws cov kev pabcuam, tom qab pib, yuav thauj cov cai hauv network rau hauv cov ntsiav thiab ntsiag to kaw yam tsis muaj neeg nyob thiab tsis siv cov peev txheej. systemd muaj ib tug elegant IPMasquerade =, tab sis peb tseem yuav tso siab rau qhov chaw nyob txhais lus (NAT) thiab firewall rau iptables.

Nruab:

# yum install iptables-services
# systemctl enable iptables ip6tables

Kuv nyiam khaws cov iptables configuration ua ib tsab ntawv (piv txwv li):

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

Peb ua cov ntawv sau saum toj no thiab poob lub peev xwm los tsim kev sib txuas SSH tshiab nrog Raspberry. Yog lawm, peb tau tsim Wi-Fi router, nkag mus rau qhov "ntawm Internet" raug txwv los ntawm lub neej ntawd - tam sim no tsuas yog "dhau saum huab cua". Peb txuas tus muab kev pabcuam Ethernet cable thiab pib nthwv dej!

8. Ntxiv: +2,4GHz

Thaum kuv sib sau ua ke thawj Raspberry router siv cov duab piav qhia saum toj no, kuv pom ntau cov khoom siv hauv kuv tsev uas, vim lawv qhov kev txwv Wi-Fi tsim, tsis tuaj yeem pom "raspberry" txhua. Reconfiguring lub router ua hauj lwm nyob rau hauv 802.11b / g / n yog unsporting, txij li thaum lub siab tshaj plaws ceev "dhau saum huab cua" nyob rau hauv cov ntaub ntawv no tsis tshaj 40 Mbit, thiab kuv nyiam Internet muab rau kuv 100 (ntawm cable).

Qhov tseeb, kev daws teeb meem twb tau tsim lawm: qhov thib ob Wi-Fi interface ua haujlwm ntawm qhov zaus ntawm 2,4 GHz, thiab qhov thib ob nkag mus. Ntawm lub tsev muag khoom nyob ze kuv yuav tsis yog thawj zaug, tab sis qhov thib ob USB Wi-Fi "xwb" kuv tuaj hla. Tus neeg muag khoom raug tsim txom los ntawm cov lus nug txog lub chipset, kev sib raug zoo nrog ARM Linux kernels thiab muaj peev xwm ua haujlwm hauv AP hom (nws yog thawj zaug pib).

Peb teeb tsa lub "xwb" los ntawm kev sib piv nrog lub built-in Wi-Fi adapter.

Ua ntej, cia peb hloov npe rau 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

Peb yuav tso siab rau kev tswj hwm ntawm Wi-nkaus interface tshiab rau ib qho kev sib cais hostapd daemon, uas yuav pib thiab nres nyob ntawm seb muaj cov "xwb" nruj me ntsis hauv qhov system: wl1.

Configuration file /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]

Cov ntsiab lus ntawm cov ntaub ntawv no ncaj qha nyob ntawm tus qauv ntawm USB Wi-Fi adapter, yog li daim ntawv banal / paste yuav ua tsis tau rau koj.

Luam cov ntaub ntawv muab faib rau /etc/systemd/system/hostapd2.service:

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

thiab txo nws cov ntsiab lus rau hauv daim ntawv hauv qab no:

[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

Txhua yam uas tseem tshuav yog txhawm rau ua kom muaj qhov piv txwv tshiab ntawm hostapd:

# systemctl enable hostapd2

Yog tag nrho! Rub lub "xws" thiab "raspberry" nws tus kheej, saib cov wireless networks nyob ib ncig ntawm koj.

Thiab thaum kawg, kuv xav ceeb toom koj txog qhov zoo ntawm USB Wi-Fi adapter thiab lub zog ntawm Raspberry. Txuas "xov kub" tuaj yeem ua rau "raspberry khov" vim muaj teeb meem hluav taws xob luv luv.

Tau qhov twg los: www.hab.com

Ntxiv ib saib