Raspberry ã·ã³ã°ã«ããŒã PC ãããŒã¹ã«ãã Wi-Fi ã¢ã¯ã»ã¹ ãã€ã³ãã®äœæã«é¢ããæ å ±ãã€ã³ã¿ãŒãããäžã«å€§éã«ãããŸãã ååãšããŠãããã¯ãRaspberry ã«ãã€ãã£ã㪠Raspbian ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã䜿çšããããšãæå³ããŸãã
RPM ããŒã¹ã®ã·ã¹ãã ã®ä¿¡å¥è ã§ããç§ã¯ããã®å°ããªå¥è·¡ãèŠéããŠãæãã CentOS ãè©ŠããŠã¿ãããšã¯ã§ããŸããã§ããã
ãã®èšäºã§ã¯ãCentOS ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã«åºã¥ãã Raspberry Pi 5 Model B+ ãã 3GHz/AC Wi-Fi ã«ãŒã¿ãŒãäœæããæé ã説æããŸãã æšæºçã ãããŸãç¥ãããŠããªãããªãã¯ãããã€ããããããã«ããŒãã¹ãšããŠãè¿œå ã® Wi-Fi æ©åšã Raspberry ã«æ¥ç¶ããŠãè€æ°ã®ã¢ãŒã (2,4+5GHz) ã§åæã«åäœã§ããããã«ããããã®å³ãçšæãããŠããŸãã
(èªç±ã«å©çšã§ããç»åã®çµã¿åãã)
ããã€ãã®å®å®é床ã¯æ©èœããªãããšã«ããã«æ³šæããŠãã ããã Raspberry ããç¡ç·ã§æ倧 100 Mbps ãæŸãåºããŸãããããã¯ã€ã³ã¿ãŒããã ãããã€ããŒã®é床ãã«ããŒããŸãã çè«äžã¯ N ã䜿çšããŠãååã®ã®ã¬ããããåŸãããã®ã«ããªãããã»ã©é
ã AC ãå¿
èŠãªã®ã§ãããã? ãã®è³ªåãèªåããå Žåã¯ãåºã«è¡ã£ãŠãXNUMX ã€ã®å€éšã¢ã³ãããåããæ¬ç©ã®ã«ãŒã¿ãŒã賌å
¥ããŠãã ããã
0. å¿ èŠãªãã®
- å®éããã©ãºããªãŒè£œåãèªäœã¯ãPi 3 Model B+ (åŸ æã® 5GHz ã®é床ãšãã£ãã«ãå®çŸãããã) ã®å£åŸãæã£ãŠããŸãã
- è¯å¥œãª microSD >= 4GB;
- Linux ããã³ microSD ãªãŒããŒ/ã©ã€ã¿ãŒãæèŒããã¯ãŒã¯ã¹ããŒã·ã§ã³ã
- Linux ã«é¢ããååãªã¹ãã«ãå¿ èŠãªå Žåããã®èšäºã¯èšç·Žãåãããªã¿ã¯åãã§ãã
- Raspberry ãš Linux ã®éã®æç·ãããã¯ãŒã¯ (eth0) æ¥ç¶ãããŒã«ã« ãããã¯ãŒã¯äžã§ DHCP ãµãŒããŒãå®è¡ããäž¡æ¹ã®ããã€ã¹ããã€ã³ã¿ãŒããã ã¢ã¯ã»ã¹ãå®è¡ããŸãã
æåŸã®ç¹ã«ã€ããŠå°ãã³ã¡ã³ãããŸãã ãåµãš...ãã€ã³ã¿ãŒãããã¢ã¯ã»ã¹æ©åšããªãå Žåã«Wi-Fiã«ãŒã¿ãŒãäœãã«ã¯ã©ãããã°ããã§ããïŒ ãã®æ¥œããæŒç¿ã¯èšäºã®ç¯å²å€ãšããŠãRaspberry ãæç·ã§ããŒã«ã« ãããã¯ãŒã¯ã«æ¥ç¶ãããã€ã³ã¿ãŒãããã«ã¢ã¯ã»ã¹ã§ãããšåçŽã«ä»®å®ããŠã¿ãŸãããã ãã®å Žåããã©ãºããªãŒããã»ããã¢ããããããã«è¿œå ã®ãã¬ãããããã¥ã¬ãŒã¿ãŒã¯å¿ èŠãããŸããã
1.CentOSãã€ã³ã¹ããŒã«ãã
ãã®èšäºã®å·çæç¹ã§ã¯ãããã€ã¹äžã§å®è¡ãããŠãã CentOS ã®ããŒãžã§ã³ã¯ 32 ãããã§ãã World Wide Web ã®ã©ããã§ã64 ããã ARM ã¢ãŒããã¯ãã£äžã®ãã®ãã㪠OS ã®ããã©ãŒãã³ã¹ã¯ 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 äžã§ã«ãŒãã®ã³ããŒãäœæããæåã® (/boot) ãé€ããã¹ãŠã®ããŒãã£ã·ã§ã³ã microSD ããåé€ããæ°ããã«ãŒããäœæããŠãã³ããŒãããã®å 容ãè¿ããŸãã
å¿ èŠãªã¢ã¯ã·ã§ã³ã®äŸ (é倧ãªã³ã³ãœãŒã«åºå)
# 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ããŒãã£ã·ã§ã³ã«é¢ãã XNUMX ã€ã®ãšã³ããªã ããæ®ããŸããboot (/bootãå€æŽãªã) ãš root (UUID å€ãå€æŽããŸããããã¯ãLinux 㧠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 次ã®åœ¢åŒã«å€æããŸã (ãã€ãã³ãªãã® XNUMX è¡)ã
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
å®äºïŒ
# cd
# umount /mnt
# sync
microSD ããã©ãºããªãŒãã«åé 眮ããèµ·åããSSH (root/centos) çµç±ã§ãããã¯ãŒã¯ ã¢ã¯ã»ã¹ãååŸããŸãã
2. CentOSã®ã»ããã¢ãã
æåã® XNUMX ã€ã®æºãããªãæ¥œç« : passwd, yum -yã¢ããããŒã, ãªããŒã.
ãããã¯ãŒã¯ç®¡çãç¡æã§æäŸããŸã ãããã¯ãŒã¯:
# 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 ã«ãã£ãŠä»¥åã«äœæãããŸããã ãããã£ãŠã解決ã«åé¡ãããå Žåã¯ããã®å 容ãç·šéããŠãã ããã äœ¿çš systemd-解決æžã¿ æã ã¯ããŸããã
ãäžèŠãªãã®ããåé€ãã修埩ãã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
誰ãå¿
èŠ cron ãããŠãã«ãã€ã³ãæ¶åããªã人ã¯
# 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
ã¿ã€ã ãŸãŒã³ãèšå®ããããã«äœ¿çšããã®ã¯ éšãã ç§ãã¡ã®ç®æšã¯ 5GHz ã®åšæ³¢æ°ã§åäœãã Wi-Fi ã«ãŒã¿ãŒãäœæããããšãªã®ã§ãäºåã«ãµãã©ã€ãºãæºåããŸãã ã¬ã®ã¥ã¬ãŒã¿:
# yum æ å ± 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 ã¢ããªã³
äžèšã§è¿°ã¹ãããšã¯ãã¹ãŠãRaspberry Pi ã«ãããã©ã CentOS ãã€ã³ã¹ããŒã«ããããã®å®å šãªæé ãšèããããšãã§ããŸãã æçµçã«ã¯ã10 ç§æªæºã§ (å) èµ·åããRAM ã®äœ¿çšéã 15 ã¡ã¬ãã€ãæªæºãmicroSD ã®äœ¿çšéã 1.5 ã®ã¬ãã€ãæªæº (/boot ãäžå®å šãªãããå®éã«ã¯ 1 ã®ã¬ãã€ãæªæºã§ãããæ£çŽã«èšããŸã) ã® PC ãå®æããã¯ãã§ãã
ãã®ã·ã¹ãã ã« Wi-Fi ã¢ã¯ã»ã¹ ãã€ã³ã ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããã«ã¯ãæšæºã® CentOS ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®æ©èœããããã«æ¡åŒµããå¿ èŠããããŸãã ãŸãã¯å èµWi-Fiã¢ããã¿ãŒã®ãã©ã€ããŒïŒãã¡ãŒã ãŠã§ã¢ïŒãããŒãžã§ã³ã¢ããããŸãããã ãããžã§ã¯ãã®ããŒã ããŒãžã«ã¯æ¬¡ã®ããã«æžãããŠããŸãã
Raspberry 3B ããã³ 3B+ ã® Wi-Fi
Raspberry PI 3B/3B+ ãã¡ãŒã ãŠã§ã¢ ãã¡ã€ã«ã¯ãCentOS ãããžã§ã¯ãã«ããé åžãèš±å¯ãããŠããŸããã 次ã®èšäºã䜿çšããŠåé¡ãç解ãããã¡ãŒã ãŠã§ã¢ãå ¥æããWi-Fi ãã»ããã¢ããã§ããŸãã
CentOS ãããžã§ã¯ãã§çŠæ¢ãããŠãããã®ã¯ãå人䜿çšã§ã¯çŠæ¢ãããŠããŸããã CentOS ã®é åž Wi-Fi ãã¡ãŒã ãŠã§ã¢ããBroadcom éçºè ãæäŸãã察å¿ãããã¡ãŒã ãŠã§ã¢ (åãå«ãããŠãããã€ã㪠BLOB) ã«çœ®ãæããŸãã ããã«ãããç¹ã«ã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)ã
# 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 ã¢ããã¿ãŒã®ãã¡ãŒã ãŠã§ã¢ ãã¡ã€ã«ããã£ã¬ã¯ããªã«ã³ããŒãããraspberryãã«çœ®ãæããå¿ èŠããããŸãã /usr/lib/ãã¡ãŒã ãŠã§ã¢/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 æ¥ä»ã)ã
ãããŠãã¡ãããšãã«:
# 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 - ãã®ãããã¯ã«ã€ããŠã¯å¥ã®èšäºã§èª¬æãããããããã§ã¯èª¬æããŸããã
Raspberry ã® Wi-Fi ã€ã³ã¿ãŒãã§ã€ã¹ã¯ããŒã«ã« ãããã¯ãŒã¯ã§ãããå èµã€ãŒãµããã ã¢ããã¿ãŒ (eth0) ã¯å€éšã«ãããŸãã ããŒã«ã« ãããã¯ãŒã¯ã«éçã«çªå·ãä»ããŠã¿ãŸããã (äŸ: 192.168.0.0/24)ã ã©ãºããªãŒã¢ãã¬ã¹: 192.168.0.1ã DHCP ãµãŒããŒã¯å€éšãããã¯ãŒã¯ (ã€ã³ã¿ãŒããã) äžã§åäœããŸãã
ãã©ã¬ã«ã«ãªã¹ (æè©ã®äœè«)ã¬ããŒãã»ãã¿ãªã³ã°ãç¬èªã®ããã°ã©ã ãäœæ systemd ãšãŠãè¯ãã ãã systemd ä»ã®ããã°ã©ã ã®èµ·åãéãããããã審å€ã®ç¬ããç«ã¡çŽãæéããªããé害ç©ã³ãŒã¹ãéå§ããããšããããã«ãã¹ã¿ãŒãæã«ã€ãŸãããŠè»¢åããŠããŸããŸãã
ãããçå£ãªè©±ãsystemd OS ã®éå§æã«èµ·åãããããã»ã¹ã®ç©æ¥µçãªäžŠååã¯ãçµéšè±å¯ãªã·ãŒã±ã³ã·ã£ã« LSB ã¹ãã·ã£ãªã¹ãã«ãšã£ãŠã¯äžçš®ã®ãããã®æ©ãã§ãã 幞ããªããšã«ããã®ãå¹³è¡ããæ··ä¹±ãã«ç§©åºãããããããšã¯ãå¿ ãããæããã§ã¯ãããŸããããç°¡åã§ããããšãå€æããŸããã
å®æ°åãæ〠XNUMX ã€ã®ä»®æ³ããªããž ã€ã³ã¿ãŒãã§ã€ã¹ãäœæããŸãã LAN О ã¯ã³ã Wi-Fi ã¢ããã¿ãŒãæåã®ã¢ããã¿ãŒã«ãæ¥ç¶ãããeth0ãã©ãºããªãŒãã XNUMX çªç®ã®ã¢ããã¿ãŒã«ãæ¥ç¶ãããŸãã
/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 çµç±ã§ã«ãŒãã«ã«ãã³ããäžããå¿
èŠããªããªããŸãã
MACã¢ãã¬ã¹= å¿
èŠã«å¿ããŠã³ã¡ã³ããå€ããŠå€æŽããŸãããã
ãŸãã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 ãåé€ããRaspberry ãåèµ·åããŠãããã«ãããã¯ãŒã¯ ã¢ã¯ã»ã¹ã§ããããã«ããŸã (IP ã¢ãã¬ã¹ã¯å€æŽãããå¯èœæ§ãé«ããªããŸã)ã
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Wi-Fi ã¢ã¯ã»ã¹ ãã€ã³ããäœæããã«ã¯ãçŽ æµãªã«ããã«ã«åããã®ã¯ãããŸããã dnsãã¹ã¯ + hostapd ãŸã åââãããŸããã ç§ã®æèŠã§ã¯ã
誰ããå¿ããŠããŸã£ãå Žåã«åããŠ...
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
ããã§ã®ãéæ³ãã¯ãã©ã¡ãŒã¿ã«ãããŸã ãã€ã³ããã€ãããã¯ããã㯠dnsmasq ããŒã¢ã³ã«ãã·ã¹ãã äžã«è¡šç€ºããããŸã§åŸ æ©ããããã«æ瀺ããŸãã ã€ã³ã¿ãŒãã§ãŒã¹=lanããããŠéå§åŸã«èªãããå€ç¬ã®çºäœã§æ°ã倱ãããšã¯ãããŸããã
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6.ãã¹ã¿ãã
ãããŠæåŸã«ãéæ³ã® hostapd æ§æã§ãã ãŸãã«ãããã®è²Žéãªã»ãªããæ±ããŠãã®èšäºãèªãã§ãã人ãããããšã¯ééããããŸããã
hostapd ãã€ã³ã¹ããŒã«ããåã«ããåäžæ§ã®åé¡ãã解決ããå¿ èŠããããŸãã è¿œå ã® USB Wi-Fi æ©åšãæ¥ç¶ãããšãã«ãå èµ Wi-Fi ã¢ããã¿ãŒ wlan0 ã®ååãç°¡åã« wlan1 ã«å€æŽã§ããŸãã ãããã£ãŠã次ã®æ¹æ³ã§ã€ã³ã¿ãŒãã§ã€ã¹åãä¿®æ£ããŸãã(ã¯ã€ã€ã¬ã¹) ã¢ããã¿ãŒã®äžæã®ååãèãåºãããããã 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ã§ãã ããã確èªããããã«ãRaspberry ãåèµ·åããŸãã
ã€ã³ã¹ããŒã«ïŒ
# 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 㧠hostapd ãæå¹ã«ãã) ãå®è¡ãããšã次åã®åèµ·ååŸã«ãæªéããè¡ãæµããŠã蚺æãäžãå¯èœæ§ããããŸããã€ã³ã¿ãŒãã§ãŒã¹wl0ãèŠã€ãããŸãããã ã䞊åã«ãªã¹ãã®çµæãhostapd ã¯ã«ãŒãã«ãã¯ã€ã€ã¬ã¹ ã¢ããã¿ãŒãèŠã€ãããããéãèµ·åããŸããã
ã€ã³ã¿ãŒãããã«ã¯ãããŒã¢ã³ãèµ·åããåã®åŒ·å¶ã¿ã€ã ã¢ãŠã (æ°å) ãããã€ã³ã¿ãŒãã§ã€ã¹ã®å€èŠ³ãç£èŠããŠãã¹ããããã (å) èµ·åããå¥ã®ããŒã¢ã³ãŸã§ã解決çããããããããŸãã 解決çã¯éåžžã«å®è¡å¯èœã§ãããéåžžã«éãã§ãã ç§ãã¡ã¯å倧ãªæ¹ã«å©ããæ±ããŸã systemd ãç®æšããšãã¿ã¹ã¯ããšãäŸåé¢ä¿ãã
é åžãµãŒãã¹ãã¡ã€ã«ã次ã®å Žæã«ã³ããŒããŸãã /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
æŽæ°ããããµãŒãã¹ ãã¡ã€ã«ã®é åã¯ãæ°ããã¿ãŒã²ããã§ãã wl0 ã€ã³ã¿ãŒãã§ã€ã¹ãžã® hostapd ã®åçãã€ã³ãã£ã³ã°ã«ãããŸãã ã€ã³ã¿ãŒãã§ãŒã¹ã衚瀺ããããšããŒã¢ã³ãèµ·åããã€ã³ã¿ãŒãã§ãŒã¹ãæ¶ãããšããŒã¢ã³ãåæ¢ããŸãã ããã¯ãã¹ãŠãªã³ã©ã€ã³ã§è¡ãããã·ã¹ãã ãåèµ·åããå¿ èŠã¯ãããŸããã ãã®ãã¯ããã¯ã¯ãUSB Wi-Fi ã¢ããã¿ãŒã Raspberry ã«æ¥ç¶ããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
次ã®ããšãã§ããããã«ãªããŸããã
# systemctl enable hostapd
# reboot
7. ã€ãã¿ãã«
ããã£ïŒïŒã ©ã¯ããã¯ãïŒ ãªã systemdã æ°ããã³ã³ãã€ã³ã¯ãããŸãã (圢åŒã¯ ãã¡ã€ã¢ãŠã©ãŒã«ïŒãçµå±åãããšããã£ãŠããŸããŸãã
å€ãè¯ããã®ã䜿ããŸããã iptablesã®ãµãŒãã¹ã¯ãéå§åŸããããã¯ãŒã¯ ã«ãŒã«ãã«ãŒãã«ã«ããŒãããåžžé§ããããªãœãŒã¹ãæ¶è²»ããã«éãã«ã·ã£ããããŠã³ããŸãã systemd ã«ã¯ãšã¬ã¬ã³ããªæ©èœããããŸã IPãã¹ã«ã¬ãŒã=, ãã ããã¢ãã¬ã¹å€æ (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
äžèšã®ã¹ã¯ãªãããå®è¡ãããšãRaspberry ãšã®æ°ããæç· SSH æ¥ç¶ã確ç«ã§ããªããªããŸãã ããã§ããWi-Fi ã«ãŒã¿ãŒãäœæããŸãããããã©ã«ãã§ã¯ãã€ã³ã¿ãŒãããçµç±ãã§ã®ã¢ã¯ã»ã¹ãçŠæ¢ãããŠããŸãããçŸåšã¯ãç¡ç·ãã§ã®ã¿ã¢ã¯ã»ã¹å¯èœã§ãã ãããã€ããŒã®ã€ãŒãµããã ã±ãŒãã«ãæ¥ç¶ããŠããµãŒãã£ã³ãéå§ããŸãã
8. ããŒãã¹: +2,4GHz
äžèšã®å³é¢ã䜿çšããŠæåã® Raspberry ã«ãŒã¿ãŒãçµã¿ç«ãŠããšããWi-Fi èšèšã®å¶éã«ããããã©ãºããªãŒãããŸã£ãã衚瀺ãããªã家åºå ã®ã¬ãžã§ãããå€æ°ããããšãããããŸããã ãã®å Žåã®ãç¡ç·ãã®æ倧é床㯠802.11 Mbit ãè¶ ãããç§ã®ãæ°ã«å ¥ãã®ã€ã³ã¿ãŒããã ãããã€ããŒã¯ 40 Mbit (ã±ãŒãã«çµç±) ãæäŸããŠãããã®ã§ã100b/g/n ã§åäœããããã«ã«ãŒã¿ãŒãåæ§æããã®ã¯ã¹ããŒããšã¯èšããŸããã§ããã
å®éããã®åé¡ã«å¯Ÿãã解決çã¯ãã§ã«çºæãããŠããŸããããã¯ã2,4 GHz ã®åšæ³¢æ°ã§åäœãã XNUMX çªç®ã® Wi-Fi ã€ã³ã¿ãŒãã§ã€ã¹ãš XNUMX çªç®ã®ã¢ã¯ã»ã¹ ãã€ã³ãã§ãã è¿ãã®å±å°ã§ãXNUMX ã€ç®ã§ã¯ãªã XNUMX ã€ç®ã® 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
ããã ãã§ãïŒ ããã€ãã¹ã«ããšãã©ãºããªãŒãèªäœãåŒã£åŒµã£ãŠãåšå²ã®ã¯ã€ã€ã¬ã¹ãããã¯ãŒã¯ãèŠãŠãã ããã
æåŸã«ãRaspberry ã® USB Wi-Fi ã¢ããã¿ãŒãšé»æºã®å質ã«ã€ããŠèŠåããããšæããŸãã æ¥ç¶ããããããããã€ãã¹ã«ãã¯ãçæéã®é»æ°çãã©ãã«ã«ãããã©ãºããªãŒããªãŒãºããåŒãèµ·ããããšããããŸãã
åºæïŒ habr.com