Raspberry Pi + CentOS = Wi-Fi Hotspot (ืื• ื ืชื‘ ืคื˜ืœ ืขื ื›ื•ื‘ืข ืื“ื•ื)

ื™ืฉ ื›ืžื•ืช ืขืฆื•ืžื” ืฉืœ ืžื™ื“ืข ื‘ืื™ื ื˜ืจื ื˜ ืขืœ ื™ืฆื™ืจืช ื ืงื•ื“ื•ืช ื’ื™ืฉื” ืœ-Wi-Fi ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืžื—ืฉื‘ Raspberry ืขื ืœื•ื— ื™ื—ื™ื“. ื›ื›ืœืœ, ื–ื” ืื•ืžืจ ืœื”ืฉืชืžืฉ ื‘ืžืขืจื›ืช ื”ื”ืคืขืœื” Raspbian ืžืงื•ืจื™ืช ืฉืœ Raspberry.

ื‘ื”ื™ื•ืชื™ ื—ืกื™ื“ ืฉืœ ืžืขืจื›ื•ืช ืžื‘ื•ืกืกื•ืช RPM, ืœื ื™ื›ื•ืœืชื™ ืœืขื‘ื•ืจ ืœื™ื“ ื”ื ืก ื”ืงื˜ืŸ ื”ื–ื” ื•ืœื ืœื ืกื•ืช ืืช CentOS ื”ืื”ื•ื‘ื” ืฉืœื™ ืขืœื™ื•.

ื”ืžืืžืจ ืžืกืคืง ื”ื•ืจืื•ืช ืœื”ื›ื ืช ื ืชื‘ Wi-Fi 5GHz/AC ืž-Raspberry Pi 3 Model B+ ื”ืžื‘ื•ืกืก ืขืœ ืžืขืจื›ืช ื”ื”ืคืขืœื” CentOS. ื™ื”ื™ื• ื›ืžื” ื˜ืจื™ืงื™ื ืกื˜ื ื“ืจื˜ื™ื™ื ืืš ืžืขื˜ ืžื•ื›ืจื™ื, ื•ื›ื‘ื•ื ื•ืก - ืฆื™ื•ืจ ืœื—ื™ื‘ื•ืจ ืฆื™ื•ื“ Wi-Fi ื ื•ืกืฃ ืœืคื˜ืœ, ื”ืžืืคืฉืจ ืœื• ืœืคืขื•ืœ ื‘ื• ื–ืžื ื™ืช ื‘ืžืกืคืจ ืžืฆื‘ื™ื (2,4+5GHz).

Raspberry Pi + CentOS = Wi-Fi Hotspot (ืื• ื ืชื‘ ืคื˜ืœ ืขื ื›ื•ื‘ืข ืื“ื•ื)
(ืฉื™ืœื•ื‘ ืฉืœ ืชืžื•ื ื•ืช ื–ืžื™ื ื•ืช ื‘ืื•ืคืŸ ื—ื•ืคืฉื™)

ื”ื‘ื” ื ืฆื™ื™ืŸ ืžื™ื“ ืฉื›ืžื” ืžื”ื™ืจื•ื™ื•ืช ืงื•ืกืžื™ื•ืช ืœื ื™ืคืขืœื•. ืื ื™ ืกื•ื—ื˜ ืžืงืกื™ืžื•ื 100 Mbps ืžื”-Raspberry ืฉืœื™ ื‘ืื•ื•ื™ืจ, ื•ื–ื” ืžื›ืกื” ืืช ื”ืžื”ื™ืจื•ืช ืฉืœ ืกืคืง ื”ืื™ื ื˜ืจื ื˜ ืฉืœื™. ืœืžื” ืืชื” ืฆืจื™ืš AC ื›ืœ ื›ืš ืื™ื˜ื™, ืื ื‘ืชื™ืื•ืจื™ื” ืืชื” ื™ื›ื•ืœ ืœื”ืฉื™ื’ ื—ืฆื™ ื’ื™ื’ื” ืืคื™ืœื• ืขืœ N? ืื ืฉืืœืชื ืืช ืขืฆืžื›ื ืืช ื”ืฉืืœื” ื”ื–ื•, ืœื›ื• ืœื—ื ื•ืช ื›ื“ื™ ืœืงื ื•ืช ื ืชื‘ ืืžื™ืชื™ ืขื ืฉืžื•ื ื” ืื ื˜ื ื•ืช ื—ื™ืฆื•ื ื™ื•ืช.

0. ืžื” ืชืฆื˜ืจืš

  • ืœืžืขืฉื”, "ืžื•ืฆืจ ื”ืคื˜ืœ" ืขืฆืžื• ื”ื•ื ื‘ืงืœื™ื‘ืจ: Pi 3 Model B+ (ื›ื“ื™ ืœื”ืฉื™ื’ ืืช ื”ืžื”ื™ืจื•ื™ื•ืช ื•ื”ืขืจื•ืฆื™ื ื”ื ื—ืฉืงื™ื ืฉืœ 5GHz);
  • microSD ื˜ื•ื‘ >= 4GB;
  • ืชื—ื ืช ืขื‘ื•ื“ื” ืขื ืœื™ื ื•ืงืก ื•ืงื•ืจื/ื›ื•ืชื‘ microSD;
  • ื–ืžื™ื ื•ืช ืฉืœ ืžื™ื•ืžื ื•ื™ื•ืช ืžืกืคื™ืงื•ืช ื‘ืœื™ื ื•ืงืก, ื”ืžืืžืจ ืžื™ื•ืขื“ ืœื—ื ื•ืŸ ืžืื•ืžืŸ;
  • ืงื™ืฉื•ืจื™ื•ืช ืจืฉืช ืงื•ื•ื™ืช (eth0) ื‘ื™ืŸ Raspberry ื•-Linux, ื”ืคืขืœืช ืฉืจืช DHCP ื‘ืจืฉืช ื”ืžืงื•ืžื™ืช ื•ื’ื™ืฉื” ืœืื™ื ื˜ืจื ื˜ ืžืฉื ื™ ื”ืžื›ืฉื™ืจื™ื.

ื”ืขืจื” ืงื˜ื ื” ืขืœ ื”ื ืงื•ื“ื” ื”ืื—ืจื•ื ื”. "ืžื” ื”ื’ื™ืข ืงื•ื“ื, ื”ื‘ื™ืฆื” ืื•..." ืื™ืš ืœืขืฉื•ืช ื ืชื‘ Wi-Fi ื‘ื”ื™ืขื“ืจ ืฆื™ื•ื“ ื’ื™ืฉื” ืœืื™ื ื˜ืจื ื˜? ื ืฉืื™ืจ ืืช ื”ืชืจื’ื™ืœ ื”ืžืฉืขืฉืข ื”ื–ื” ืžื—ื•ืฅ ืœืชื—ื•ื ื”ืžืืžืจ ื•ืคืฉื•ื˜ ื ื ื™ื— ืฉื”-Raspberry ืžื—ื•ื‘ืจ ืœืจืฉืช ื”ืžืงื•ืžื™ืช ื‘ืืžืฆืขื•ืช ื—ื•ื˜ ื•ื™ืฉ ืœื• ื’ื™ืฉื” ืœืื™ื ื˜ืจื ื˜. ื‘ืžืงืจื” ื–ื”, ืœื ื ืฆื˜ืจืš ื˜ืœื•ื•ื™ื–ื™ื” ื ื•ืกืคืช ื•ืžื ื™ืคื•ืœื˜ื•ืจ ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ื”"ืคื˜ืœ".

1. ื”ืชืงืŸ ืืช CentOS

ืขืžื•ื“ ื”ื‘ื™ืช ืฉืœ ื”ืคืจื•ื™ืงื˜

ื‘ื–ืžืŸ ื›ืชื™ื‘ืช ืžืืžืจ ื–ื”, ื”ื’ืจืกื” ื”ืจืฆื” ืฉืœ CentOS ื‘ืžื›ืฉื™ืจ ื”ื™ื 32 ืกื™ื‘ื™ื•ืช. ืื™ืคืฉื”ื• ื‘ืื™ื ื˜ืจื ื˜ ื ืชืงืœืชื™ ื‘ื“ืขื•ืช ืœืคื™ื”ืŸ ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ืžืขืจื›ื•ืช ื”ืคืขืœื” ื›ืืœื” ื‘ืืจื›ื™ื˜ืงื˜ื•ืจืช ARM ืฉืœ 64 ืกื™ื‘ื™ื•ืช ืžื•ืคื—ืชื™ื ื‘-20%. ืื ื™ ืืฉืื™ืจ ืืช ื”ืจื’ืข ื”ื–ื” ืœืœื ืชื’ื•ื‘ื”.

ื‘ืœื™ื ื•ืงืก, ื”ื•ืจื“ ืืช ื”ืชืžื•ื ื” ื”ืžื™ื ื™ืžืœื™ืช ืขื ื”ืงืจื ืœ "-ืคืื™ ืคื˜ืœ-"ื•ื›ืชื•ื‘ ืืช ื–ื” ืœ-microSD:

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

ืœืคื ื™ ืฉืžืชื—ื™ืœื™ื ืœื”ืฉืชืžืฉ ื‘ืชืžื•ื ื”, ื ืกื™ืจ ืžืžื ื” ืืช ืžื—ื™ืฆืช ื”-SWAP, ื ืจื—ื™ื‘ ืืช ื”ืฉื•ืจืฉ ืœื›ืœ ื”ื ืคื— ื”ื–ืžื™ืŸ ื•ื ืคื˜ืจ ืž-SELinux. ื”ืืœื’ื•ืจื™ืชื ืคืฉื•ื˜: ืฆื•ืจ ืขื•ืชืง ืฉืœ ื”ืฉื•ืจืฉ ื‘ืœื™ื ื•ืงืก, ืžื—ืง ืืช ื›ืœ ื”ืžื—ื™ืฆื•ืช ืžื”-microSD ืžืœื‘ื“ ื”ืจืืฉื•ื ื” (/boot), ืฆื•ืจ ืฉื•ืจืฉ ื—ื“ืฉ ื•ื”ื—ื–ืจ ืืช ืชื•ื›ื ื• ืžื”ืขื•ืชืง.

ื“ื•ื’ืžื” ืœืคืขื•ืœื•ืช ื ื“ืจืฉื•ืช (ืคืœื˜ ืžืกื•ืฃ ื—ืžื•ืจ)

# 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

ืœืื—ืจ ืคืจื™ืงืช ื”ืชื•ื›ืŸ ืฉืœ ืžื—ื™ืฆืช ื”ืฉื•ืจืฉ, ื”ื’ื™ืข ื”ื–ืžืŸ ืœื‘ืฆืข ื‘ื” ื›ืžื” ืฉื™ื ื•ื™ื™ื.

ื”ืฉื‘ืช ืืช SELinux ื‘ /mnt/etc/selinux/config:

SELINUX=disabled

ืขึฒืจึดื™ื›ึธื” /mnt/etc/fstab, ืžืฉืื™ืจื™ื ื‘ื• ืจืง ืฉื ื™ ืขืจื›ื™ื ืขืœ ื”ืžื—ื™ืฆื•ืช: ืืชื—ื•ืœ (/boot, ืœืœื ืฉื™ื ื•ื™ื™ื) ื•-root (ืื ื• ืžืฉื ื™ื ืืช ืขืจืš UUID, ืื•ืชื• ื ื™ืชืŸ ืœื’ืœื•ืช ืขืœ ื™ื“ื™ ืœื™ืžื•ื“ ื”ืคืœื˜ ืฉืœ ื”ืคืงื•ื“ื” blkid ื‘ืœื™ื ื•ืงืก):

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

ืœื‘ืกื•ืฃ, ืื ื• ืžืฉื ื™ื ืืช ืคืจืžื˜ืจื™ ื”ืืชื—ื•ืœ ืฉืœ ื”ืœื™ื‘ื”: ืื ื• ืžืฆื™ื™ื ื™ื ืžื™ืงื•ื ื—ื“ืฉ ืขื‘ื•ืจ ืžื—ื™ืฆืช ื”ืฉื•ืจืฉ, ืžืฉื‘ื™ืชื™ื ืืช ื”ืคืœื˜ ืฉืœ ืžื™ื“ืข ืื™ืชื•ืจ ื‘ืื’ื™ื ื•(ืื•ืคืฆื™ื•ื ืœื™) ืื•ืกืจื™ื ืขืœ ื”ืœื™ื‘ื” ืœื”ืงืฆื•ืช ื›ืชื•ื‘ื•ืช IPv6 ื‘ืžืžืฉืงื™ ืจืฉืช:

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

ื”ื ื” ื”ืชื•ื›ืŸ /mnt/cmdline.txt ืœืฆื•ืจื” ื”ื‘ืื” (ืฉื•ืจื” ืื—ืช ืœืœื ืžืงืคื™ื):

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

ื‘ื•ืฆืข:

# cd
# umount /mnt
# sync

ืื ื• ืžืกื“ืจื™ื ืžื—ื“ืฉ ืืช ื”-microSD ืœ"ืคื˜ืœ", ืžืคืขื™ืœื™ื ืื•ืชื• ื•ืžืงื‘ืœื™ื ืืœื™ื• ื’ื™ืฉื” ืœืจืฉืช ื‘ืืžืฆืขื•ืช ssh (root/centos).

2. ื”ื’ื“ืจืช CentOS

ืฉืœื•ืฉ ื”ืชื ื•ืขื•ืช ื”ืจืืฉื•ื ื•ืช ื”ื‘ืœืชื™ ืžืขื•ืจืขืจื•ืช: ืคืกื—, yum-i ืขื“ื›ื•ืŸ, ืืชื—ื•ืœ ืžื—ื“ืฉ.

ืื ื—ื ื• ืžื—ืœืงื™ื ืืช ื ื™ื”ื•ืœ ื”ืจืฉืช ื‘ืจืฉืช:

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

ืฆื•ืจ ืงื•ื‘ืฅ (ื™ื—ื“ ืขื ืกืคืจื™ื•ืช) /etc/systemd/network/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4

ืื ื• ืžืืชื—ืœื™ื ืืช ื”"ืคื˜ืœ" ื•ืฉื•ื‘ ืžืงื‘ืœื™ื ื’ื™ืฉื” ืœืจืฉืช ืืœื™ื• ื‘ืืžืฆืขื•ืช ssh (ื™ื™ืชื›ืŸ ืฉื›ืชื•ื‘ืช ื”-IP ืชืฉืชื ื”). ืฉื™ืžื• ืœื‘ ื‘ืžื” ืžืฉืชืžืฉื™ื / Etc / resolv.conf, ืฉื ื•ืฆืจ ืงื•ื“ื ืœื›ืŸ ืขืœ ื™ื“ื™ ืžื ื”ืœ ื”ืจืฉืช. ืœื›ืŸ, ื‘ืžืงืจื” ืฉืœ ื‘ืขื™ื•ืช ื‘ืคืชืจื•ืŸ, ืขืจื•ืš ืืช ืชื•ื›ื ื•. ืœื”ืฉืชืžืฉ ื ืคืชืจื” ืขืœ ื™ื“ื™ ื”ืžืขืจื›ืช ืื ื—ื ื• ืœื.

ืื ื• ืžืกื™ืจื™ื ืืช ื”"ืžื™ื•ืชืจ", ืžืชืงื ื™ื ื•ืžืื™ืฆื™ื ืืช ื”ื˜ืขื™ื ื” ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื”:

# 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

ืžื™ ืฆืจื™ืš cron ื•ืžื™ ืฉืื™ื ื• ืžืขื›ืœ ืืช ื”ืžื•ื‘ื ื” ื˜ื™ื™ืžืจื™ื systemd, ื™ื›ื•ืœ ืœืงื‘ื•ืข ืžื” ื—ืกืจ. / var / log- ื•ืชืกืชื›ืœ ื“ืจืš journalctl. ืื ืืชื” ืฆืจื™ืš ื”ื™ืกื˜ื•ืจื™ื™ืช ื™ื•ืžืŸ (ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื”ืžื™ื“ืข ื ืฉืžืจ ืจืง ืžืจื’ืข ื”ืคืขืœืช ื”ืžืขืจื›ืช):

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

ื”ืฉื‘ืช ืืช ื”ืฉื™ืžื•ืฉ ื‘-IPv6 ืขืœ ื™ื“ื™ ืฉื™ืจื•ืชื™ื ื‘ืกื™ืกื™ื™ื (ืื ื ื“ืจืฉ)/ etc / ssh / sshd_config:

AddressFamily inet

/etc/sysconfig/chronyd:

OPTIONS="-4"

ื”ืจืœื•ื•ื ื˜ื™ื•ืช ืฉืœ ื”ื–ืžืŸ ืขืœ ื”"ืคื˜ืœ" ื”ื™ื ื“ื‘ืจ ื—ืฉื•ื‘. ืžื›ื™ื•ื•ืŸ ืฉืžื—ื•ืฅ ืœืงื•ืคืกื” ืื™ืŸ ื™ื›ื•ืœืช ื—ื•ืžืจื” ืœืฉืžื•ืจ ืืช ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ืฉืœ ื”ืฉืขื•ืŸ ืขื ืืชื—ื•ืœ ืžื—ื“ืฉ, ื™ืฉ ืฆื•ืจืš ื‘ืกื ื›ืจื•ืŸ. ื“ืžื•ืŸ ื˜ื•ื‘ ื•ืžื”ื™ืจ ืžืื•ื“ ื‘ืฉื‘ื™ืœ ื–ื” ื›ืจื•ื ื™ื” - ื›ื‘ืจ ืžื•ืชืงืŸ ื•ืžืชื—ื™ืœ ืื•ื˜ื•ืžื˜ื™ืช. ืืชื” ื™ื›ื•ืœ ืœืฉื ื•ืช ืฉืจืชื™ NTP ืœืฉืจืชื™ ื”ืงืจื•ื‘ื™ื ื‘ื™ื•ืชืจ.

/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

ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ืื–ื•ืจ ื”ื–ืžืŸ ื‘ื• ื ืฉืชืžืฉ ื˜ืจื™ืง. ืžื›ื™ื•ื•ืŸ ืฉื”ืžื˜ืจื” ืฉืœื ื• ื”ื™ื ืœื™ืฆื•ืจ ื ืชื‘ Wi-Fi ื”ืคื•ืขืœ ื‘ืชื“ืจื™ื ืฉืœ 5GHz, ื ืชื›ื•ื ืŸ ืœื”ืคืชืขื•ืช ืžืจืืฉ ืจื’ื•ืœื˜ื•ืจ:

# ื™ืื ืžื™ื“ืข crda
ืชืงืฆื™ืจ: ื“ืžื•ืŸ ืชืื™ืžื•ืช ืœืชืงื ื•ืช ืขื‘ื•ืจ ืจืฉืช ืืœื—ื•ื˜ื™ืช 802.11

ื”ืขื™ืฆื•ื‘ ื”ืžืจื•ืฉืข ื”ื–ื”, ื”ืžื‘ื•ืกืก ื’ื ื”ื•ื ืขืœ ืื–ื•ืจ ื”ื–ืžืŸ, "ืื•ืกืจ" ืขืœ ืฉื™ืžื•ืฉ (ื‘ืจื•ืกื™ื”) ื‘ืชื“ืจื™ื 5GHz ื•ืขืจื•ืฆื™ื ืขื ืžืกืคืจื™ื "ื’ื‘ื•ื”ื™ื". ื”ื—ื•ื›ืžื” ื”ื™ื ืœื”ื’ื“ื™ืจ ืื–ื•ืจ ื–ืžืŸ ืžื‘ืœื™ ืœื”ืฉืชืžืฉ ื‘ืฉืžื•ืช ืฉืœ ื™ื‘ืฉื•ืช/ืขืจื™ื, ื›ืœื•ืžืจ ื‘ืžืงื•ื:

# timedatectl set-timezone Europe/Moscow

ืื ื• ืœื•ื—ืฆื™ื:

# timedatectl set-timezone Etc/GMT-3

ื•ื”ื˜ืืฅ' ื”ืื—ืจื•ืŸ ืœืชืกืจื•ืงืช ื”ืžืขืจื›ืช:

# 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

ื›ืœ ืžื” ืฉื ืืžืจ ืœืขื™ืœ ื™ื›ื•ืœ ืœื”ื™ื—ืฉื‘ ืœื”ื•ืจืื•ืช ืžืœืื•ืช ืœื”ืชืงื ืช "ื•ื ื™ืœ" CentOS ืขืœ Raspberry Pi. ืืชื” ืืžื•ืจ ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืœืงื‘ืœ ืžื—ืฉื‘ (ืžื—ื“ืฉ) ืฉืžืืชื—ืœ ืชื•ืš ืคื—ื•ืช ืž-10 ืฉื ื™ื•ืช, ืžืฉืชืžืฉ ื‘ืคื—ื•ืช ืž-15 ืžื’ื”-ื‘ื™ื™ื˜ ืฉืœ ื–ื™ื›ืจื•ืŸ RAM ื•-1.5 ื’'ื™ื’ื”-ื‘ื™ื™ื˜ ืฉืœ microSD (ืœืžืขืฉื” ืคื—ื•ืช ืž-1 ื’'ื™ื’ื”-ื‘ื™ื™ื˜ ื‘ื’ืœืœ ืืชื—ื•ืœ /ืืชื—ื•ืœ ืœื ืฉืœื, ืื‘ืœ ื‘ื•ืื• ื ื”ื™ื” ื›ื ื™ื).

ื›ื“ื™ ืœื”ืชืงื™ืŸ ืชื•ื›ื ืช ื ืงื•ื“ืช ื’ื™ืฉื” Wi-Fi ื‘ืžืขืจื›ืช ื–ื•, ืชืฆื˜ืจืš ืœื”ืจื—ื™ื‘ ืžืขื˜ ืืช ื”ื™ื›ื•ืœื•ืช ืฉืœ ื”ืคืฆืช CentOS ื”ืกื˜ื ื“ืจื˜ื™ืช. ืงื•ื“ื ื›ืœ, ื‘ื•ืื• ื ืฉื“ืจื’ ืืช ืžื ื”ืœ ื”ื”ืชืงืŸ (ืงื•ืฉื—ื”) ืฉืœ ืžืชืื ื”-Wi-Fi ื”ืžื•ื‘ื ื”. ื‘ื“ืฃ ื”ื‘ื™ืช ืฉืœ ื”ืคืจื•ื™ืงื˜ ื›ืชื•ื‘:

Wifi ื‘-Raspberry 3B ื•-3B+

ืงื•ื‘ืฆื™ ื”ืงื•ืฉื—ื” Raspberry PI 3B/3B+ ืื™ื ื ืžื•ืจืฉื™ื ืœื”ื™ื•ืช ืžื•ืคืฆื™ื ืขืœ ื™ื“ื™ CentOS Project. ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืžืืžืจื™ื ื”ื‘ืื™ื ื›ื“ื™ ืœื”ื‘ื™ืŸ ืืช ื”ื‘ืขื™ื”, ืœืงื‘ืœ ืืช ื”ืงื•ืฉื—ื” ื•ืœื”ื’ื“ื™ืจ ืืช ื”-wifi.

ืžื” ืฉืืกื•ืจ ืœืคืจื•ื™ืงื˜ CentOS ืื™ื ื• ืืกื•ืจ ืœื ื• ืœืฉื™ืžื•ืฉ ืื™ืฉื™. ืื ื• ืžื—ืœื™ืคื™ื ืืช ืงื•ืฉื—ืช ื”-Wi-Fi ื”ื”ืคืฆื” ื‘-CentOS ื‘ื–ื• ื”ืžืงื‘ื™ืœื” ืžืžืคืชื—ื™ ื‘ืจื•ื“ืงื•ื (ืื•ืชื ื›ืชืžื™ื ื‘ื™ื ืืจื™ื™ื ืฉื ื•ืื™ื...). ื–ื”, ื‘ืžื™ื•ื—ื“, ื™ืืคืฉืจ ืœืš ืœื”ืฉืชืžืฉ ื‘-AC ื‘ืžืฆื‘ ื ืงื•ื“ืช ื’ื™ืฉื”.

ืฉื“ืจื•ื’ ืงื•ืฉื—ื” ืฉืœ Wi-Fiื’ืœื” ืืช ื“ื’ื ื”ืžื›ืฉื™ืจ ื•ื’ืจืกืช ื”ืงื•ืฉื—ื” ื”ื ื•ื›ื—ื™ืช:

# 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 

ืื ื• ืจื•ืื™ื ืฉื’ืจืกืช ื”ืงื•ืฉื—ื” ื”ื™ื 7.45.18 ืžืชืืจื™ืš 01.03.2015/XNUMX/XNUMX, ื•ื–ื•ื›ืจื™ื ืืช ืงื‘ื•ืฆืช ื”ืžืกืคืจื™ื ื”ื‘ืื”: 43455 (brcmfmac43455-sdio.bin).

ื”ื•ืจื“ ืืช ืชืžื•ื ืช ื”ืจืกืคื‘ื™ืืŸ ื”ื ื•ื›ื—ื™ืช. ืขืฆืœื ื™ื ื™ื›ื•ืœื™ื ืœื›ืชื•ื‘ ืืช ื”ืชืžื•ื ื” ืœ-microSD ื•ืœืงื—ืช ืžืฉื ืืช ื”ืงื‘ืฆื™ื ืขื ื”ืงื•ืฉื—ื”. ืื• ืฉืืชื” ื™ื›ื•ืœ ืœื”ืขืœื•ืช ืืช ืžื—ื™ืฆืช ื”ืฉื•ืจืฉ ืฉืœ ื”ืชืžื•ื ื” ื‘ืœื™ื ื•ืงืก ื•ืœื”ืขืชื™ืง ืืช ืžื” ืฉืืชื” ืฆืจื™ืš ืžืฉื:

# 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

ื™ืฉ ืœื”ืขืชื™ืง ืืช ืงื•ื‘ืฆื™ ื”ืงื•ืฉื—ื” ืฉืœ ืžืชืื ื”-Wi-Fi ื•ืœื”ื—ืœื™ืฃ ืื•ืชื ื‘"ืคื˜ืœ" ืœืกืคืจื™ื™ื” /usr/lib/firmware/brcm/

ืื ื• ืžืืชื—ืœื™ื ืืช ื”ื ืชื‘ ื”ืขืชื™ื“ื™ ื•ืžื—ื™ื™ื›ื™ื ื‘ืกื™ืคื•ืง:

# 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 

ื’ืจืกื”: 7.45.154 ืžื™ื•ื 27.02.2018/XNUMX/XNUMX.

ื•ื›ืžื•ื‘ืŸ 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. ืชืฆื•ืจืช ืจืฉืช ื•ืืชื’ืจื™ื ืœืคื ื™ื ื•

ื›ืคื™ ืฉื”ืกื›ืžื ื• ืœืขื™ืœ, ื”"ืคื˜ืœ" ืžื—ื•ื‘ืจ ื‘ืืžืฆืขื•ืช "ื—ื•ื˜" ืœืจืฉืช ื”ืžืงื•ืžื™ืช. ื ื ื™ื— ืฉื”ืกืคืง ืžืกืคืง ื’ื™ืฉื” ืœืื™ื ื˜ืจื ื˜ ื‘ื“ื™ื•ืง ื‘ืื•ืชื• ืื•ืคืŸ: ื”ื›ืชื•ื‘ืช ื‘ืจืฉืช ื”ืฆื™ื‘ื•ืจื™ืช ืžื•ื ืคืงืช ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ืขืœ ื™ื“ื™ ืฉืจืช ื”-DHCP (ืื•ืœื™ ืขื ื›ืจื™ื›ืช MAC). ื‘ืžืงืจื” ื–ื”, ืœืื—ืจ ื”ื”ื’ื“ืจื” ื”ืกื•ืคื™ืช ืฉืœ ื”ืคื˜ืœ, ืืชื” ืจืง ืฆืจื™ืš "ืœื—ื‘ืจ" ืืช ื”ื›ื‘ืœ ืฉืœ ื”ืกืคืง ืืœื™ื• ื•ืกื™ื™ืžืช. ื”ืจืฉืื” ื‘ืืžืฆืขื•ืช systemd-networkd - ื”ื ื•ืฉื ืฉืœ ืžืืžืจ ื ืคืจื“ ื•ืื™ื ื• ื ื“ื•ืŸ ื›ืืŸ.

ืžืžืฉืง ื”-Wi-Fi ืฉืœ Raspberry ื”ื•ื ืจืฉืช ืžืงื•ืžื™ืช, ื•ืžืชืื ื”-Ethernet ื”ืžื•ื‘ื ื” (eth0) ื”ื•ื ื—ื™ืฆื•ื ื™. ื‘ื•ืื• ื ืกืคืจ ืืช ื”ืจืฉืช ื”ืžืงื•ืžื™ืช ื‘ืื•ืคืŸ ืกื˜ื˜ื™, ืœื“ื•ื’ืžื”: 192.168.0.0/24. ื›ืชื•ื‘ืช ืคื˜ืœ: 192.168.0.1. ืฉืจืช DHCP ื™ืคืขืœ ื‘ืจืฉืช ื”ื—ื™ืฆื•ื ื™ืช (ืื™ื ื˜ืจื ื˜).

ื‘ืขื™ื™ืช ืขืงื‘ื™ื•ืช ื‘ืฉืžื•ืช ะธ ืžืชื›ื ืช ื’ื•ืื˜ืžืœื” ืžืคื•ืจืกื - ืฉืชื™ ืฆืจื•ืช ืฉืžื—ื›ื•ืช ืœื›ืœ ืžื™ ืฉืžื’ื“ื™ืจ ืžืžืฉืงื™ ืจืฉืช ื•ืฉื™ืจื•ืชื™ื ื‘ื”ืคืฆื•ืช ืžืขืจื›ืชื™ื•ืช.

ื›ืื•ืก ืžืงื‘ื™ืœ (ืกื˜ื™ื™ื” ืœื™ืจื™ืช)ืœื ืืจื˜ ืคื•ื˜ืจื™ื ื’ ื”ืจื›ื™ื‘ ืชื•ื›ื ื™ืช ืžืฉืœื• system ื˜ื•ื‘ ืžืื•ื“. ื–ึถื” system ืžืฉื™ืงื” ืชื•ื›ื ื™ื•ืช ืื—ืจื•ืช ื›ืœ ื›ืš ืžื”ืจ, ืขื“ ืฉื”ืŸ, ื‘ืœื™ ืœื”ืกืคื™ืง ืœื”ืชืื•ืฉืฉ ืžืžื›ืช ื”ืฉืจื™ืงื” ืฉืœ ื”ืฉื•ืคื˜, ืžื•ืขื“ื•ืช ื•ื ื•ืคืœื•ืช ื‘ื”ืชื—ืœื” ืžื‘ืœื™ ืืคื™ืœื• ืœื”ืชื—ื™ืœ ืืช ืžืกืœื•ืœ ื”ืžื›ืฉื•ืœื™ื ืฉืœื”ืŸ.

ืื‘ืœ ื‘ืจืฆื™ื ื•ืช, ื”ื”ืงื‘ืœื” ื”ืื’ืจืกื™ื‘ื™ืช ืฉืœ ืชื”ืœื™ื›ื™ื ืฉื”ื•ืฉืงื• ื‘ืชื—ื™ืœืช ืžืขืจื›ืช ื”ื”ืคืขืœื” systemd ื”ื™ื ืกื•ื’ ืฉืœ "ื’ืฉืจ ื—ืžื•ืจ" ืขื‘ื•ืจ ืžื•ืžื—ื™ LSB ืจืฆื™ืคื™ื ื•ืชื™ืงื™ื. ืœืžืจื‘ื” ื”ืžื–ืœ, ื”ืฉื’ืช ืกื“ืจ ื‘"ื›ืื•ืก ื”ืžืงื‘ื™ืœ" ื”ื–ื” ืžืชื‘ืจืจ ื›ืคืฉื•ื˜ื”, ืื ื›ื™ ืœื ืชืžื™ื“ ื‘ืจื•ืจื”.

ืื ื• ื™ื•ืฆืจื™ื ืฉื ื™ ืžืžืฉืงื™ ื’ืฉืจ ื•ื™ืจื˜ื•ืืœื™ื™ื ืขื ืฉืžื•ืช ืงื‘ื•ืขื™ื: lan ะธ ื—ึดื•ึตืจ. "ื ื—ื‘ืจ" ืืช ืžืชืื ื”-Wi-Fi ืœืจืืฉื•ืŸ, ื•ืืช ื”-eth0 "ืคื˜ืœ" ืœืฉื ื™.

/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=ื›ืŸ ืžื‘ื˜ืœ ืืช ื”ืฆื•ืจืš ืœืจืžื– ืœืงืจื ืœ ื‘ืืžืฆืขื•ืช sysctl ื›ื“ื™ ืœืืคืฉืจ ื ื™ืชื•ื‘.
ื›ืชื•ื‘ืช MACA= ื‘ื•ืื• ื ื‘ื˜ืœ ืืช ื”ื”ืขืจื•ืช ื•ื ืฉื ื” ื‘ืžื™ื“ืช ื”ืฆื•ืจืš.

ืจืืฉื™ืช ืื ื• "ืžื—ื‘ืจื™ื" ืืช eth0. ืื ื• ื–ื•ื›ืจื™ื ืืช "ื‘ืขื™ื™ืช ื”ืื—ื™ื“ื•ืช" ื•ืžืฉืชืžืฉื™ื ืจืง ื‘ื›ืชื•ื‘ืช ื”-MAC ืฉืœ ืžืžืฉืง ื–ื”, ืฉื ื™ืชืŸ ืœื’ืœื•ืช, ืœืžืฉืœ, ื›ืš:

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

ืื ื—ื ื• ื™ื•ืฆืจื™ื /etc/systemd/network/eth.network:

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

[Network]
Bridge=wan

ืื ื• ืžื•ื—ืงื™ื ืืช ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ื”ืงื•ื“ื eth0, ืžืืชื—ืœื™ื ืืช ื”ืคื˜ืœ ื•ืžืงื‘ืœื™ื ืืœื™ื• ื’ื™ืฉื” ืœืจืฉืช (ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื›ืชื•ื‘ืช ื”-IP ืชืฉืชื ื”):

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

5.DNSMASQ

ืœื”ื›ื ืช ื ืงื•ื“ื•ืช ื’ื™ืฉื” ืœ-Wi-Fi, ืฉื•ื ื“ื‘ืจ ืœื ืžื ืฆื— ื–ื•ื’ ืžืชื•ืง ืฉืœ ื“ื ืกืžืกืง + hostapd ืขื“ื™ื™ืŸ ืœื ื”ื‘ื™ื ื• ืืช ื–ื”. ืœื“ืขืชื™.

ืื ืžื™ืฉื”ื• ืฉื›ื— ืื–...hostapd - ื–ื” ื”ื“ื‘ืจ ืฉืฉื•ืœื˜ ื‘ืžืชืืžื™ Wi-Fi (ื‘ืคืจื˜, ื”ื•ื ื™ื“ืื’ ืœื—ื‘ืจ ืื•ืชื ืœื•ื•ื™ืจื˜ื•ืืœื™ lan "ืคื˜ืœ"), ืžืืฉืจ ื•ืจื•ืฉื ืœืงื•ื—ื•ืช ืืœื—ื•ื˜ื™ื™ื.

ื“ื ืกืžืกืง - ืžื’ื“ื™ืจ ืืช ืขืจื™ืžืช ื”ืจืฉืช ืฉืœ ืœืงื•ื—ื•ืช: ืžื ืคื™ืง ื›ืชื•ื‘ื•ืช IP, ืฉืจืชื™ DNS, ืฉืขืจ ื‘ืจื™ืจืช ืžื—ื“ืœ ื•ืชืขื ื•ื’ื•ืช ื“ื•ืžื™ื.

ื ืชื—ื™ืœ ืขื dnsmasq:

# yum install dnsmasq

ืชื‘ื ื™ืช / Etc / resolv.conf:

nameserver 1.1.1.1
nameserver 1.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 77.88.8.8
nameserver 77.88.8.1
domain router.local
search router.local

ืœืขืจื•ืš ืื•ืชื• ืœืคื™ ื˜ืขืžื›ื.

ืžื™ื ื™ืžืœื™ืกื˜ื™ /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

ื”"ืงืกื" ื›ืืŸ ื˜ืžื•ืŸ ื‘ืคืจืžื˜ืจ bind-dynamic, ืฉืื•ืžืจ ืœื“ืžื•ืŸ dnsmasq ืœื—ื›ื•ืช ืขื“ ืฉื”ื•ื ื™ื•ืคื™ืข ื‘ืžืขืจื›ืช interface=lan, ื•ืœื ืœื”ืชืขืœืฃ ืžื”ืชืงืฃ ืฉืœ ื‘ื“ื™ื“ื•ืช ื’ืื” ืœืื—ืจ ื”ื”ืชื—ืœื”.

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

6. HOSTAPD

ื•ืœื‘ืกื•ืฃ, ืชืฆื•ืจื•ืช ื”ืงืกื ืฉืœ hostapd. ืื™ืŸ ืœื™ ืกืคืง ืฉืžื™ืฉื”ื• ืงื•ืจื ืืช ื”ืžืืžืจ ื”ื–ื” ื‘ื—ื™ืคื•ืฉ ืื—ืจ ื”ืงื•ื•ื™ื ื”ื™ืงืจื™ื ื”ืืœื” ื‘ื“ื™ื•ืง.

ืœืคื ื™ ื”ืชืงื ืช hostapd, ืขืœื™ืš ืœื”ืชื’ื‘ืจ ืขืœ "ื‘ืขื™ื™ืช ื”ืื—ื™ื“ื•ืช". ืžืชืื ื”-Wi-Fi ื”ืžื•ื‘ื ื” wlan0 ื™ื›ื•ืœ ืœืฉื ื•ืช ืืช ืฉืžื• ื‘ืงืœื•ืช ืœ-wlan1 ื‘ืขืช ื—ื™ื‘ื•ืจ ืฆื™ื•ื“ USB Wi-Fi ื ื•ืกืฃ. ืœื›ืŸ, ื ืชืงืŸ ืืช ืฉืžื•ืช ื”ืžืžืฉืงื™ื ื‘ืฆื•ืจื” ื”ื‘ืื”: ื ืžืฆื™ื ืฉืžื•ืช ื™ื™ื—ื•ื“ื™ื™ื ืœืžืชืืžื™ื (ืืœื—ื•ื˜ื™ื™ื) ื•ื ืงืฉืจ ืื•ืชื ืœื›ืชื•ื‘ื•ืช MAC.

ืขื‘ื•ืจ ืžืชืื ื”-Wi-Fi ื”ืžื•ื‘ื ื”, ืฉื”ื•ื ืขื“ื™ื™ืŸ wlan0:

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

ืื ื—ื ื• ื™ื•ืฆืจื™ื /etc/systemd/network/wl0.link:

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

[Link]
Name=wl0

ื›ืขืช ื ื”ื™ื” ื‘ื˜ื•ื—ื™ื ื‘ื›ืš Wl0 - ื–ื”ื• Wi-Fi ืžื•ื‘ื ื”. ืื ื• ืžืืชื—ืœื™ื ืืช ื”ืคื˜ืœ ื›ื“ื™ ืœื•ื•ื“ื ื–ืืช.

ืœื”ืชืงื™ืŸ:

# yum install hostapd wireless-tools

ืงื•ื‘ืฅ ืชืฆื•ืจื” /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

ื‘ืœื™ ืœืฉื›ื•ื— ืœืจื’ืข GKChP, ืฉื ื” ืืช ื”ืคืจืžื˜ืจื™ื ื”ื“ืจื•ืฉื™ื ืœื ื• ื•ื‘ื“ื•ืง ื™ื“ื ื™ืช ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช:

# hostapd /etc/hostapd/hostapd.conf

hostapd ื™ืชื—ื™ืœ ื‘ืžืฆื‘ ืื™ื ื˜ืจืืงื˜ื™ื‘ื™, ื•ื™ืฉื“ืจ ืืช ืžืฆื‘ื• ืœืงื•ื ืกื•ืœื”. ืื ืื™ืŸ ืฉื’ื™ืื•ืช, ืœืงื•ื—ื•ืช ื”ืชื•ืžื›ื™ื ื‘ืžืฆื‘ AC ื™ื•ื›ืœื• ืœื”ืชื—ื‘ืจ ืœื ืงื•ื“ืช ื”ื’ื™ืฉื”. ื›ื“ื™ ืœืขืฆื•ืจ ืืช hostapd - Ctrl-C.

ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœื”ืคืขื™ืœ ืืช hostapd ื‘ืืชื—ื•ืœ ื”ืžืขืจื›ืช. ืื ืืชื” ืขื•ืฉื” ืืช ื”ื“ื‘ืจ ื”ืกื˜ื ื“ืจื˜ื™ (systemctl enable hostapd), ืื– ืœืื—ืจ ื”ืืชื—ื•ืœ ื”ื‘ื ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ืฉื“ "ืžืชื’ืœื’ืœ ื‘ื“ื" ืขื ื”ืื‘ื—ื ื” "ืžืžืฉืง wl0 ืœื ื ืžืฆื". ื›ืชื•ืฆืื” ืž"ืชื•ื”ื• ื•ื‘ื•ื”ื• ืžืงื‘ื™ืœ", hostapd ืคืขืœ ืžื”ืจ ื™ื•ืชืจ ืžืžื” ืฉื”ืงืจื ืœ ืžืฆื ืืช ื”ืžืชืื ื”ืืœื—ื•ื˜ื™.

ื”ืื™ื ื˜ืจื ื˜ ืžืœื ื‘ืชืจื•ืคื•ืช: ืžืคืกืง ื–ืžืŸ ืžืื•ืœืฅ ืœืคื ื™ ื”ืคืขืœืช ื”ื“ืžื•ืŸ (ืžืกืคืจ ื“ืงื•ืช), ื•ืขื“ ื“ืžื•ืŸ ืื—ืจ ืฉืขื•ืงื‘ ืื—ืจ ื”ื•ืคืขืช ื”ืžืžืฉืง ื•ืžืคืขื™ืœ (ืžื—ื“ืฉ) ืืช ื”-hostpad. ื”ืคืชืจื•ื ื•ืช ืžืขืฉื™ื™ื ืœืžื“ื™, ืื‘ืœ ื ื•ืจื ืžื›ื•ืขืจื™ื. ืื ื• ืงื•ืจืื™ื ืœื’ื“ื•ืœื” ืœืขื–ืจื” system ืขื ื”"ืžื˜ืจื•ืช" ื•ื”"ืžืฉื™ืžื•ืช" ื•ื”"ืชืœื•ืช" ืฉืœื”.

ื”ืขืชืง ืืช ืงื•ื‘ืฅ ืฉื™ืจื•ืช ื”ื”ืคืฆื” ืืœ /etc/systemd/system/hostapd.service:

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

ื•ืฆืžืฆื ืืช ืชื•ื›ื ื• ืœืฆื•ืจื” ื”ื‘ืื”:

[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

ื”ืงืกื ืฉืœ ืงื•ื‘ืฅ ื”ืฉื™ืจื•ืช ื”ืžืขื•ื“ื›ืŸ ื˜ืžื•ืŸ ื‘ืงืฉื™ืจื” ื”ื“ื™ื ืžื™ืช ืฉืœ hostapd ืœื™ืขื“ ื”ื—ื“ืฉ - ืžืžืฉืง wl0. ื›ืืฉืจ ื”ืžืžืฉืง ืžื•ืคื™ืข, ื”ื“ืžื•ืŸ ืžืชื—ื™ืœ; ื›ืืฉืจ ื”ื•ื ื ืขืœื, ื”ื•ื ื ืขืฆืจ. ื•ื›ืœ ื–ื” ื‘ืื™ื ื˜ืจื ื˜ - ื‘ืœื™ ืœืืชื—ืœ ืืช ื”ืžืขืจื›ืช. ื˜ื›ื ื™ืงื” ื–ื• ืชื”ื™ื” ืฉื™ืžื•ืฉื™ืช ื‘ืžื™ื•ื—ื“ ื‘ืขืช ื—ื™ื‘ื•ืจ ืžืชืื Wi-Fi USB ืœืคื˜ืœ.

ืขื›ืฉื™ื• ืืชื” ื™ื›ื•ืœ:

# systemctl enable hostapd
# reboot

7. IPTABLES

"ืžื”???" ยฉ ื›ืŸ, ื›ืŸ! ืืฃ ืื—ื“ system. ืื™ืŸ ืงื•ืžื‘ื™ื ื•ืช ื—ื“ืฉื ื™ื•ืช (ื‘ืฆื•ืจื” firewalld), ืฉื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืขื•ืฉื™ื ืืช ืื•ืชื• ื”ื“ื‘ืจ.

ื‘ื•ืื• ื ืฉืชืžืฉ ื‘ื™ืฉืŸ ื•ื”ื˜ื•ื‘ iptables, ืฉืฉื™ืจื•ืชื™ื•, ืœืื—ืจ ื”ืคืขืœืชื, ื™ื˜ืขื ื• ืืช ื›ืœืœื™ ื”ืจืฉืช ืœืชื•ืš ื”ืงืจื ืœ ื•ื™ืกื’ืจื• ื‘ืฉืงื˜ ืžื‘ืœื™ ืœื”ื™ืฉืืจ ืชื•ืฉื‘ ื•ื‘ืœื™ ืœืฆืจื•ืš ืžืฉืื‘ื™ื. systemd ื™ืฉ ืืœื’ื ื˜ื™ IPMasquerade=, ืื‘ืœ ืขื“ื™ื™ืŸ ื ืคืงื™ื“ ืืช ืชืจื’ื•ื ื”ื›ืชื•ื‘ื•ืช (NAT) ื•ื—ื•ืžืช ื”ืืฉ ื‘ื™ื“ื™ iptables.

ืœื”ืชืงื™ืŸ:

# yum install iptables-services
# systemctl enable iptables ip6tables

ืื ื™ ืžืขื“ื™ืฃ ืœืื—ืกืŸ ืืช ืชืฆื•ืจืช iptables ื›ืกืงืจื™ืคื˜ (ื“ื•ื’ืžื”):

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

ืื ื• ืžื‘ืฆืขื™ื ืืช ื”ืกืงืจื™ืคื˜ ืœืขื™ืœ ื•ืžืื‘ื“ื™ื ืืช ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ื—ื™ื‘ื•ืจื™ SSH ืงื•ื•ื™ื™ื ื—ื“ืฉื™ื ืขื ื”-Raspberry. ื–ื” ื ื›ื•ืŸ, ื™ืฆืจื ื• ื ืชื‘ Wi-Fi, ืฉื’ื™ืฉื” ืืœื™ื• "ื“ืจืš ื”ืื™ื ื˜ืจื ื˜" ืืกื•ืจื” ื›ื‘ืจื™ืจืช ืžื—ื“ืœ - ืขื›ืฉื™ื• ืจืง "ื‘ืื•ื•ื™ืจ". ืื ื—ื ื• ืžื—ื‘ืจื™ื ืืช ื›ื‘ืœ ื”ืืชืจื ื˜ ืฉืœ ื”ืกืคืง ื•ืžืชื—ื™ืœื™ื ืœื’ืœื•ืฉ!

8. ื‘ื•ื ื•ืก: +2,4GHz

ื›ืืฉืจ ื”ืจื›ื‘ืชื™ ืืช ื”ื ืชื‘ Raspberry ื”ืจืืฉื•ืŸ ื‘ืืžืฆืขื•ืช ื”ืฉืจื˜ื•ื˜ ื”ืžืชื•ืืจ ืœืขื™ืœ, ื’ื™ืœื™ืชื™ ืžืกืคืจ ื’ืื“ื’'ื˜ื™ื ื‘ื‘ื™ืชื™, ืฉื‘ืฉืœ ืžื’ื‘ืœื•ืช ืขื™ืฆื•ื‘ ื”-Wi-Fi ืฉืœื”ื, ืœื ื™ื›ืœื• ืœืจืื•ืช ืืช ื”"ืคื˜ืœ" ื›ืœืœ. ื”ื’ื“ืจื” ืžื—ื“ืฉ ืฉืœ ื”ื ืชื‘ ืœืขื‘ื•ื“ื” ื‘-802.11b/g/n ื”ื™ื™ืชื” ืœื ืกืคื•ืจื˜ื™ื‘ื™ืช, ืžื›ื™ื•ื•ืŸ ืฉื”ืžื”ื™ืจื•ืช ื”ืžืงืกื™ืžืœื™ืช "ื‘ืื•ื•ื™ืจ" ื‘ืžืงืจื” ื–ื” ืœื ืขืœืชื” ืขืœ 40 Mbit, ื•ืกืคืง ื”ืื™ื ื˜ืจื ื˜ ื”ืื”ื•ื‘ ืขืœื™ื™ ืžืฆื™ืข ืœื™ 100 (ื‘ืืžืฆืขื•ืช ื›ื‘ืœ).

ืœืžืขืฉื”, ืคืชืจื•ืŸ ืœื‘ืขื™ื” ื›ื‘ืจ ื”ื•ืžืฆื: ืžืžืฉืง Wi-Fi ืฉื ื™ ื”ืคื•ืขืœ ื‘ืชื“ืจ ืฉืœ 2,4 ื’ื™ื’ื”-ื”ืจืฅ, ื•ื ืงื•ื“ืช ื’ื™ืฉื” ืฉื ื™ื™ื”. ื‘ื“ื•ื›ืŸ ืกืžื•ืš ืงื ื™ืชื™ ืœื ืืช ื”ืจืืฉื•ื ื”, ืืœื ืืช "ืฉืจื™ืงืช" ื”-USB Wi-Fi ื”ืฉื ื™ื™ื” ืฉื ืชืงืœืชื™ ื‘ื”. ื”ืžื•ื›ืจ ื”ืชื™ื™ืกืจ ื‘ืฉืืœื•ืช ืขืœ ืขืจื›ืช ื”ืฉื‘ื‘ื™ื, ืชืื™ืžื•ืช ืœื’ืจืขื™ื ื™ ARM Linux ื•ื”ืืคืฉืจื•ืช ืœืขื‘ื•ื“ ื‘ืžืฆื‘ AP (ื”ื•ื ื”ื™ื” ื”ืจืืฉื•ืŸ ืฉื”ืชื—ื™ืœ).

ืื ื• ืžื’ื“ื™ืจื™ื ืืช "ื”ืžืฉืจื•ืงื™ืช" ื‘ืื ืœื•ื’ื™ื” ืขื ืžืชืื ื”-Wi-Fi ื”ืžื•ื‘ื ื”.

ืจืืฉื™ืช, ื‘ื•ืื• ื ืฉื ื” ืืช ืฉืžื• ืœ 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

ืื ื• ื ืคืงื™ื“ ืืช ื ื™ื”ื•ืœ ืžืžืฉืง ื”-Wi-Fi ื”ื—ื“ืฉ ื‘ื™ื“ื™ hostapd ื“ืžื•ืŸ ื ืคืจื“, ืืฉืจ ื™ืชื—ื™ืœ ื•ื™ื™ืขืฆืจ ื‘ื”ืชืื ืœื ื•ื›ื—ื•ืช ืฉืœ "ืฉืจื™ืงื”" ืžื•ื’ื“ืจืช ื‘ื”ื—ืœื˜ ื‘ืžืขืจื›ืช: wl1.

ืงื•ื‘ืฅ ืชืฆื•ืจื” /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]

ื”ืชื•ื›ืŸ ืฉืœ ืงื•ื‘ืฅ ื–ื” ืชืœื•ื™ ื™ืฉื™ืจื•ืช ื‘ื“ื’ื ืฉืœ ืžืชืื ื”-USB Wi-Fi, ื›ืš ืฉื”ืขืชืง/ื”ื“ื‘ืง ื‘ื ืืœื™ ืขืœื•ืœ ืœื”ื™ื›ืฉืœ.

ื”ืขืชืง ืืช ืงื•ื‘ืฅ ืฉื™ืจื•ืช ื”ื”ืคืฆื” ืืœ /etc/systemd/system/hostapd2.service:

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

ื•ืฆืžืฆื ืืช ืชื•ื›ื ื• ืœืฆื•ืจื” ื”ื‘ืื”:

[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

ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœืืคืฉืจ ืžื•ืคืข ื—ื“ืฉ ืฉืœ hostapd:

# systemctl enable hostapd2

ื–ื” ื”ื›ืœ! ืžืฉื•ืš ืืช ื”"ืžืฉืจื•ืงื™ืช" ื•ืืช ื”"ืคื˜ืœ" ืขืฆืžื•, ืชืกืชื›ืœ ืขืœ ื”ืจืฉืชื•ืช ื”ืืœื—ื•ื˜ื™ื•ืช ืกื‘ื™ื‘ืš.

ื•ืœื‘ืกื•ืฃ, ืื ื™ ืจื•ืฆื” ืœื”ื–ื”ื™ืจ ืื•ืชืš ืœื’ื‘ื™ ื”ืื™ื›ื•ืช ืฉืœ ืžืชืื ื”-USB Wi-Fi ื•ืืกืคืงืช ื”ื—ืฉืžืœ ืฉืœ ื”ืคื˜ืœ. "ืžืฉืจื•ืงื™ืช ื—ืžื”" ืžื—ื•ื‘ืจืช ื™ื›ื•ืœื” ืœืคืขืžื™ื ืœื’ืจื•ื ืœ"ื”ืงืคืืช ืคื˜ืœ" ืขืงื‘ ื‘ืขื™ื•ืช ื—ืฉืžืœื™ื•ืช ืงืฆืจื•ืช ื˜ื•ื•ื—.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”