Na internetu postoji ogromna količina informacija o stvaranju Wi-Fi pristupnih točaka na temelju jednopločnog računala Raspberry. U pravilu, to znači korištenje operativnog sustava Raspbian izvornog za Raspberry.
Budući da sam pristaša sustava temeljenih na RPM-u, nisam mogao proći pored ovog malog čuda i ne isprobati svoj voljeni CentOS na njemu.
Članak sadrži upute za izradu 5GHz/AC Wi-Fi usmjerivača od Raspberry Pi 3 Model B+ temeljenog na CentOS operativnom sustavu. Bit će tu nekoliko standardnih, ali malo poznatih trikova, a kao bonus - crtež za povezivanje dodatne Wi-Fi opreme na Raspberry, omogućujući mu da istovremeno radi u nekoliko načina (2,4+5GHz).
(mješavina slobodno dostupnih slika)
Napomenimo odmah da neke kozmičke brzine neće raditi. Iscijedim maksimalno 100 Mbps iz svog Raspberryja putem zraka, a to pokriva brzinu mog internetskog davatelja. Zašto vam treba tako tromi AC, ako u teoriji možete dobiti pola gigabita čak i na N? Ako ste si postavili ovo pitanje, onda idite u trgovinu kupiti pravi router s osam vanjskih antena.
0. Što će vam trebati
- Zapravo, sam “proizvod od maline” je kalibra: Pi 3 Model B+ (za postizanje priželjkivanih brzina i kanala od 5 GHz);
- Dobar microSD >= 4 GB;
- Radna stanica s Linuxom i microSD čitačem/pisačem;
- Dostupnost dovoljnih vještina u Linuxu, članak je za obučenog Geeka;
- Žičana mrežna (eth0) povezanost između Raspberry i Linuxa, pokretanje DHCP poslužitelja na lokalnoj mreži i pristup Internetu s oba uređaja.
Mali komentar na posljednju točku. “Što je bilo prije, jaje ili...” kako napraviti Wi-Fi usmjerivač bez ikakve opreme za pristup internetu? Ostavimo ovu zabavnu vježbu izvan okvira članka i jednostavno pretpostavimo da je Raspberry žicom spojen na lokalnu mrežu i ima pristup Internetu. U ovom slučaju nećemo trebati dodatni TV i manipulator za postavljanje "maline".
1. Instalirajte CentOS
U vrijeme pisanja ovog članka, pokrenuta verzija CentOS-a na uređaju je 32-bitna. Negdje na World Wide Webu naišao sam na mišljenja da su performanse takvih OS-a na 64-bitnoj ARM arhitekturi smanjene za čak 20%. Ostaviću ovaj trenutak bez komentara.
Na Linuxu preuzmite minimalnu sliku s kernelom "-RaspberryPI-"i zapišite ga na microSD:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Prije početka korištenja slike, uklonit ćemo s nje SWAP particiju, proširiti root na cijeli dostupni volumen i riješiti se SELinuxa. Algoritam je jednostavan: napravite kopiju root-a na Linuxu, izbrišite sve particije s microSD-a osim prve (/boot), napravite novi root i vratite njegov sadržaj iz kopije.
Primjer potrebnih radnji (ozbiljan izlaz konzole)
# 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
Nakon raspakiranja sadržaja root particije, vrijeme je da napravite neke promjene na njemu.
Onemogući SELinux u /mnt/etc/selinux/config:
SELINUX=disabled
Uređivanje /mnt/etc/fstab, ostavljajući u njemu samo dva unosa o particijama: boot (/boot, bez promjena) i root (mijenjamo UUID vrijednost, što se može saznati proučavanjem izlaza naredbe blkid na Linuxu):
UUID=6a1a0694-8196-4724-a58d-edde1f189b31 / ext4 defaults,noatime 0 0
UUID=6938-F4F2 /boot vfat defaults,noatime 0 0
Konačno, mijenjamo parametre pokretanja jezgre: specificiramo novu lokaciju za korijensku particiju, onemogućujemo izlaz informacija o ispravljanju pogrešaka i (po izboru) zabranjujemo jezgri da dodjeljuje IPv6 adrese na mrežnim sučeljima:
# cd
# umount /mnt
# mount /dev/mmcblk0p1 /mnt
Evo sadržaja /mnt/cmdline.txt na sljedeći oblik (jedan redak bez crtica):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
preciznosti:
# cd
# umount /mnt
# sync
Preuređujemo microSD u "malinu", pokrećemo ga i dobivamo mrežni pristup preko ssh-a (root/centos).
2. Postavljanje CentOS-a
Prva tri nepokolebljiva pokreta: passwd, yum -y ažuriranje, ponovno.
Poklanjamo upravljanje mrežom networkd:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Stvorite datoteku (zajedno s direktorijima) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
Ponovno pokrećemo "malinu" i ponovno dobivamo pristup mreži putem ssh-a (IP adresa se može promijeniti). Obratite pozornost na ono što se koristi / Etc / resolv.conf, koju je ranije stvorio Network Manager. Stoga, u slučaju problema s rješenjem, uredite njegov sadržaj. Koristiti riješeno u sustavu nećemo.
Uklanjamo "nepotrebno", popravljamo i ubrzavamo učitavanje OS-a:
# 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
Kome treba cron a tko ne probavlja ugrađeni
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
# vi /etc/systemd/journald.conf
Onemogućite korištenje IPv6 od strane osnovnih usluga (ako je potrebno)/ Etc / ssh / sshd_config:
AddressFamily inet
/etc/sysconfig/chronyd:
OPTIONS="-4"
Relevantnost vremena na "malini" je važna stvar. Budući da izvan kutije ne postoji hardverska mogućnost spremanja trenutnog stanja sata nakon ponovnog pokretanja, potrebna je sinkronizacija. Vrlo dobar i brz demon za ovo je nijom - već je instaliran i pokreće se automatski. NTP poslužitelje možete promijeniti na one najbliže.
/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
Za postavljanje vremenske zone koju ćemo koristiti trik. Budući da nam je cilj stvoriti Wi-Fi router koji radi na frekvencijama od 5GHz, pripremit ćemo se za iznenađenja unaprijed regulator:
# yum info crda
Sažetak: Demon usklađenosti s propisima za 802.11 bežično umrežavanje
Ovaj zli dizajn, također temeljen na vremenskoj zoni, "zabranjuje" korištenje (u Rusiji) frekvencija od 5 GHz i kanala s "visokim" brojevima. Trik je postaviti vremensku zonu bez korištenja imena kontinenata/gradova, odnosno umjesto:
# timedatectl set-timezone Europe/Moscow
Pritišćemo:
# timedatectl set-timezone Etc/GMT-3
I završni detalji frizure sustava:
# 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 dodaci
Sve što je gore rečeno može se smatrati potpunim uputama za instaliranje "vanilinog" CentOS-a na Raspberry Pi. Trebali biste završiti s računalom koje se (ponovno) podiže za manje od 10 sekundi, koristi manje od 15 megabajta RAM-a i 1.5 gigabajta microSD (zapravo manje od 1 gigabajta zbog nepotpunog /boot-a, ali budimo iskreni).
Da biste instalirali softver Wi-Fi pristupne točke na ovaj sustav, morat ćete malo proširiti mogućnosti standardne distribucije CentOS-a. Prije svega, nadogradimo upravljački program (firmware) ugrađenog Wi-Fi adaptera. Na početnoj stranici projekta piše:
Wifi na Raspberry 3B i 3B+
Projekt CentOS ne smije distribuirati Raspberry PI 3B/3B+ firmware datoteke. Možete koristiti sljedeće članke da biste razumjeli problem, nabavili firmware i postavili wifi.
Ono što je zabranjeno za CentOS projekt nama nije zabranjeno za osobnu upotrebu. Distribucijski Wi-Fi firmware u CentOS-u zamjenjujemo odgovarajućim od Broadcom programera (te iste omražene binarne mrlje...). To će vam posebice omogućiti korištenje AC-a u načinu rada pristupne točke.
Wi-Fi firmware nadogradnjaSaznajte model uređaja i trenutnu verziju firmvera:
# 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
Vidimo da je verzija firmvera 7.45.18 s datumom 01.03.2015. i zapamtite sljedeći niz brojeva: 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
Rezultirajuće datoteke firmvera Wi-Fi adaptera moraju se kopirati i zamijeniti s "malina" u direktoriju /usr/lib/firmware/brcm/
Ponovno pokrećemo budući ruter i zadovoljno se smiješimo:
# 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
Verzija: 7.45.154 od 27.02.2018.
I naravno 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. Konfiguracija mreže i predstojeći izazovi
Kao što smo se gore dogovorili, "malina" je povezana "žicom" s lokalnom mrežom. Pretpostavimo da pružatelj pruža pristup Internetu na potpuno isti način: adresu na javnoj mreži dinamički izdaje DHCP poslužitelj (možda s MAC vezanjem). U ovom slučaju, nakon završnog podešavanja maline, samo trebate "utaknuti" kabel provajdera u nju i gotovi ste. Korištenje autorizacije systemd-mreža - tema je zasebnog članka i ovdje se ne raspravlja.
Raspberryjevo Wi-Fi sučelje je lokalna mreža, a ugrađeni Ethernet adapter (eth0) je vanjski. Označimo lokalnu mrežu statički, na primjer: 192.168.0.0/24. Adresa maline: 192.168.0.1. DHCP poslužitelj radit će na vanjskoj mreži (Internet).
Paralelni kaos (lirska digresija)Lennart Pottering sastavio je vlastiti program systemd Vrlo dobro. Ovaj systemd druge programe pokreće tako brzo da se oni, ne stigavši se oporaviti od sučevog zvižduka, spotaknu i padnu na startu, a da nisu ni započeli svoju stazu s preprekama.
Ali ozbiljno, agresivna paralelizacija pokrenutih procesa na početku systemd OS-a svojevrsni je "magareći most" za iskusne sekvencijalne LSB stručnjake. Srećom, uvođenje reda u ovaj "paralelni kaos" pokazalo se jednostavnim, iako ne uvijek očitim.
Stvaramo dva virtualna sučelja mosta s konstantnim imenima: lan и blijed. Na prvi ćemo “spojiti” Wi-Fi adapter(e), a na drugi eth0 “raspberry”.
/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=da eliminira potrebu za nagovještajem jezgre putem sysctl-a za omogućavanje usmjeravanja.
MACAadresa= Odkomentirajmo i promijenimo ako je potrebno.
Prvo "spojimo" eth0. Sjećamo se "problema uniformnosti" i koristimo samo MAC adresu ovog sučelja, koja se može saznati, na primjer, ovako:
# cat /sys/class/net/eth0/address
Mi stvaramo /etc/systemd/network/eth.network:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Network]
Bridge=wan
Brišemo prethodnu konfiguracijsku datoteku eth0, ponovno pokrećemo Raspberry i dobivamo pristup mreži (IP adresa će se najvjerojatnije promijeniti):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Za izradu Wi-Fi pristupnih točaka ništa nije bolje od par slatkih dnsmasq + hostapd još nisam shvatio. Po mom mišljenju.
Ako je netko zaboravio, onda...
Počnimo s dnsmasq:
# yum install dnsmasq
predložak / 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
uredite po svom ukusu.
minimalistički /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
“Čarolija” ovdje leži u parametru vezano-dinamički, koji govori dnsmasq demonu da pričeka dok se ne pojavi na sustavu sučelje=lan, a ne pasti u nesvijest od napadaja ponosne usamljenosti nakon starta.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
I na kraju, čarobne hostapd konfiguracije. Ne sumnjam da netko čita ovaj članak u potrazi upravo za ovim dragocjenim stihovima.
Prije instaliranja hostapd-a morate prevladati "problem uniformnosti". Ugrađeni Wi-Fi adapter wlan0 može jednostavno promijeniti svoje ime u wlan1 pri povezivanju dodatne USB Wi-Fi opreme. Stoga ćemo popraviti nazive sučelja na sljedeći način: smislit ćemo jedinstvena imena za (bežične) adaptere i vezati ih za MAC adrese.
Za ugrađeni Wi-Fi adapter, koji je još uvijek wlan0:
# cat /sys/class/net/wlan0/address
b8:27:eb:xx:xx:xx
Mi stvaramo /etc/systemd/network/wl0.link:
[Match]
MACAddress=b8:27:eb:xx:xx:xx
[Link]
Name=wl0
Sad ćemo se u to uvjeriti wl0 - Ovo je ugrađeni Wi-Fi. Ponovno pokrećemo Raspberry kako bismo se uvjerili u to.
Instalirati:
# yum install hostapd wireless-tools
Konfiguracijska datoteka /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
Ne zaboravljajući ni na trenutak
# hostapd /etc/hostapd/hostapd.conf
hostapd će se pokrenuti u interaktivnom načinu rada, emitirajući svoje stanje konzoli. Ako nema grešaka, tada će se klijenti koji podržavaju AC mod moći spojiti na pristupnu točku. Za zaustavljanje hostapda - Ctrl-C.
Sve što preostaje je omogućiti hostapd u pokretanju sustava. Ako napravite standardnu stvar (systemctl enable hostapd), tada nakon sljedećeg ponovnog pokretanja možete dobiti demona koji se "valja u krvi" s dijagnozom "sučelje wl0 nije pronađeno". Kao rezultat "paralelnog kaosa", hostapd se pokrenuo brže nego što je kernel pronašao bežični adapter.
Internet je pun lijekova: od prisilnog timeouta prije pokretanja daemona (nekoliko minuta), do drugog daemona koji prati izgled sučelja i (ponovno) pokreće hostpad. Rješenja su dosta izvediva, ali užasno ružna. Veliku zovemo u pomoć systemd sa svojim “ciljevima” i “zadacima” i “ovisnostima”.
Kopirajte datoteku usluge distribucije u /etc/systemd/system/hostapd.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system
i svesti njegov sadržaj na sljedeći oblik:
[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
Čarolija ažurirane servisne datoteke leži u dinamičkom povezivanju hostapd-a s novom metom - sučeljem wl0. Kada se sučelje pojavi, demon se pokreće; kada nestane, zaustavlja se. I sve je to online - bez ponovnog pokretanja sustava. Ova će tehnika biti posebno korisna pri spajanju USB Wi-Fi adaptera na Raspberry.
Sada možeš:
# systemctl enable hostapd
# reboot
7. IPTABLES
“Što???” © Da, da! Nijedan systemd. Nema novonastalih kombinacija (u obliku firewalld), koji na kraju čine istu stvar.
Iskoristimo onu dobru staru iptables, čiji će servisi nakon pokretanja učitati mrežna pravila u kernel i tiho se ugasiti bez ostanka rezidentnog i bez trošenja resursa. systemd ima elegantan IPMasquerade=, no ipak ćemo prijevod adrese (NAT) i firewall povjeriti iptablesu.
Instalirati:
# yum install iptables-services
# systemctl enable iptables ip6tables
Više volim pohraniti konfiguraciju iptables kao skriptu (primjer):
#!/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
Izvršavamo gornju skriptu i gubimo mogućnost uspostavljanja novih žičnih SSH veza s Raspberryjem. Tako je, napravili smo Wi-Fi usmjerivač, kojemu je pristup "putem interneta" prema zadanim postavkama zabranjen - sada samo "bežično". Spajamo Ethernet kabel provajdera i počinjemo surfati!
8. Bonus: +2,4 GHz
Kada sam sastavljao prvi Raspberry router prema gore opisanom crtežu, otkrio sam brojne gadgete u svom kućanstvu koji, zbog svojih ograničenja Wi-Fi dizajna, uopće nisu mogli vidjeti "malinu". Rekonfiguracija rutera za rad u 802.11b/g/n bila je nesportska, budući da maksimalna brzina “bez zraka” u ovom slučaju nije prelazila 40 Mbita, a moj omiljeni internetski provajder nudi mi 100 (kabelom).
Zapravo, rješenje problema već je izmišljeno: drugo Wi-Fi sučelje koje radi na frekvenciji od 2,4 GHz i druga pristupna točka. Na obližnjem štandu kupio sam ne prvu, već drugu USB Wi-Fi “zviždaljku” na koju sam naišao. Prodavatelja su mučila pitanja o čipsetu, kompatibilnosti s ARM Linux kernelima i mogućnosti rada u AP modu (on je prvi počeo).
Konfiguriramo "zviždaljku" po analogiji s ugrađenim Wi-Fi adapterom.
Prvo, preimenujmo ga u 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
Upravljanje novim Wi-Fi sučeljem povjerit ćemo zasebnom hostapd daemonu, koji će se pokretati i zaustavljati ovisno o prisutnosti strogo definirane "zviždaljke" u sustavu: wl1.
Konfiguracijska datoteka /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]
Sadržaj ove datoteke izravno ovisi o modelu USB Wi-Fi adaptera, tako da vam banalno kopiranje / lijepljenje može uspjeti.
Kopirajte datoteku usluge distribucije u /etc/systemd/system/hostapd2.service:
# cp -fv /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd2.service
i svesti njegov sadržaj na sljedeći oblik:
[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
Sve što preostaje je omogućiti novu instancu hostapd-a:
# systemctl enable hostapd2
To je sve! Povucite "zviždaljku" i samu "malinu", pogledajte bežične mreže oko sebe.
I na kraju, želim vas upozoriti na kvalitetu USB Wi-Fi adaptera i napajanja Raspberry-a. Povezana "vruća zviždaljka" ponekad može uzrokovati "smrzavanje malina" zbog kratkotrajnih električnih problema.
Izvor: www.habr.com