Raspberry Pi + CentOS = Wi-Fi Hotspot (ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΈΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€ΠΎΡƒΡ‚Π΅Ρ€ Π² красной шляпС)

Π’ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ созданию Wi-Fi Ρ‚ΠΎΡ‡Π΅ΠΊ доступа Π½Π° Π±Π°Π·Π΅ ΠΎΠ΄Π½ΠΎΠΏΠ»Π°Ρ‚Π½ΠΎΠ³ΠΎ ПК Raspberry. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, подразумСваСтся использованиС Ρ€ΠΎΠ΄Π½ΠΎΠΉ для Β«ΠΌΠ°Π»ΠΈΠ½ΠΊΠΈΒ» ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы β€” Raspbian.

Являясь Π°Π΄Π΅ΠΏΡ‚ΠΎΠΌ RPM-based систСм, я Π½Π΅ ΠΌΠΎΠ³ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΌΠΈΠΌΠΎ этого малСнького Ρ‡ΡƒΠ΄Π° ΠΈ Π½Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΌ мою Π»ΡŽΠ±ΠΈΠΌΡƒΡŽ CentOS.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ прСдставлСна инструкция ΠΏΠΎ ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΡŽ 5GHz/AC Wi-Fi Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π° ΠΈΠ· Raspberry Pi 3 Model B+ Π½Π° Π±Π°Π·Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы CentOS. Π‘ΡƒΠ΄Π΅Ρ‚ нСсколько стандартных, Π½ΠΎ малоизвСстных Ρ‚Ρ€ΡŽΠΊΠΎΠ², Π° Π² качСствС бонуса β€” Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Β«ΠΌΠ°Π»ΠΈΠ½ΠΊΠ΅Β» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Wi-Fi оборудования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… (2,4+5GHz).

Raspberry Pi + CentOS = Wi-Fi Hotspot (ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΈΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€ΠΎΡƒΡ‚Π΅Ρ€ Π² красной шляпС)
(микс ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· свободного доступа)

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ сразу, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ космичСских скоростСй Π½Π΅ получится. Π― Π²Ρ‹ΠΆΠΈΠΌΠ°ΡŽ ΠΈΠ· своСй Β«ΠΌΠ°Π»ΠΈΠ½ΠΊΠΈΒ» ΠΏΠΎ Π²ΠΎΠ·Π΄ΡƒΡ…Ρƒ максимум 100 ΠœΠ±ΠΈΡ‚, ΠΈ это ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΅Π³ΠΎ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°. Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΎΠΉ вялый AC, Ссли Π΄Π°ΠΆΠ΅ Π½Π° N Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π³ΠΈΠ³Π°Π±ΠΈΡ‚Π°? Если Π²Ρ‹ задались Ρ‚Π°ΠΊΠΈΠΌ вопросом, Ρ‚ΠΎ ступайтС Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π·Π° настоящим Ρ€ΠΎΡƒΡ‚Π΅Ρ€ΠΎΠΌ с восСмью внСшними Π°Π½Ρ‚Π΅Π½Π½Π°ΠΌΠΈ.

0. Π§Ρ‚ΠΎ понадобится

  • БобствСнно, само Β«ΠΌΠ°Π»ΠΈΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·Π΄Π΅Π»ΠΈΠ΅Β» ΠΊΠ°Π»ΠΈΠ±Ρ€Π°: Pi 3 Model B+ (для достиТСния Π·Π°Π²Π΅Ρ‚Π½Ρ‹Ρ… 5GHz скоростСй ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ²);
  • Добротная microSD >= 4GB;
  • Рабочая станция с Linux ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΌ/писатСлСм microSD;
  • НаличиС достаточных скиллов Π² Linux, ΡΡ‚Π°Ρ‚ΡŒΡ β€” для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π“ΠΈΠΊΠ°;
  • ΠŸΡ€ΠΎΠ²ΠΎΠ΄Π½Π°Ρ сСтСвая (eth0) ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Raspberry ΠΈ Linux, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ DHCP-сСрвСр Π² локальной сСти ΠΈ доступ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ с ΠΎΠ±ΠΎΠΈΡ… устройств.

НСбольшой ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΏΠΎ послСднСму ΠΏΡƒΠ½ΠΊΡ‚Ρƒ. Β«Π§Ρ‚ΠΎ появилось ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, яйцо ΠΈΠ»ΠΈ…Β» ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Wi-Fi Ρ€ΠΎΡƒΡ‚Π΅Ρ€ ΠΏΡ€ΠΈ отсутствии ΠΊΠ°ΠΊΠΎΠ³ΠΎ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ оборудования доступа Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚? ΠžΡΡ‚Π°Π²ΠΈΠΌ Π·Π° Ρ€Π°ΠΌΠΊΠ°ΠΌΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ это Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ ΠΈ просто допустим, Ρ‡Ρ‚ΠΎ Raspberry ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΊ локальной сСти ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠΌ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Π’ этом случаС Π½Π°ΠΌ Π½Π΅ понадобятся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Π»Π΅Π²ΠΈΠ·ΠΎΡ€ ΠΈ манипулятор для настройки Β«ΠΌΠ°Π»ΠΈΠ½ΠΊΠΈΒ».

1. Установка CentOS

Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ страница ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

На ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ вСрсия CentOS Π½Π° устройствС β€” 32-битная. Π“Π΄Π΅-Ρ‚ΠΎ Π½Π° просторах всСмирной Π‘Π΅Ρ‚ΠΈ ΠΌΠ½Π΅ попадались мнСния ΠΎ сниТСнии ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΡ… ОБ Π½Π° 64-Π±ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ARM Π°ΠΆ Π½Π° 20%. ΠžΡΡ‚Π°Π²Π»ΡŽ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π±Π΅Π· коммСнтария.

На Linux-Π΅ ΠΊΠ°Ρ‡Π°Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· с ядром «-RaspberryPI-» ΠΈ записываСм Π΅Π³ΠΎ Π½Π° microSD:

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

ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ использования ΠΎΠ±Ρ€Π°Π·Π° ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΈΠ· Π½Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π» SWAP, Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ ΠΊΠΎΡ€Π΅Π½ΡŒ Π½Π° вСсь доступный объСм ΠΈ избавимся ΠΎΡ‚ SELinux. Алгоритм β€” простой: Π΄Π΅Π»Π°Π΅ΠΌ копию корня Π½Π° Linux, удаляСм с 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, Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ) ΠΈ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ (измСняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ UUID, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΈΠ·ΡƒΡ‡ΠΈΠ² Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ blkid Π½Π° Linux-Π΅):

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

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ Π½Π΅Π·Ρ‹Π±Π»Π΅ΠΌΡ‹Π΅ двиТСния: passwd, yum -y update, reboot.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Ρ‚ΡŒΡŽ ΠΎΡ‚Π΄Π°Π΅ΠΌ networkd:

# 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, созданный Ρ€Π°Π½Π΅Π΅ Network Manager-ΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π² случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с resolve, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ содСрТимоС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ systemd-resolved ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ.

УдаляСм «лишнСС», Ρ‡ΠΈΠ½ΠΈΠΌ ΠΈ ускоряСм Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ОБ:

# 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"

ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Β«ΠΌΠ°Π»ΠΈΠ½ΠΊΠ΅Β» β€” ваТная ΡˆΡ‚ΡƒΠΊΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ Β«ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈΒ» отсутствуСт аппаратная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС часов ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Ρ‚ΠΎ Π½ΡƒΠΆΠ½Π° синхронизация. ΠžΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΈ быстрый Π΄Π΅ΠΌΠΎΠ½ для этого β€” chrony β€” ΡƒΠΆΠ΅ установлСн ΠΈ запускаСтся автоматичСски. МоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ 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 частотах, Ρ‚ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ подготовимся ΠΊ ΡΡŽΡ€ΠΏΡ€ΠΈΠ·Π°ΠΌ рСгулятора:

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

Π­Ρ‚Π° злобная конструкция, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡΡΡŒ Π² Ρ‚ΠΎΠΌ числС Π½Π° часовой пояс, Β«Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚Β» использованиС (Π² России) 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 ΠœΠ΅Π³Π°Π±Π°ΠΉΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ 1.5 Π“ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π° microSD (Π½Π° самом Π΄Π΅Π»Π΅ ΠΌΠ΅Π½Π΅Π΅ 1 Π“ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π° ΠΈΠ·-Π·Π° Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ /boot, Π½ΠΎ Π±ΡƒΠ΄Π΅ΠΌ чСстными Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°).

Для установки ПО Wi-Fi Ρ‚ΠΎΡ‡ΠΊΠΈ доступа Π½Π° эту систСму потрСбуСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности стандартного дистрибутива CentOS. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго Β«ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Π΅ΠΌΒ» Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€(ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ) встроСнного Wi-Fi Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°. На домашнСй страницС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сказано:

Wifi on the Raspberry 3B and 3B+

The Raspberry PI 3B/3B+ firmware files are not allowed to be distributed by the CentOS Project. You can use the following articles to understand the issue, get the firmware and set up the wifi.

Π§Ρ‚ΠΎ нСльзя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ CentOS, Ρ‚ΠΎ Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ Π½Π°ΠΌ для Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ использования. ЗамСняСм Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΠ²Π½ΡƒΡŽ Wi-Fi ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ Π² CentOS Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Broadcom (Ρ‚Π΅ самыС нСнавистныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π±Π»ΠΎΠ±Ρ‹…). Π­Ρ‚ΠΎ, Π² частности, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AC Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ доступа.

Wi-Fi firmware upgradeВыясняСм модСль устройства ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ:

# 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, ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ Ρ†ΠΈΡ„Ρ€: 43455 (brcmfmac43455-sdio.bin).

ΠšΠ°Ρ‡Π°Π΅ΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Raspbian. Π›Π΅Π½ΠΈΠ²Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· Π½Π° microSD ΠΈ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π·Π°Π±Ρ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ. А ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΎΠ±Ρ€Π°Π·Π° Π² Linux ΠΈ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Ρ‚ΡƒΠ΄Π°:

# 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.

Ну ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ 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 сСрвСр.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Сдинообразия имСнования ΠΈ извСстный Π³Π²Π°Ρ‚Π΅ΠΌΠ°Π»ΡŒΡΠΊΠΈΠΉ программист β€” Π΄Π²Π΅ нСприятности, ΠΏΠΎΠ΄ΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ занимаСтся настройкой сСтСвых интСрфСйсов ΠΈ слуТб Π² systemd-дистрибутивах.

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ хаос (лиричСскоС отступлСниС)Π›Π΅Π½Π½Π°Ρ€Ρ‚ ΠŸΠΎΡ‚Ρ‚Π΅Ρ€ΠΈΠ½Π³ составил свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ systemd ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π­Ρ‚Π° systemd запускаСт Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊ быстро, Ρ‡Ρ‚ΠΎ Ρ‚Π΅, Π½Π΅ успСв ΠΎΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ судСйского ΠΏΠΈΠ½ΠΊΠ° свистка, ΡΠΏΠΎΡ‚Ρ‹ΠΊΠ°ΡŽΡ‚ΡΡ ΠΈ ΠΏΠ°Π΄Π°ΡŽΡ‚ Π½Π° стартС Π΄Π°ΠΆΠ΅ Π½Π΅ Π½Π°Ρ‡Π°Π² свой Π±Π΅Π³ с прСпятствиями.

Ну Π° Ссли ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ, Ρ‚ΠΎ агрСссивноС распараллСливаниС запускаСмых процСссов ΠΏΡ€ΠΈ стартС systemd-ОБ являСтся Π½Π΅ΠΊΠΈΠΌ «ослиным мостиком» для ΠΌΠ°Ρ‚Π΅Ρ€Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… LSB-шников. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, привСсти Π² порядок этот Β«ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ хаос» оказываСтся простым, ΠΏΡ€Π°Π²Π΄Π° Π½Π΅ всСгда ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π²Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… интСрфСйса-моста (bridge) с постоянными ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ: lan ΠΈ wan. К ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Β«ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌΒ» 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=yes избавляСт ΠΎΡ‚ нСобходимости Ρ‡Π΅Ρ€Π΅Π· sysctl Π½Π°ΠΌΠ΅ΠΊΠ°Ρ‚ΡŒ ядру ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ.
MACAddress= раскоммСнтируСм ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΈ нСобходимости.

Π‘Π½Π°Ρ‡Π°Π»Π° Β«ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΒ» 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 Π½ΠΈΡ‡Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ сладкой ΠΏΠ°Ρ€ΠΎΡ‡ΠΊΠΈ ΠΈΠ· dnsmasq + hostapd Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ. По ΠΌΠΎΠ΅ΠΌΡƒ мнСнию.

Если ΠΊΡ‚ΠΎ Π·Π°Π±Ρ‹Π», Ρ‚ΠΎ…hostapd β€” это ΡˆΡ‚ΡƒΠΊΠ°, которая управляСт Wi-Fi Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°ΠΌΠΈ (Π² частности, Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚ Π½Π° сСбя Ρ‚Ρ€ΡƒΠ΄ ΠΏΠΎ ΠΈΡ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ lan Β«ΠΌΠ°Π»ΠΈΠ½ΠΊΠΈΒ»), Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΈ рСгистрируСт бСспроводных ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

dnsmasq β€” настраиваСт сСтСвой стСк ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²: Π²Ρ‹Π΄Π°Π΅Ρ‚ 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

Ни Π½Π° ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π½Π΅ забывая ΠΎ Π“ΠšΠ§ΠŸ, измСняСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π½Π°ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ провСряСм Π½Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ:

# hostapd /etc/hostapd/hostapd.conf

hostapd запустится Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, транслируя Π½Π° консоль своС состояниС. Если ошибок Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚ΠΎ ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ΅ доступа ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ AC-Ρ€Π΅ΠΆΠΈΠΌ. Для остановки hostapd β€” Ctrl-C.

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ hostapd Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ систСмы. Если ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ стандартно (systemctl enable hostapd), Ρ‚ΠΎ послС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Β«Π²Π°Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Π² ΠΊΡ€ΠΎΠ²ΠΈΒ» Π΄Π΅ΠΌΠΎΠ½Π° с Π΄ΠΈΠ°Π³Π½ΠΎΠ·ΠΎΠΌ «ΠΈΠ½Ρ‚СрфСйс wl0 Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½«. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Β«ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ хаоса» hostapd завСлся быстрСС, Ρ‡Π΅ΠΌ ядро нашло бСспроводной Π°Π΄Π°ΠΏΡ‚Π΅Ρ€.

Π’ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎ лСкарств: ΠΎΡ‚ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ стартом Π΄Π΅ΠΌΠΎΠ½Π° (сколько-Ρ‚ΠΎ ΠΌΠΈΠ½ΡƒΡ‚), Π΄ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π΅ΠΌΠΎΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ появлСниС интСрфСйса ΠΈ (ΠΏΠ΅Ρ€Π΅)запускаСт hostpad. РСшСния Π²ΠΏΠΎΠ»Π½Π΅ сСбС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅, Π½ΠΎ уТасно нСкрасивыС. ΠŸΡ€ΠΈΠ·Ρ‹Π²Π°Π΅ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π²Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ systemd с Π΅Π³ΠΎ «цСлями» ΠΈ «Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ» «зависимостями».

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ дистрибутивный service-Ρ„Π°ΠΉΠ» Π² /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. ΠŸΡ€ΠΈ появлСнии интСрфСйса β€” Π΄Π΅ΠΌΠΎΠ½ запускаСтся, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ β€” останавливаСтся. И это всС Π² ΠΎΠ½Π»Π°ΠΉΠ½Π΅ β€” Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы. ОсобСнно эта Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ Β«ΠΌΠ°Π»ΠΈΠ½ΠΊΠ΅Β» USB Wi-Fi Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°.

Π’ΠΎΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ:

# systemctl enable hostapd
# reboot

7. IPTABLES

Β«Π¨Ρ‚Π°???Β» Β© Π”Π°-Π΄Π°! Никакого systemd. Никаких Π½ΠΎΠ²ΠΎΠΌΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ±Π°ΠΉΠ½ΠΎΠ² (Π² Π²ΠΈΠ΄Π΅ 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-соСдинСния с Β«ΠΌΠ°Π»ΠΈΠ½ΠΊΠΎΠΉΒ». ВсС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ Wi-Fi Ρ€ΠΎΡƒΡ‚Π΅Ρ€, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Β«Ρ‡Π΅Ρ€Π΅Π· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Β» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Β«ΠΏΠΎ Π²ΠΎΠ·Π΄ΡƒΡ…ΡƒΒ». ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ кабСль ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° Π² Ethernet ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ сёрфинг!

8. Бонус: +2,4GHz

Когда ΠΏΠΎ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡƒ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΡƒ я собрал ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Raspberry Ρ€ΠΎΡƒΡ‚Π΅Ρ€, Ρ‚ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» Ρƒ сСбя Π² хозяйствС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство Π³Π°Π΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² силу своих конструктивных ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Wi-Fi Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Β«ΠΌΠ°Π»ΠΈΠ½ΠΊΡƒΒ» Π²ΠΎΠΎΠ±Ρ‰Π΅. ΠŸΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ€ΠΎΡƒΡ‚Π΅Ρ€ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² 802.11b/g/n Π±Ρ‹Π»ΠΎ нСспортивно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ максимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Β«ΠΏΠΎ Π²ΠΎΠ·Π΄ΡƒΡ…ΡƒΒ» Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π»Π° 40 ΠœΠ±ΠΈΡ‚, Π° ΠΌΠΎΠΉ Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΌΠ½Π΅ 100 (ΠΏΠΎ кабСлю).

На самом Π΄Π΅Π»Π΅, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Ρ‹Π»ΠΎ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ΠΎ: Π²Ρ‚ΠΎΡ€ΠΎΠΉ Wi-Fi интСрфСйс, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° частотС 2,4GHz, ΠΈ вторая Ρ‚ΠΎΡ‡ΠΊΠ° доступа. Π’ блиТайшСм Π»Π°Ρ€ΡŒΠΊΠ΅ я ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π» Π½Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ попавшийся ΠΌΠ½Π΅ 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 Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, поэтому Π±Π°Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ copy/paste ΠΌΠΎΠΆΠ΅Ρ‚ вас подвСсти.

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ дистрибутивный service-Ρ„Π°ΠΉΠ» Π² /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 Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΈ элСктропитания Raspberry. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Β«Π½Π° Π³ΠΎΡ€ΡΡ‡ΡƒΡŽ свисток», ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ «зависаниС ΠΌΠ°Π»ΠΈΠ½ΠΊΠΈΒ» ΠΈΠ·-Π·Π° ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… элСктричСских нСприятностСй.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com