ʻO Raspberry Pi + CentOS = Wi-Fi Hotspot (a i ʻole ka mea hoʻokele raspberry me kahi pāpale ʻulaʻula)

Nui ka ʻike ma ka Pūnaewele e pili ana i ka hoʻokumu ʻana i nā wahi komo Wi-Fi e pili ana i kahi PC papa hoʻokahi Raspberry. Ma ke ʻano he kānāwai, ʻo ia ka hoʻohana ʻana i ka ʻōnaehana hana Raspbian maoli i ka Raspberry.

Ma ke ʻano he mea mālama i nā ʻōnaehana RPM, ʻaʻole hiki iaʻu ke hele i kēia hana mana a ʻaʻole hoʻi e hoʻāʻo i kaʻu CentOS aloha ma luna.

Hāʻawi ka ʻatikala i nā ʻōlelo aʻoaʻo no ka hana ʻana i kahi alalai Wi-Fi 5GHz/AC mai kahi Raspberry Pi 3 Model B+ e pili ana i ka ʻōnaehana hana CentOS. E loaʻa kekahi mau hana maʻamau akā ʻike liʻiliʻi, a ma ke ʻano he bonus - kahi kiʻi no ka hoʻopili ʻana i nā mea Wi-Fi hou i ka Raspberry, e ʻae iā ia e hana like i nā ʻano mode (2,4 + 5GHz).

ʻO Raspberry Pi + CentOS = Wi-Fi Hotspot (a i ʻole ka mea hoʻokele raspberry me kahi pāpale ʻulaʻula)
(hui o nā kiʻi i loaʻa manuahi)

E hoʻomaopopo koke kākou ʻaʻole e holo kekahi mau velocity cosmic. Hoʻopiʻi au i ka 100 Mbps kiʻekiʻe mai kaʻu Raspberry ma luna o ka lewa, a uhi kēia i ka wikiwiki o kaʻu mea hoʻolako pūnaewele. No ke aha ʻoe e makemake ai i kahi AC lohi, inā ma ke kumumanaʻo hiki iā ʻoe ke loaʻa i ka hapalua gigabit ma N? Inā ua nīnau ʻoe iā ʻoe iho i kēia nīnau, a laila e hele i ka hale kūʻai e kūʻai i kahi alalai maoli me nā antenna waho ʻewalu.

0. He aha kāu e pono ai

  • ʻOiaʻiʻo, ʻo ka "huahana raspberry" ponoʻī he caliber: Pi 3 Model B+ (e hoʻokō i nā wikiwiki 5GHz i makemake ʻia a me nā kahawai);
  • Maikaʻi microSD> = 4GB;
  • Ke kahua hana me Linux a me ka mea heluhelu / kākau moʻolelo microSD;
  • Loaʻa i nā mākau kūpono ma Linux, ʻo ka ʻatikala no kahi Geek i aʻo ʻia;
  • Hoʻohui pūnaewele uea (eth0) ma waena o Raspberry a me Linux, e holo ana i ka server DHCP ma ka pūnaewele kūloko a me ka ʻike pūnaewele mai nā mea ʻelua.

ʻO kahi manaʻo liʻiliʻi ma ka helu hope. "ʻO wai ka mea i hele mua mai, ʻo ka hua manu a i ʻole ..." pehea e hana ai i kahi alalai Wi-Fi me ka loaʻa ʻole o nā mea pono pūnaewele? E haʻalele kākou i kēia hana hoʻonanea ma waho o ke ʻano o ka ʻatikala a manaʻo wale ua pili ka Raspberry i ka pūnaewele kūloko ma ke kelepona a loaʻa iā ia ka Pūnaewele. I kēia hihia, ʻaʻole pono mākou i kahi TV hou a me kahi manipulator e hoʻonohonoho i ka "raspberry".

1. E hoʻouka i ka CentOS

ʻaoʻao home papahana

I ka manawa e kākau ai i kēia ʻatikala, ʻo ka mana holo o CentOS ma ka hāmeʻa he 32-bit. Ma kahi o ka Pūnaewele puni honua Ua loaʻa iaʻu nā manaʻo e hoʻemi ʻia ka hana o ia mau OS ma ka 64-bit ARM architecture e like me ka 20%. E haʻalele wau i kēia manawa me ka ʻole o ka ʻōlelo.

Ma Linux, e hoʻoiho i ke kiʻi liʻiliʻi me ka kernel "-RapberryPI-"a kākau iā ia i microSD:

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

Ma mua o ka hoʻomaka ʻana e hoʻohana i ke kiʻi, e wehe mākou i ka ʻāpana SWAP mai ia mea, e hoʻonui i ke kumu i ka leo holoʻokoʻa i loaʻa a hoʻopau iā SELinux. He mea maʻalahi ka algorithm: e hana i kope o ke kumu ma Linux, e holoi i nā ʻāpana āpau mai ka microSD koe wale nō ka mua (/boot), e hana i kahi aʻa hou a hoʻihoʻi i kāna mau mea mai ke kope.

Ka laʻana o nā hana i koi ʻia (ka hoʻopuka console koʻikoʻi)

# 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

Ma hope o ka wehe ʻana i nā mea o ka ʻāpana kumu, ʻo ia ka manawa e hoʻololi ai iā ia.

Hoʻopau iā SELinux i loko /mnt/etc/selinux/config:

SELINUX=disabled

Hoʻoponopono /mnt/etc/fstab, waiho i loko o ia mea he ʻelua mau mea e pili ana i nā ʻāpana: boot (/boot, ʻaʻohe hoʻololi) a me ke aʻa (hoʻololi mākou i ka waiwai UUID, hiki ke ʻike ʻia ma ke aʻo ʻana i ka hopena o ke kauoha blkid ma Linux):

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

ʻO ka hope, hoʻololi mākou i nā ʻāpana boot kernel: hōʻike mākou i kahi wahi hou no ka ʻāpana kumu, hoʻopau i ka hoʻopuka o ka ʻike debugging a (ke koho ʻole) pāpā i ka kernel mai ka hāʻawi ʻana i nā helu IPv6 ma nā kikowaena pūnaewele:

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

Eia ka ʻike /mnt/cmdline.txt i kēia ʻano (hoʻokahi laina me ka ʻole o nā hyphens):

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

Hanaʻia:

# cd
# umount /mnt
# sync

Hoʻonohonoho hou mākou i ka microSD i loko o ka "raspberry", e hoʻokuʻu iā ia a loaʻa i ka ʻoihana pūnaewele ma o ssh (root/centos).

2. Hoʻonohonoho i ka CentOS

ʻO nā neʻe mua ʻekolu hiki ʻole: helena, yum -y hou, reboot.

Hāʻawi mākou i ka hoʻokele pūnaewele networkd:

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

E hana i faila (me nā papa kuhikuhi) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Hoʻomaka hou mākou i ka "raspberry" a loaʻa hou ka ʻike pūnaewele iā ia ma o ssh (hiki ke loli ka IP address). E nānā pono i ka mea i hoʻohana ʻia /etc/resolv.conf, i hana mua ʻia e Network Manager. No laila, inā pilikia ka hoʻoholo ʻana, e hoʻoponopono i kāna mau mea. Hoʻohana hoʻoholo ʻōnaehana ʻaʻole mākou e hana.

Wehe mākou i ka "pono ​​ʻole", hoʻoponopono a wikiwiki i ka hoʻouka ʻana o ka 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

ʻO wai ka mea e pono ai cron a ʻo wai hoʻi e ʻeli ʻole i ka mea i kūkulu ʻia systemd timers, hiki ke hoʻokumu i ka mea i nalowale. / var / log- a nānā i loko journalctl. Inā makemake ʻoe i ka mōʻaukala log (ma ka paʻamau, mālama ʻia ka ʻike mai ka manawa e hoʻomaka ai ka ʻōnaehana):

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

Hoʻopau i ka hoʻohana ʻana o IPv6 e nā lawelawe kumu (inā pono)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

He mea nui ka pili o ka manawa ma ka "raspberry". Ma waho o ka pahu ʻaʻohe mea hiki ke mālama i ke kūlana o kēia manawa o ka uaki ma hope o ka reboot, pono ka synchronization. He daemon maikaʻi a wikiwiki hoʻi no kēia māomoana - ua hoʻokomo a hoʻomaka aunoa. Hiki iā ʻoe ke hoʻololi i nā kikowaena NTP i nā mea kokoke loa.

/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

No ka hoʻonohonoho ʻana i ka palena manawa mākou e hoʻohana ai hoʻopunipuni. No ka mea ʻo kā mākou pahuhopu ka hana ʻana i kahi alalai Wi-Fi e hana ana ma nā alapine 5GHz, e hoʻomākaukau mākou no nā haʻalulu ma mua. mea hoʻoponopono:

# yum ʻike crda
Hōʻuluʻulu manaʻo: Daemon hoʻoponopono hoʻoponopono no 802.11 pūnaewele uea

ʻO kēia hoʻolālā ʻino, i hoʻokumu ʻia i ka palena manawa, "pāpā" i ka hoʻohana ʻana (ma Russia) o nā alapine 5GHz a me nā ala me nā helu "kiʻekiʻe". ʻO ka hoʻopunipuni ka hoʻonohonoho ʻana i kahi manawa me ka hoʻohana ʻole ʻana i nā inoa o nā ʻāina/kūlanakauhale, ʻo ia hoʻi, ma kahi o:

# timedatectl set-timezone Europe/Moscow

Kaomi mākou:

# timedatectl set-timezone Etc/GMT-3

A ʻo ka hopena hope loa i ka lauoho o ka ʻōnaehana:

# 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. Nā mea hoʻohui CentOS

ʻO nā mea a pau i ʻōlelo ʻia ma luna nei hiki ke noʻonoʻo ʻia i nā ʻōlelo aʻoaʻo piha no ka hoʻokomo ʻana i ka "vanilla" CentOS ma ka Raspberry Pi. Pono ʻoe e hoʻopau me kahi PC e (re) mau kāmaʻa ma lalo o 10 kekona, hoʻohana i ka liʻiliʻi ma mua o 15 Megabytes o RAM a me 1.5 Gigabytes o microSD (ʻoi aku ka liʻiliʻi ma mua o 1 Gigabyte ma muli o kahi ʻole / boot, akā e ʻoiaʻiʻo kākou).

No ka hoʻokomo ʻana i nā polokalamu komo Wi-Fi ma kēia ʻōnaehana, pono ʻoe e hoʻonui iki i nā hiki o ka hāʻawi CentOS maʻamau. ʻO ka mea mua, e hoʻomaikaʻi i ka mea hoʻokele (firmware) o ka mea hoʻopili Wi-Fi i kūkulu ʻia. Wahi a ka ʻaoʻao home o ka papahana:

Wifi ma ka Raspberry 3B a me 3B+

ʻAʻole ʻae ʻia nā faila firmware Raspberry PI 3B/3B+ e kahele ʻia e ka CentOS Project. Hiki iā ʻoe ke hoʻohana i nā ʻatikala aʻe e hoʻomaopopo i ka pilikia, e kiʻi i ka firmware a hoʻonohonoho i ka wifi.

ʻO ka mea i pāpā ʻia no ka papahana CentOS ʻaʻole i pāpā ʻia no mākou no ka hoʻohana pilikino. Hoʻololi mākou i ka hāʻawi ʻana i ka firmware Wi-Fi ma CentOS me ka mea e pili ana mai nā mea hoʻomohala Broadcom (ʻo kēlā mau blobs binary inaina ʻia ...). ʻO kēia, ʻo ia hoʻi, e ʻae iā ʻoe e hoʻohana i ka AC i ke ʻano wahi komo.

Hoʻonui ʻia ʻo Wi-Fi firmwareE ʻike i ke kumu hoʻohālike a me ka mana firmware o kēia manawa:

# 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 

ʻIke mākou ʻo ka mana firmware ʻo 7.45.18 ka lā 01.03.2015/XNUMX/XNUMX, a e hoʻomanaʻo i kēia mau helu helu: 43455 (brcmfmac43455-sdio.bin).

Hoʻoiho i ke kiʻi Raspbian o kēia manawa. Hiki i ka poʻe palaualelo ke kākau i ke kiʻi i microSD a lawe i nā faila me ka firmware mai laila. A i ʻole hiki iā ʻoe ke kau i ka ʻāpana kumu o ke kiʻi ma Linux a kope i kāu mea e pono ai mai laila:

# 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

Pono e kope ʻia nā faila firmware adapter Wi-Fi a hoʻololi ʻia me ka "raspberry" i loko o ka papa kuhikuhi /usr/lib/firmware/brcm/

Hoʻomaka hou mākou i ke alalai e hiki mai ana a ʻakaʻaka ʻoluʻolu:

# 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 

Manaʻo: 7.45.154 i ka lā 27.02.2018/XNUMX/XNUMX.

A ʻo 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. Hoʻonohonoho pūnaewele a me nā pilikia e hiki mai ana

E like me kā mākou i ʻae ai ma luna, ua hoʻopili ʻia ka "raspberry" e "wire" i ka pūnaewele kūloko. E noʻonoʻo e hāʻawi ka mea hāʻawi i ka ʻike pūnaewele ma ke ʻano like: ʻo ka helu ma ka pūnaewele lehulehu i hoʻopuka ikaika ʻia e ka server DHCP (malia paha me ka paʻa MAC). I kēia hihia, ma hope o ka hoʻonohonoho hope o ka raspberry, pono ʻoe e "plug" i ke kaula o ka mea hāʻawi i loko a ua pau ʻoe. Ka mana hoʻohana systemd-networkd - ke kumuhana o kahi ʻatikala ʻokoʻa a ʻaʻole kūkākūkā ʻia ma aneʻi.

ʻO ka (mau) interface Wi-Fi o Raspberry he pūnaewele kūloko, a ʻo ka mea hoʻopili Ethernet i kūkulu ʻia (eth0) ma waho. E helu kākou i ka ʻupena kūloko, no ka laʻana: 192.168.0.0/24. Helu helu huahelu: 192.168.0.1. E hana ana kahi kikowaena DHCP ma ka pūnaewele waho (Internet).

Pilikia Kūlike inoa и mea polokalamu polokalamu Guatemalan kaulana - ʻelua pilikia e kali ana i ka mea nāna e hoʻonohonoho i nā kikowaena pūnaewele a me nā lawelawe i ka hoʻohele systemd.

ʻO ka haunaele like ʻole (lyrical digression)Ua hōʻuluʻulu ʻo Lennart Pottering i kāna papahana ponoʻī 'ōnaehana Maikaʻi loa. ʻO kēia 'ōnaehana Hoʻomaka koke lākou i nā papahana ʻē aʻe, ʻaʻole loaʻa ka manawa e hoʻōla ai mai ka puhi ʻana o ka mea hoʻoponopono, e hina a hina i ka hoʻomaka ʻana me ka hoʻomaka ʻole i kā lākou ala keakea.

Akā ʻo ke koʻikoʻi, ʻo ka hoʻohālikelike ʻana o nā kaʻina hana i hoʻomaka i ka hoʻomaka ʻana o ka systemd OS he ʻano "alahaka hoki" no nā loea LSB sequential. ʻO ka mea pōmaikaʻi, ʻo ka hoʻonohonoho ʻana i kēia "chaos parallel" he mea maʻalahi, ʻoiai ʻaʻole maopopo.

Hana mākou i ʻelua mau alahaka virtual me nā inoa mau: Lan и wan. E "hoʻohui" mākou i ka (s) adapter Wi-Fi i ka mea mua, a me ka eth0 "raspberry" i ka lua.

/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=ʻae hoʻopau i ka pono e kuhikuhi i ka kernel ma o sysctl e hiki ai i ke ala ala.
MACAddress= E wehe a hoʻololi inā pono.

ʻO ka mua mākou "hoʻohui" eth0. Hoʻomanaʻo mākou i ka "pilikia uniformity" a hoʻohana wale i ka helu MAC o kēia interface, hiki ke ʻike ʻia, no ka laʻana, e like me kēia:

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

Hana mākou /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

Holoi mākou i ka faila hoʻonohonoho mua eth0, hoʻomaka hou i ka Raspberry a loaʻa i ka ʻoihana pūnaewele iā ia (e loli paha ka IP address):

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

5.DNSMASQ

No ka hana ʻana i nā wahi komo Wi-Fi, ʻaʻohe mea i ʻoi aku ka maikaʻi dnsmasq + ʻaihue ʻaʻole naʻe i ʻike. I koʻu manaʻo.

Inā poina kekahi, a laila...ʻaihue - ʻo ia ka mea e kaohi ai i nā mea hoʻololi Wi-Fi (ʻo ia hoʻi, e mālama ia i ka hoʻopili ʻana iā lākou i ka virtual. Lan "raspberries"), ʻae a hoʻopaʻa inoa i nā mea kūʻai uila.

dnsmasq - hoʻonohonoho i ka pūʻulu pūnaewele o nā mea kūʻai aku: hoʻopuka i nā helu IP, nā kikowaena DNS, ka ʻīpuka paʻamau a me nā leʻaleʻa like.

E hoʻomaka kākou me dnsmasq:

# yum install dnsmasq

Kāla /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

hoʻoponopono e like me kou makemake.

mea liʻiliʻi /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

Aia ka "magic" ma ka palena hoʻopaʻa-maikaʻi, e haʻi ana i ka daemon dnsmasq e kali a hiki i ka ʻike ʻia ʻana ma ka ʻōnaehana interface=lan, ʻaʻole hoʻi e maule i ka haʻaheo mehameha ma hope o ka hoʻomaka ʻana.

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

6. HOSTAPD

A ʻo ka hope loa, nā hoʻonohonoho hostapd magic. ʻAʻohe oʻu kanalua e heluhelu ana kekahi i kēia ʻatikala no ka ʻimi pololei ʻana i kēia mau laina waiwai.

Ma mua o ka hoʻokomo ʻana i ka hostapd, pono ʻoe e lanakila i ka "pilikia uniformity". Hiki i ka mea hoʻopili Wi-Fi wlan0 ke hoʻololi maʻalahi i kona inoa i wlan1 i ka wā e hoʻopili ai i nā lako Wi-Fi USB hou. No laila, e hoʻoponopono mākou i nā inoa interface ma ke ala aʻe: e hele mai mākou me nā inoa kūʻokoʻa no nā mea hoʻololi (wireless) a hoʻopaʻa iā lākou i nā helu MAC.

No ka mea hoʻopili Wi-Fi i kūkulu ʻia, ʻo ia ka wlan0:

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

Hana mākou /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

I kēia manawa e maopopo mākou i kēlā wl0 - Aia kēia i ka Wi-Fi i kūkulu ʻia. Hoʻomaka hou mākou i ka Raspberry e hōʻoia i kēia.

E hoʻouka:

# yum install hostapd wireless-tools

waihona hoʻonohonoho /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

Me ka poina ole no kekahi manawa Komite ulia pōpilikia mokuʻāina, hoʻololi i nā ʻāpana a mākou e pono ai a nānā lima no ka hana:

# hostapd /etc/hostapd/hostapd.conf

E hoʻomaka ka hostapd i ke ʻano pāʻani, e hoʻolaha ana i kona mokuʻāina i ka console. Inā ʻaʻohe hewa, a laila hiki i nā mea kūʻai aku ke kākoʻo i ke ʻano AC ke hoʻopili i ka wahi komo. E hooki i ka hostapd - Ctrl-C.

ʻO nā mea a pau i koe e hiki ai i ka hostapd i ka hoʻomaka ʻana o ka ʻōnaehana. Inā ʻoe e hana i ka mea maʻamau (systemctl enable hostapd), a laila ma hope o ka reboot aʻe hiki iā ʻoe ke kiʻi i kahi daimonio "'ōwili i ke koko" me ka maʻi "ʻaʻole i loaʻa ka interface wl0". Ma muli o ka "chaos parallel," hoʻomaka ʻo hostapd i ka wikiwiki ma mua o ka loaʻa ʻana o ka kernel i ka adapter uea.

Ua piha ka Internet i nā lāʻau lapaʻau: mai kahi manawa hoʻokae ma mua o ka hoʻomaka ʻana i ka daemon (he mau minuke), i kahi daemon ʻē aʻe e nānā i ke ʻano o ka interface a (re) hoʻomaka i ka hostpad. Hiki ke hoʻohana ʻia nā hoʻonā, akā ʻino loa. Kāhea mākou i ka mea nui no ke kōkua 'ōnaehana me kāna mau "pahuhopu" a me nā "hana" a me "nā hilinaʻi".

E kope i ka waihona lawelawe hoʻolaha i /etc/systemd/system/hostapd.service:

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

a e hoemi i kona mau mea i loko o keia ano.

[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

Aia ka mana o ka waihona lawelawe hou i ka hoʻopaʻa ʻana o ka hostapd i ka pahuhopu hou - ka wl0 interface. Ke ʻike ʻia ka interface, hoʻomaka ka daemon, a i ka wā e nalowale ai, kū ia. A pau kēia ma ka pūnaewele - me ka ʻole e hoʻomaka hou i ka ʻōnaehana. E hoʻohana pono kēia ʻenehana i ka hoʻopili ʻana i kahi adapter Wi-Fi USB i kahi Raspberry.

I kēia manawa hiki iā ʻoe:

# systemctl enable hostapd
# reboot

7. IPTABLES

“He aha???” © ʻAe, ʻae! ʻAʻohe 'ōnaehana. ʻAʻole hui pū hou (ma ke ʻano ke ahi), e hana ana i ka mea like.

E hoʻohana kākou i ka mea kahiko maikaʻi ipoku, nona nā lawelawe, ma hope o ka hoʻomaka ʻana, e hoʻouka i nā lula o ka pūnaewele i loko o ka kernel a pani mālie me ka ʻole o ka noho ʻana a me ka hoʻopau ʻole ʻana i nā kumuwaiwai. He nani ka systemd IPMasquerade=, akā e hāʻawi mau mākou i ka unuhi ʻōlelo (NAT) a me ka pā ahi i nā iptables.

E hoʻouka:

# yum install iptables-services
# systemctl enable iptables ip6tables

Makemake au e mālama i ka hoʻonohonoho iptables ma ke ʻano he palapala (laʻana):

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

Hoʻokō mākou i ka palapala i luna a nalowale ka hiki ke hoʻokumu i nā pilina SSH uea hou me ka Raspberry. ʻOiaʻiʻo, ua hana mākou i kahi alalai Wi-Fi, kahi i pāpā ʻia ai "ma o ka Pūnaewele" ma ka paʻamau - i kēia manawa "ma luna o ka lewa". Hoʻopili mākou i ke kaula Ethernet o ka mea hoʻolako a hoʻomaka i ka heʻenalu!

8. Pōmaikaʻi: +2,4GHz

I koʻu hōʻuluʻulu ʻana i ke alalai Raspberry mua e hoʻohana ana i ke kiʻi i hōʻike ʻia ma luna, ua ʻike au i kekahi mau hāmeʻa i loko o koʻu ʻohana, ma muli o kā lākou mau palena hoʻolālā Wi-Fi, ʻaʻole hiki ke ʻike i ka "raspberry". ʻO ka hoʻonohonoho hou ʻana i ke alalai e hana ma 802.11b/g/n ʻaʻole maikaʻi, ʻoiai ʻo ka wikiwiki kiʻekiʻe loa "ma luna o ka lewa" ma kēia hihia ʻaʻole i ʻoi aku ma mua o 40 Mbit, a hāʻawi kaʻu mea punaewele punahele iā 100 (ma ke kelepona).

ʻO ka ʻoiaʻiʻo, ua hoʻokumu ʻia kahi hoʻonā i ka pilikia: kahi lua Wi-Fi e hana ana ma ke alapine o 2,4 GHz, a me kahi wahi lua. Ma kahi hale kūʻai kokoke, ʻaʻole wau i kūʻai i ka mea mua, akā ʻo ka lua USB Wi-Fi "whistle" aʻu i ʻike ai. Ua hōʻeha ʻia ka mea kūʻai aku e nā nīnau e pili ana i ka chipset, ka launa pū me nā kernels ARM Linux a me ka hiki ke hana ma ke ʻano AP (ʻo ia ka mea mua i hoʻomaka).

Hoʻonohonoho mākou i ka "whistle" ma ka hoʻohālikelike me ka adapter Wi-Fi i kūkulu ʻia.

ʻO ka mua, e kapa hou i ka inoa 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

E hāʻawi mākou i ka hoʻokele o ka Wi-Fi hou i kahi daemon hostapd kaʻawale, e hoʻomaka a hoʻōki ma muli o ke ʻano o kahi "whistle" i wehewehe ʻia i ka ʻōnaehana: wl1.

waihona hoʻonohonoho /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]

Aia nā mea o kēia faila i ke kumu hoʻohālike o ka USB Wi-Fi adapter, no laila hiki ʻole iā ʻoe ke kope a hoʻopili.

E kope i ka waihona lawelawe hoʻolaha i /etc/systemd/system/hostapd2.service:

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

a e hoemi i kona mau mea i loko o keia ano.

[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

ʻO nā mea a pau i koe e hiki ai i kahi manawa hou o hostapd:

# systemctl enable hostapd2

ʻo ia wale nō! Huki i ka "whistle" a me ka "raspberry" pono'ī, e nānā i nā pūnaewele uila a puni ʻoe.

A ʻo ka hope, makemake wau e aʻo iā ʻoe e pili ana i ka maikaʻi o ka USB Wi-Fi adapter a me ka mana o ka Raspberry. Hiki i ka "whistle wela" i hoʻohui ʻia i kekahi manawa ke hoʻoulu i ka "raspberry freezing" ma muli o nā pilikia uila no ka wā pōkole.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka