Raspberry Pi + CentOS = Wi-Fi Hotspot (o raspberry router nga adunay pula nga kalo)

Adunay usa ka dako nga kantidad sa impormasyon sa Internet sa paghimo sa Wi-Fi access points base sa usa ka Raspberry single-board PC. Ingon sa usa ka lagda, kini nagpasabut sa paggamit sa Raspbian operating system nga lumad sa Raspberry.

Ingon usa ka sumusunod sa mga sistema nga nakabase sa RPM, dili nako mapasa kining gamay nga milagro ug dili sulayan ang akong minahal nga CentOS niini.

Naghatag ang artikulo og mga instruksyon sa paghimo og 5GHz/AC Wi-Fi router gikan sa Raspberry Pi 3 Model B+ base sa CentOS operating system. Adunay daghang mga sumbanan apan gamay nga nahibal-an nga mga limbong, ug ingon usa ka bonus - usa ka drowing alang sa pagkonektar sa dugang nga kagamitan sa Wi-Fi sa Raspberry, nga gitugotan kini nga dungan nga molihok sa daghang mga mode (2,4 + 5GHz).

Raspberry Pi + CentOS = Wi-Fi Hotspot (o raspberry router nga adunay pula nga kalo)
(pagsagol sa libre nga magamit nga mga imahe)

Atong timan-an dayon nga ang ubang mga tulin sa kosmiko dili molihok. Gipislit nako ang labing taas nga 100 Mbps gikan sa akong Raspberry sa kahanginan, ug kini naglangkob sa katulin sa akong Internet provider. Ngano nga kinahanglan nimo ang ingon nga hinay nga AC, kung sa teorya mahimo nimo makuha ang tunga sa gigabit bisan sa N? Kung gipangutana nimo ang imong kaugalingon niini nga pangutana, dayon adto sa tindahan aron makapalit usa ka tinuod nga router nga adunay walo ka mga external antenna.

0. Unsa ang imong gikinahanglan

  • Sa tinuud, ang "produkto sa raspberry" mismo adunay kalibre: Pi 3 Model B + (aron makab-ot ang gitinguha nga 5GHz katulin ug mga agianan);
  • Maayong microSD>= 4GB;
  • Workstation nga adunay Linux ug microSD reader/writer;
  • Ang pagkaanaa sa igo nga kahanas sa Linux, ang artikulo alang sa usa ka nabansay nga Geek;
  • Wired network (eth0) connectivity tali sa Raspberry ug Linux, nga nagpadagan sa DHCP server sa lokal nga network ug Internet access gikan sa duha ka device.

Usa ka gamay nga komento sa katapusan nga punto. "Unsa man ang nag-una, ang itlog o ..." kung giunsa paghimo ang usa ka Wi-Fi router kung wala ang bisan unsang kagamitan sa pag-access sa Internet? Atong biyaan kini nga makalingaw nga ehersisyo sa gawas sa sakup sa artikulo ug ibutang lang nga ang Raspberry konektado sa lokal nga network pinaagi sa wire ug adunay access sa Internet. Sa kini nga kaso, dili na kita magkinahanglan og dugang nga TV ug manipulator aron ma-set up ang "raspberry".

1. I-install ang CentOS

Panimalay nga panid sa proyekto

Sa panahon sa pagsulat niini nga artikulo, ang nagdagan nga bersyon sa CentOS sa device mao ang 32-bit. Sa usa ka lugar sa World Wide Web nakit-an nako ang mga opinyon nga ang paghimo sa ingon nga mga OS sa 64-bit nga arkitektura sa ARM gipakunhod sa 20%. Ibilin ko kini nga higayon nga wala’y komento.

Sa Linux, i-download ang gamay nga imahe gamit ang kernel "-RaspberryPI-"ug isulat kini sa microSD:

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

Sa dili pa magsugod sa paggamit sa hulagway, atong tangtangon ang SWAP partition gikan niini, palapdan ang gamut ngadto sa tibuok nga anaa nga gidaghanon ug kuhaa ang SELinux. Ang algorithm yano ra: paghimo usa ka kopya sa gamut sa Linux, kuhaa ang tanan nga mga partisyon gikan sa microSD gawas sa una (/boot), paghimo usa ka bag-ong gamut ug ibalik ang mga sulud niini gikan sa kopya.

Pananglitan sa gikinahanglan nga mga aksyon (grabe nga console output)

# 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

Human ma-unpack ang mga sulod sa root partition, panahon na nga magbag-o niini.

I-disable ang SELinux sa /mnt/etc/selinux/config:

SELINUX=disabled

Pag-edit /mnt/etc/fstab, nagbilin lamang niini og duha ka entries mahitungod sa mga partisyon: boot (/boot, walay mga kausaban) ug gamut (among giusab ang UUID nga bili, nga makita pinaagi sa pagtuon sa output sa blkid command sa Linux):

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

Sa katapusan, among giusab ang kernel boot parameters: among gipiho ang usa ka bag-ong lokasyon alang sa root partition, disable ang output sa debugging nga impormasyon ug (opsyonal) nagdili sa kernel sa pag-assign sa IPv6 address sa mga interface sa network:

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

Ania ang sulod /mnt/cmdline.txt sa mosunod nga porma (usa ka linya nga walay hyphen):

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

Nahuman:

# cd
# umount /mnt
# sync

Among gihan-ay pag-usab ang microSD ngadto sa "raspberry", ilunsad kini ug makuha ang access sa network niini pinaagi sa ssh (root/centos).

2. Pag-set up sa CentOS

Ang unang tulo ka dili matarug nga mga lihok: passwd, yum -y update, reboot.

Gihatag namon ang pagdumala sa network networkd:

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

Paghimo usa ka file (uban ang mga direktoryo) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Gi-reboot namo ang "raspberry" ug nakuha na usab ang access sa network niini pinaagi sa ssh (mahimong mausab ang IP address). Hatagi'g pagtagad kung unsa ang gigamit /etc/resolv.conf, nga gihimo sa sayo pa sa Network Manager. Busa, kung adunay mga problema sa pagsulbad, usba ang mga sulud niini. Paggamit nasulbad sa systemd dili kita.

Gikuha namon ang "dili kinahanglan", pag-ayo ug pagpadali sa pagkarga sa 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

Kinsa ang nanginahanglan cron ug kinsa ang dili makahilis sa built-in systemd timers, maka-establisar sa kulang. / var / log- ug tan-awa journalctl. Kung kinahanglan nimo ang kasaysayan sa log (sa default, ang impormasyon gitipigan lamang gikan sa pagsugod sa sistema):

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

I-disable ang paggamit sa IPv6 sa mga batakang serbisyo (kung gikinahanglan)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

Ang kalabutan sa oras sa "raspberry" usa ka hinungdanon nga butang. Tungod kay sa gawas sa kahon wala'y abilidad sa hardware sa pagluwas sa kasamtangan nga kahimtang sa orasan sa pag-reboot, gikinahanglan ang pag-synchronize. Usa ka maayo kaayo ug paspas nga daemon alang niini chrony - na-install na ug awtomatikong nagsugod. Mahimo nimong usbon ang mga NTP server sa labing duol nga mga.

/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

Aron mabutang ang time zone nga among gamiton limbong. Tungod kay ang among katuyoan mao ang paghimo usa ka Wi-Fi router nga naglihok sa 5GHz nga mga frequency, mangandam kami daan alang sa mga sorpresa. regulator:

# yum info crda
Sumaryo: Regulatory compliance daemon para sa 802.11 wireless networking

Kining daotang disenyo, base usab sa time zone, "nagdili" sa paggamit (sa Russia) sa 5GHz nga mga frequency ug mga channel nga adunay "taas" nga mga numero. Ang lansis mao ang pagtakda og time zone nga wala gamita ang mga ngalan sa mga kontinente/syudad, nga mao, imbes nga:

# timedatectl set-timezone Europe/Moscow

Gipugos namo:

# timedatectl set-timezone Etc/GMT-3

Ug ang katapusan nga paghikap sa estilo sa buhok sa 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. Mga Add-on sa CentOS

Ang tanan nga gisulti sa ibabaw mahimong makonsiderar nga kompleto nga mga panudlo alang sa pag-install sa "vanilla" CentOS sa Raspberry Pi. Kinahanglan nimo nga matapos ang usa ka PC nga (re) nag-boot sa wala’y 10 segundos, naggamit nga wala’y 15 Megabytes sa RAM ug 1.5 Gigabytes sa microSD (sa tinuud nga wala’y 1 Gigabyte tungod sa dili kompleto / boot, apan matinud-anon ta).

Aron ma-install ang Wi-Fi access point software niini nga sistema, kinahanglan nimo nga gamay nga palapdan ang mga kapabilidad sa standard nga pag-apod-apod sa CentOS. Una sa tanan, atong i-upgrade ang driver (firmware) sa built-in nga Wi-Fi adapter. Ang panid sa balay sa proyekto nag-ingon:

Wifi sa Raspberry 3B ug 3B+

Ang Raspberry PI 3B/3B+ nga mga file sa firmware dili gitugotan nga ipang-apod-apod sa CentOS Project. Mahimo nimong gamiton ang mosunod nga mga artikulo aron masabtan ang isyu, kuhaa ang firmware ug i-set up ang wifi.

Ang gidili alang sa proyekto sa CentOS wala gidili alang kanamo alang sa personal nga paggamit. Gipulihan namon ang pag-apod-apod sa Wi-Fi firmware sa CentOS nga adunay katugbang gikan sa mga developer sa Broadcom (kanang parehas nga gidumtan nga binary blobs ...). Kini, sa partikular, magtugot kanimo sa paggamit sa AC sa access point mode.

Pag-upgrade sa firmware sa Wi-FiHibal-i ang modelo sa aparato ug ang karon nga bersyon sa 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 

Atong makita nga ang firmware nga bersyon mao ang 7.45.18 pinetsahan 01.03.2015/XNUMX/XNUMX, ug hinumdumi ang mosunod nga hugpong sa mga numero: 43455 (brcmfmac43455-sdio.bin).

I-download ang kasamtangan nga hulagway sa Raspbian. Ang mga tapulan makasulat sa imahe sa microSD ug makuha ang mga file gamit ang firmware gikan didto. O mahimo nimong i-mount ang root partition sa imahe sa Linux ug kopyahon kung unsa ang imong kinahanglan gikan didto:

# 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

Ang resulta nga Wi-Fi adapter firmware files kinahanglan nga kopyahon ug pulihan sa "raspberry" ngadto sa direktoryo /usr/lib/firmware/brcm/

Gi-reboot namo ang umaabot nga router ug nagpahiyom nga kontento:

# 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 

Bersyon: 7.45.154 nga gipetsahan 27.02.2018/XNUMX/XNUMX.

Ug siyempre 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 ug mga hagit sa unahan

Sama sa among gikasabutan sa ibabaw, ang "raspberry" konektado sa "wire" sa lokal nga network. Ibutang ta nga ang provider naghatag ug Internet access sa eksaktong parehas nga paagi: ang adres sa publikong network gi-isyu sa dinamikong paagi sa DHCP server (tingali adunay MAC binding). Sa kini nga kaso, pagkahuman sa katapusan nga pag-setup sa raspberry, kinahanglan nimo nga "i-plug" ang cable sa provider niini ug nahuman ka. Awtorisasyon sa paggamit systemd-networkd - ang hilisgutan sa usa ka bulag nga artikulo ug wala gihisgutan dinhi.

Ang (mga) interface sa Wi-Fi sa Raspberry usa ka lokal nga network, ug ang built-in nga Ethernet adapter (eth0) kay external. Atong numerohan ang lokal nga network sa static, pananglitan: 192.168.0.0/24. Raspberry nga adres: 192.168.0.1. Usa ka DHCP server ang molihok sa gawas nga network (Internet).

Problema sa Pagkakonsistent sa Ngalan ΠΈ sikat nga programmer sa Guatemala - duha ka kasamok nga naghulat sa bisan kinsa nga nag-configure sa mga interface sa network ug mga serbisyo sa mga pag-apod-apod sa systemd.

Parallel chaos (lyrical digression)Ang Lennart Pottering nag-compile sa kaugalingon nga programa systemd Maayo kaayo. Kini systemd naglusad sa uban nga mga programa nga dali kaayo nga sila, nga wala’y oras nga makabangon gikan sa pagbuto sa whistle sa referee, mapandol ug matumba sa pagsugod nga wala gani magsugod sa ilang obstacle course.

Apan seryoso, ang agresibo nga parallelization sa gilunsad nga mga proseso sa pagsugod sa systemd OS usa ka matang sa "donkey bridge" alang sa mga batid nga sequential LSB specialists. Maayo na lang, ang pagdala sa kahusay sa kini nga "parallel chaos" nahimo nga yano, bisan kung dili kanunay klaro.

Naghimo kami og duha ka virtual bridge interface nga adunay kanunay nga mga ngalan: lan ΠΈ wan. Atong "ikonektar" ang (mga) adapter sa Wi-Fi sa una, ug ang eth0 "raspberry" sa ikaduha.

/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=oo nagwagtang sa panginahanglan sa pagpahibalo sa kernel pinaagi sa sysctl aron makahimo sa pag-routing.
MACAddress= Atong uncomment ug usbon kung gikinahanglan.

Una kita "pagkonektar" eth0. Nahinumdom kami sa "problema sa pagkaparehas" ug gigamit lamang ang MAC address niini nga interface, nga makita, pananglitan, sama niini:

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

Kami nagmugna /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Atong tangtangon ang naunang configuration file eth0, i-reboot ang Raspberry ug makuha ang access sa network niini (malagmit mausab ang IP address):

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

5.DNSMASQ

Alang sa paghimo sa mga punto sa pag-access sa Wi-Fi, walay bisan unsa nga makabuntog sa usa ka matam-is nga magtiayon dnsmasq + hostapd wala pa nakahibalo niini. Sa akong hunahuna.

In case naay nakalimot, then...hostapd - kini ang butang nga nagkontrol sa mga adapter sa Wi-Fi (sa partikular, kini ang mag-atiman sa pagkonektar kanila sa virtual lan "raspberries"), nagtugot ug nagparehistro sa mga wireless nga kliyente.

dnsmasq β€” nag-configure sa network stack sa mga kliyente: nag-isyu sa mga IP address, DNS server, default gateway ug parehas nga mga kalipayan.

Magsugod ta sa dnsmasq:

# yum install dnsmasq

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

i-edit kini sa imong gusto.

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

Ang "magic" dinhi nahimutang sa parameter bind-dynamic, nga nagsulti sa dnsmasq daemon nga maghulat hangtod kini makita sa sistema interface=lan, ug dili maluya tungod sa usa ka angay sa garbo nga kamingaw pagkahuman sa pagsugod.

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

6. HOSTAPD

Ug sa katapusan, ang magic hostapd configurations. Wala akoy pagduha-duha nga adunay nagbasa niini nga artikulo sa pagpangita sa tukma nga kini nga mga mahal nga linya.

Sa wala pa i-install ang hostapd, kinahanglan nimo nga mabuntog ang "problema sa pagkaparehas". Ang built-in nga Wi-Fi adapter nga wlan0 dali nga makausab sa ngalan niini sa wlan1 kung magkonektar sa dugang nga USB Wi-Fi nga kagamitan. Busa, ayohon namo ang mga ngalan sa interface sa mosunod nga paagi: maghimo kami og talagsaon nga mga ngalan alang sa (wireless) nga mga adapter ug ihigot kini sa mga MAC address.

Alang sa built-in nga Wi-Fi adapter, nga wlan0 gihapon:

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

Kami nagmugna /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

Karon makasiguro na kita niana wl0 - Kini usa ka built-in nga Wi-Fi. Gi-reboot namon ang Raspberry aron masiguro kini.

Pag-instalar:

# yum install hostapd wireless-tools

Pag-configure nga 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

Sa walay pagkalimot sa makadiyot Komite sa Emergency sa Estado, usba ang mga parametro nga atong gikinahanglan ug manu-mano nga susihon ang pagpaandar:

# hostapd /etc/hostapd/hostapd.conf

Ang hostapd magsugod sa interactive mode, nga magsibya sa estado niini ngadto sa console. Kung walay mga kasaypanan, nan ang mga kliyente nga nagsuporta sa AC mode makahimo sa pagkonektar sa access point. Aron ihunong ang hostapd - Ctrl-C.

Ang nahabilin mao ang pagpagana sa hostapd sa pagsugod sa sistema. Kung buhaton nimo ang standard nga butang (systemctl enable hostapd), unya pagkahuman sa sunod nga pag-reboot mahimo ka makakuha usa ka demonyo nga "nagligid sa dugo" nga adunay diagnosis "interface wl0 wala makit-an". Ingon usa ka sangputanan sa "parallel chaos," nagsugod ang hostapd nga mas paspas kaysa nakit-an sa kernel ang wireless adapter.

Ang Internet puno sa mga remedyo: gikan sa pinugos nga timeout sa wala pa magsugod ang daemon (pila ka minuto), ngadto sa lain nga daemon nga nagmonitor sa dagway sa interface ug (re) nagsugod sa hostpad. Ang mga solusyon mahimo’g magamit, apan labi ka daotan. Nanawagan kami sa bantugan alang sa tabang systemd uban sa iyang "mga tumong" ug "mga buluhaton" ug "mga pagsalig".

Kopyaha ang distribution service file sa /etc/systemd/system/hostapd.service:

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

ug pakunhuran ang mga sulod niini sa mosunod nga porma:

[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

Ang salamangka sa gi-update nga file sa serbisyo naa sa dinamikong pagbugkos sa hostapd sa bag-ong target - ang interface sa wl0. Kung makita ang interface, magsugod ang daemon; kung mawala kini, mohunong kini. Ug kini tanan online - nga wala i-reboot ang sistema. Kini nga teknik labi ka mapuslanon kung magkonektar sa usa ka USB Wi-Fi adapter sa usa ka Raspberry.

Karon mahimo nimong:

# systemctl enable hostapd
# reboot

7. IPTABLES

β€œUnsa???” Β© Oo, oo nga! Wala systemd. Wala'y bag-ong mga kombinasyon (sa porma firewalld), nga nagtapos sa pagbuhat sa parehas nga butang.

Atong gamiton ang maayo nga daan iptables, kansang mga serbisyo, human magsugod, mag-load sa mga lagda sa network ngadto sa kernel ug hilom nga magsira nga dili magpabilin nga residente ug walay pag-usik sa mga kapanguhaan. systemd adunay usa ka elegante IPMasquerade=, pero itugyan gihapon namo ang address translation (NAT) ug firewall sa iptables.

Pag-instalar:

# yum install iptables-services
# systemctl enable iptables ip6tables

Mas gusto nako nga tipigan ang configuration sa iptables isip script (pananglitan):

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

Gipatuman namo ang script sa ibabaw ug nawad-an sa abilidad sa pag-establisar og bag-ong wired SSH nga koneksyon sa Raspberry. Husto kana, naghimo kami usa ka Wi-Fi router, ang pag-access diin "pinaagi sa Internet" gidili pinaagi sa default - karon "sa hangin" ra. Gikonektar namo ang Ethernet cable sa provider ug magsugod sa pag-surf!

8. Bonus: +2,4GHz

Sa dihang akong gitigom ang unang Raspberry router gamit ang drawing nga gihulagway sa ibabaw, nakadiskubre ko og ubay-ubay nga mga gadgets sa akong panimalay nga, tungod sa ilang mga limitasyon sa disenyo sa Wi-Fi, dili gyud makita ang "raspberry". Ang pag-reconfigure sa router aron magtrabaho sa 802.11b/g/n dili sporting, tungod kay ang pinakataas nga tulin nga "sa hangin" sa niini nga kaso dili molapas sa 40 Mbit, ug ang akong paborito nga Internet provider nagtanyag kanako 100 (pinaagi sa cable).

Sa tinuud, ang usa ka solusyon sa problema naimbento na: usa ka ikaduha nga interface sa Wi-Fi nga naglihok sa frequency nga 2,4 GHz, ug usa ka ikaduha nga punto sa pag-access. Sa duol nga stall gipalit nako dili ang una, apan ang ikaduha nga "whistle" sa USB Wi-Fi nga akong nakit-an. Ang magbabaligya gisakit sa mga pangutana bahin sa chipset, pagkaangay sa mga kernel sa ARM Linux ug ang posibilidad nga magtrabaho sa AP mode (siya ang una nga nagsugod).

Gi-configure namo ang "whistle" pinaagi sa analogy sa built-in nga Wi-Fi adapter.

Una, usbon nato ang ngalan niini sa 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

Itugyan namo ang pagdumala sa bag-ong interface sa Wi-Fi ngadto sa usa ka bulag nga hostapd daemon, nga magsugod ug mohunong depende sa presensya sa usa ka hugot nga gihubit nga "whistle" sa sistema: wl1.

Pag-configure nga 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]

Ang mga sulod niini nga file direkta nga nagdepende sa modelo sa USB Wi-Fi adapter, mao nga ang usa ka banal nga kopya/paste mahimong mapakyas kanimo.

Kopyaha ang distribution service file sa /etc/systemd/system/hostapd2.service:

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

ug pakunhuran ang mga sulod niini sa mosunod nga porma:

[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

Ang nahabilin mao ang paghimo sa usa ka bag-ong pananglitan sa hostapd:

# systemctl enable hostapd2

Mao ra na! Ibira ang "whistle" ug ang "raspberry" mismo, tan-awa ang mga wireless network sa imong palibot.

Ug sa katapusan, gusto ko nga pasidan-an ka bahin sa kalidad sa USB Wi-Fi adapter ug suplay sa kuryente sa Raspberry. Ang konektado nga "hot whistle" usahay mahimong hinungdan sa "raspberry freezing" tungod sa mga short-term electrical troubles.

Source: www.habr.com

Idugang sa usa ka comment