Распберри Пи + ЦентОС = Ви-Фи Хотспот (или распберри рутер са црвеним шеширом)

На Интернету постоји огромна количина информација о креирању Ви-Фи приступних тачака на бази Распберри рачунара са једном плочом. По правилу, то значи коришћење Распбиан оперативног система који је рођен за Распберри.

Пошто сам присташа система заснованих на РПМ-у, нисам могао да прођем поред овог малог чуда и да не испробам свој вољени ЦентОС на њему.

Чланак пружа упутства за прављење 5ГХз/АЦ Ви-Фи рутера од Распберри Пи 3 Модел Б+ заснованог на ЦентОС оперативном систему. Биће неколико стандардних, али мало познатих трикова, а као бонус – цртеж за повезивање додатне Ви-Фи опреме на Распберри, омогућавајући му да истовремено ради у неколико режима (2,4+5ГХз).

Распберри Пи + ЦентОС = Ви-Фи Хотспот (или распберри рутер са црвеним шеширом)
(мешавина слободно доступних слика)

Одмах да приметимо да неке космичке брзине неће радити. Из свог Распберри-а стиснем максимално 100 Мбпс преко ваздуха, и то покрива брзину мог Интернет провајдера. Зашто вам треба тако тром АЦ, ако у теорији можете добити пола гигабита чак и на Н? Ако сте себи поставили ово питање, онда идите у продавницу да купите прави рутер са осам спољних антена.

0. Шта ће вам требати

  • Заправо, сам „производ од малине“ је калибра: Пи 3 Модел Б+ (за постизање жељених брзина и канала од 5 ГХз);
  • Добар мицроСД >= 4ГБ;
  • Радна станица са Линук и мицроСД читачем/писачем;
  • Доступност довољних вештина у Линуку, чланак је за обученог штребера;
  • Жичана мрежна (етх0) повезаност између Распберри-а и Линук-а, покретање ДХЦП сервера на локалној мрежи и приступ Интернету са оба уређаја.

Мали коментар на последњу тачку. „Шта је било прво, јаје или...“ како направити Ви-Фи рутер у одсуству опреме за приступ Интернету? Оставимо ову забавну вежбу ван оквира чланка и једноставно претпоставимо да је Распберри жицом повезан са локалном мрежом и има приступ Интернету. У овом случају неће нам требати додатни телевизор и манипулатор за подешавање „малине“.

1. Инсталирајте ЦентОС

Почетна страница пројекта

У време писања овог чланка, покренута верзија ЦентОС-а на уређају је 32-битна. Негде на Ворлд Виде Веб-у сам наишао на мишљења да су перформансе таквих ОС-а на 64-битној АРМ архитектури смањене за чак 20%. Оставићу овај тренутак без коментара.

На Линук-у, преузмите минималну слику са кернелом "-РаспберриПИ-"и запишите на мицроСД:

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

Пре него што почнемо да користимо слику, из ње ћемо уклонити СВАП партицију, проширити роот на цео доступни волумен и ослободити се СЕЛинук-а. Алгоритам је једноставан: направите копију роот-а на Линук-у, избришите све партиције са мицроСД-а осим прве (/боот), направите нови роот и вратите његов садржај из копије.

Пример потребних радњи (озбиљан излаз конзоле)

# 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=disabled

Уређивање /мнт/етц/фстаб, остављајући у њему само два уноса о партицијама: боот (/боот, без промена) и роот (мењамо УУИД вредност, што се може сазнати проучавањем излаза команде блкид на Линук-у):

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

Коначно, мењамо параметре покретања кернела: наводимо нову локацију за роот партицију, онемогућавамо излаз информација за отклањање грешака и (опционо) забрањујемо кернелу да додељује ИПв6 адресе на мрежним интерфејсима:

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

Ево садржаја /мнт/цмдлине.ткт на следећи образац (један ред без цртица):

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

Спреман:

# cd
# umount /mnt
# sync

Преуређујемо мицроСД у „малина“, покрећемо га и добијамо приступ мрежи преко ссх-а (роот/центос).

2. Подешавање ЦентОС-а

Прва три непоколебљива покрета: пассвд, иум -и ажурирање, рестарт.

Поклањамо управљање мрежом умрежени:

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

Направите датотеку (заједно са директоријумима) /етц/системд/нетворк/етх0.нетворк:

[Match]
Name=eth0

[Network]
DHCP=ipv4

Поново покрећемо „малину“ и поново добијамо приступ мрежи преко ссх-а (ИП адреса се може променити). Обратите пажњу на оно што се користи / Етц / ресолв.цонф, коју је раније креирао Нетворк Манагер. Стога, у случају проблема са решавањем, уредите његов садржај. Користи системски решен нећемо.

Уклањамо „непотребно“, поправљамо и убрзавамо учитавање ОС-а:

# 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

Који треба црон а ко не свари уграђено системд тајмери, може утврдити шта недостаје. / вар / лог- и погледај кроз јоурналцтл. Ако вам је потребна историја евиденције (подразумевано, информације се чувају само од тренутка када се систем покрене):

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

Онемогућите коришћење ИПв6 од стране основних услуга (ако је потребно)/ етц / ссх / ссхд_цонфиг:

AddressFamily inet

/етц/сисцонфиг/цхронид:

OPTIONS="-4"

Релевантност времена на „малини“ је важна ствар. Пошто ван кутије не постоји хардверска могућност да се сачува тренутно стање сата након поновног покретања, потребна је синхронизација. Веома добар и брз демон за ово је хронија - већ инсталиран и аутоматски се покреће. Можете променити НТП сервере на најближе.

/етц/цхрони.цонф:

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

Да бисмо поставили временску зону коју ћемо користити трик. Пошто је наш циљ да направимо Ви-Фи рутер који ради на фреквенцијама од 5ГХз, припремићемо се за изненађења унапред регулатор:

# иум инфо црда
Резиме: Демон усклађености са прописима за бежично умрежавање 802.11

Овај зли дизајн, такође заснован на временској зони, „забрањује“ коришћење (у Русији) фреквенција од 5 ГХз и канала са „високим“ бројевима. Трик је да подесите временску зону без коришћења имена континената/градова, односно уместо:

# timedatectl set-timezone Europe/Moscow

Притиснемо:

# timedatectl set-timezone Etc/GMT-3

И последњи додири фризуре система:

# hostnamectl set-hostname router

/роот/.басх_профиле:

. . .

# User specific environment and startup programs

export PROMPT_COMMAND="vcgencmd measure_temp"
export LANG=en_US.UTF-8
export PATH=$PATH:$HOME/bin

3. ЦентОС додаци

Све што је горе речено може се сматрати комплетним упутствима за инсталирање „ванилије“ ЦентОС-а на Распберри Пи. Требало би да добијете рачунар који се (поновно) покреће за мање од 10 секунди, користи мање од 15 мегабајта РАМ-а и 1.5 гигабајта мицроСД (заправо мање од 1 гигабајта због непотпуног /боот-а, али будимо искрени).

Да бисте инсталирали софтвер Ви-Фи приступне тачке на овај систем, мораћете мало да проширите могућности стандардне ЦентОС дистрибуције. Пре свега, надоградимо драјвер (фирмвер) уграђеног Ви-Фи адаптера. Почетна страница пројекта каже:

Ви-Фи на Распберри 3Б и 3Б+

ЦентОС пројекат не сме да дистрибуира датотеке фирмвера Распберри ПИ 3Б/3Б+. Можете користити следеће чланке да бисте разумели проблем, набавили фирмвер и подесили Ви-Фи.

Оно што је забрањено за пројекат ЦентОС није нам забрањено за личну употребу. Ми замењујемо дистрибутивни Ви-Фи фирмвер у ЦентОС-у одговарајућим од Броадцом програмера (те исте омражене бинарне мрље...). Ово ће вам, посебно, омогућити да користите АЦ у режиму приступне тачке.

Надоградња фирмвера за Ви-ФиСазнајте модел уређаја и тренутну верзију фирмвера:

# 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 (брцмфмац43455-сдио.бин).

Преузмите тренутну Распбиан слику. Лењи људи могу да запишу слику на мицроСД и одатле преузму датотеке са фирмвером. Или можете монтирати основну партицију слике у Линуку и копирати оно што вам треба одатле:

# 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

Резултирајуће датотеке фирмвера Ви-Фи адаптера морају се копирати и заменити са „малина“ у директоријум /уср/либ/фирмваре/брцм/

Поново покрећемо будући рутер и задовољно се смејемо:

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

И наравно ЕПЕЛ:

# 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. Мрежна конфигурација и предстојећи изазови

Као што смо се претходно договорили, „малина“ је „жицом“ повезана са локалном мрежом. Претпоставимо да провајдер обезбеђује приступ Интернету на потпуно исти начин: адресу на јавној мрежи динамички издаје ДХЦП сервер (можда уз МАЦ везу). У овом случају, након коначног подешавања малине, потребно је само да "укључите" кабл провајдера у њега и готови сте. Ауторизација коришћењем системд-нетворкд - тема је посебног чланка и о њој се овде не говори.

Распберри-јев Ви-Фи интерфејс(и) је локална мрежа, а уграђени Етхернет адаптер (етх0) је екстерни. Хајде да статички нумеришемо локалну мрежу, на пример: 192.168.0.0/24. Распберри адреса: 192.168.0.1. ДХЦП сервер ће радити на спољној мрежи (Интернет).

Проблем конзистентности именовања и познати гватемалски програмер - две невоље које чекају свакога ко конфигурише мрежне интерфејсе и сервисе у системд дистрибуцијама.

Паралелни хаос (лирска дигресија)Леннарт Поттеринг је саставио сопствени програм системд Врло добар. Ово системд тако брзо покреће друге програме да се они, немајући времена да се опораве од судијског звиждука, спотакну и падају на старту, а да нису ни кренули на своју стазу препрека.

Али озбиљно, агресивна паралелизација покренутих процеса на почетку системског ОС-а је нека врста „магарећег моста“ за искусне секвенцијалне ЛСБ стручњаке. На срећу, увођење реда у овај „паралелни хаос“ показало се једноставним, иако не увек очигледним.

Креирамо два виртуелна интерфејса моста са константним именима: ЛАН и ван. „Спојићемо“ Ви-Фи адаптер(е) на први, а етх0 „малина“ на други.

/етц/системд/нетворк/лан.нетдев:

[NetDev]
Name=lan
Kind=bridge

/етц/системд/нетворк/лан.нетворк:

[Match]
Name=lan

[Network]
Address=192.168.0.1/24
IPForward=yes

/етц/системд/нетворк/ван.нетдев:

[NetDev]
Name=wan
Kind=bridge
#MACAddress=xx:xx:xx:xx:xx:xx

/етц/системд/нетворк/ван.нетворк:

[Match]
Name=wan

[Network]
DHCP=ipv4
IPForward=yes

ИПФорвард=да елиминише потребу да се наговештава кернелу преко сисцтл-а да би се омогућило рутирање.
МАЦААддресс= Хајде да поништимо коментаре и променимо ако је потребно.

Прво „повезујемо“ етх0. Сетимо се „проблема уједначености“ и користимо само МАЦ адресу овог интерфејса, што се може сазнати, на пример, овако:

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

Ми стварамо /етц/системд/нетворк/етх.нетворк:

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

[Network]
Bridge=wan

Избришемо претходну конфигурациону датотеку етх0, поново покрећемо Распберри и добијамо приступ мрежи (ИП адреса ће се највероватније променити):

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

5.ДНСМАСК

За прављење Ви-Фи приступних тачака, ништа није боље од слатког днсмаск + хостапд још нисам схватио. По мом мишљењу.

Ако је неко заборавио, онда...хостапд - ово је ствар која контролише Ви-Фи адаптере (посебно ће се побринути за њихово повезивање са виртуелним ЛАН „малине“), овлашћује и региструје бежичне клијенте.

днсмаск — конфигурише мрежни стог клијената: издаје ИП адресе, ДНС сервере, подразумевани гатеваи и сличне ужитке.

Почнимо са днсмаск-ом:

# yum install dnsmasq

Узорак / Етц / ресолв.цонф:

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

уредите га по свом укусу.

минималистички /етц/днсмаск.цонф:

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

„Магија“ овде лежи у параметру бинд-динамиц, који говори днсмаск демону да сачека док се не појави на систему интерфејс=лан, а не онесвестити се од напада поносне усамљености после старта.

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

6. ХОСТАПД

И коначно, магичне хостапд конфигурације. Не сумњам да неко чита овај чланак у потрази за управо овим драгоценим редовима.

Пре инсталирања хостапд-а, морате да превазиђете „проблем уједначености“. Уграђени Ви-Фи адаптер влан0 може лако да промени име у влан1 када повеже додатну УСБ Ви-Фи опрему. Стога ћемо поправити имена интерфејса на следећи начин: смислићемо јединствена имена за (бежичне) адаптере и везати их за МАЦ адресе.

За уграђени Ви-Фи адаптер, који је још увек влан0:

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

Ми стварамо /етц/системд/нетворк/вл0.линк:

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

[Link]
Name=wl0

Сада ћемо се у то уверити влКСНУМКС - Ово је уграђени Ви-Фи. Поново покрећемо Распберри да бисмо се уверили у ово.

Инсталирај:

# yum install hostapd wireless-tools

Конфигурациони фајл /етц/хостапд/хостапд.цонф:

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

хостапд ће се покренути у интерактивном режиму, емитујући своје стање на конзоли. Ако нема грешака, клијенти који подржавају АЦ режим ће моћи да се повежу на приступну тачку. Да бисте зауставили хостапд - Цтрл-Ц.

Остаје само да омогућите хостапд при покретању система. Ако урадите стандардну ствар (системцтл омогући хостапд), онда након следећег поновног покретања можете добити демона који се „ваља у крви“ са дијагнозом „интерфејс вл0 није пронађен„. Као резултат „паралелног хаоса“, хостапд се покренуо брже него што је кернел пронашао бежични адаптер.

Интернет је пун лекова: од принудног временског ограничења пре покретања демона (неколико минута), до другог демона који надгледа изглед интерфејса и (поновно) покреће хостпад. Решења су прилично изводљива, али ужасно ружна. Позивамо великог у помоћ системд са својим „циљевима” и „задацима” и „зависностима”.

Копирајте датотеку услуге дистрибуције у /етц/системд/систем/хостапд.сервице:

# 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

Магија ажуриране сервисне датотеке лежи у динамичком везивању хостапд-а за нови циљ - вл0 интерфејс. Када се појави интерфејс, демон се покреће; када нестане, престаје. И ово је све на мрежи - без поновног покретања система. Ова техника ће бити посебно корисна када повежете УСБ Ви-Фи адаптер на Распберри.

Сада можете:

# systemctl enable hostapd
# reboot

7. ИПТАБЛЕС

“Шта???” © Да, да! Ниједан системд. Нема новонасталих комбината (у облику фиреваллд), који на крају раде исту ствар.

Хајде да искористимо стари добри iptables, чије ће услуге, након покретања, учитавати мрежна правила у језгро и тихо се гасити без задржавања резидентности и без трошења ресурса. системд има елегантан ИПМаскуераде=, али ћемо и даље поверити превод адресе (НАТ) и заштитни зид иптаблес-у.

Инсталирај:

# yum install iptables-services
# systemctl enable iptables ip6tables

Више волим да сачувам иптаблес конфигурацију као скрипту (пример):

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

Извршавамо горњу скрипту и губимо могућност успостављања нових ожичених ССХ веза са Распберри-јем. Тако је, направили смо Ви-Фи рутер, приступ којем је „преко Интернета“ подразумевано забрањен - сада само „бездушно“. Повезујемо Етхернет кабл провајдера и почињемо да сурфујемо!

8. Бонус: +2,4 ГХз

Када сам саставио први Распберри рутер користећи горе описани цртеж, открио сам бројне уређаје у свом домаћинству који, због ограничења Ви-Фи дизајна, уопште нису могли да виде „малину“. Реконфигурисање рутера да ради у 802.11б/г/н било је неспортско, пошто максимална брзина „преко ваздуха“ у овом случају није прелазила 40 Мбита, а мој омиљени Интернет провајдер ми нуди 100 (путем кабла).

У ствари, решење проблема је већ измишљено: други Ви-Фи интерфејс који ради на фреквенцији од 2,4 ГХз и друга приступна тачка. На оближњој тезги купио сам не прву, већ другу УСБ Ви-Фи „звиждаљку“ на коју сам наишао. Продавца су мучила питања о чипсету, компатибилности са АРМ Линукс језгрима и могућности рада у АП режиму (први је почео).

Конфигуришемо „звиждаљку“ по аналогији са уграђеним Ви-Фи адаптером.

Прво, преименујмо га у влКСНУМКС:

# cat /sys/class/net/wlan0/address 
b0:6e:bf:xx:xx:xx

/етц/системд/нетворк/вл1.линк:

[Match]
MACAddress=b0:6e:bf:xx:xx:xx

[Link]
Name=wl1

Управљање новим Ви-Фи интерфејсом поверићемо посебном хостапд демону, који ће се покретати и заустављати у зависности од присуства стриктно дефинисаног „звиждука“ у систему: вл1.

Конфигурациони фајл /етц/хостапд/хостапд2.цонф:

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]

Садржај ове датотеке директно зависи од модела УСБ Ви-Фи адаптера, тако да вам банално копирање/пасте може изневерити.

Копирајте датотеку услуге дистрибуције у /етц/системд/систем/хостапд2.сервице:

# 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

Све што остаје је да омогућите нову инстанцу хостапд-а:

# systemctl enable hostapd2

То је све! Повуците „звиждаљку“ и саму „малину“, погледајте бежичне мреже око себе.

И на крају, желим да вас упозорим на квалитет УСБ Ви-Фи адаптера и напајања Распберрија. Повезана „врућа звиждаљка“ понекад може да изазове „смрзавање малине“ због краткотрајних електричних проблема.

Извор: ввв.хабр.цом

Додај коментар