Na Internetu postoji ogromna količina informacija o kreiranju Wi-Fi pristupnih tačaka na bazi Raspberry PC računara sa jednom pločicom. Po pravilu, to znači korištenje Raspbian operativnog sistema koji je izvorni za Raspberry.
Budući da sam pristaša RPM sistema, nisam mogao proći pored ovog malog čuda i ne isprobati moj voljeni CentOS na njemu.
Članak pruža uputstva za pravljenje 5GHz/AC Wi-Fi rutera od Raspberry Pi 3 Model B+ baziranog na CentOS operativnom sistemu. Biće nekoliko standardnih, ali malo poznatih trikova, a kao bonus - crtež za povezivanje dodatne Wi-Fi opreme na Raspberry, omogućavajući mu da istovremeno radi u nekoliko režima (2,4+5GHz).
(miks slobodno dostupnih slika)
Odmah da primijetimo da neke kosmičke brzine neće raditi. Iz svog Raspberryja cijedim maksimalno 100 Mbps preko zraka, i to pokriva brzinu mog Internet provajdera. Zašto vam treba tako trom AC, ako u teoriji možete dobiti pola gigabita čak i na N? Ako ste sebi postavili ovo pitanje, onda idite u prodavnicu da kupite pravi ruter sa osam vanjskih antena.
0. Šta će vam trebati
- Zapravo, sam „proizvod od maline“ je kalibra: Pi 3 Model B+ (za postizanje željenih brzina i kanala od 5 GHz);
- Dobar microSD >= 4GB;
- Radna stanica sa Linuxom i microSD čitačem/pisačem;
- Dostupnost dovoljnih vještina u Linuxu, članak je za obučenog štrebera;
- Žičana mrežna (eth0) povezanost između Raspberry-ja i Linuxa, pokretanje DHCP servera na lokalnoj mreži i pristup internetu sa oba uređaja.
Mali komentar na poslednju tačku. “Šta je bilo prvo, jaje ili...” kako napraviti Wi-Fi ruter u nedostatku opreme za pristup internetu? Ostavimo ovu zabavnu vježbu van okvira članka i jednostavno pretpostavimo da je Raspberry žicom povezan na lokalnu mrežu i ima pristup internetu. U ovom slučaju neće nam trebati dodatni televizor 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 Web-u sam naišao 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 na microSD:
# xzcat CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz |
dd of=/dev/mmcblk0 bs=4M
# sync
Prije nego što počnemo koristiti sliku, iz nje ćemo ukloniti 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 sa microSD-a osim prve (/boot), kreirajte novi root i vratite njegov sadržaj iz kopije.
Primjer potrebnih radnji (teški 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 što raspakujete sadržaj root particije, vrijeme je da napravite neke promjene na njoj.
Onemogućite SELinux in /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 blkid naredbe 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 kernela: specificiramo novu lokaciju za root particiju, onemogućujemo izlaz informacija za otklanjanje grešaka i (opcionalno) zabranjujemo kernelu 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 obrazac (jedan red bez crtica):
root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet ipv6.disable_ipv6=1
Gotovo:
# cd
# umount /mnt
# sync
Preuređivamo microSD u “raspberry”, pokrećemo ga i dobijamo pristup mreži preko ssh-a (root/centos).
2. Postavljanje CentOS-a
Prva tri nepokolebljiva pokreta: passwd, yum -y ažuriranje, reboot.
Poklanjamo upravljanje mrežom umreženo:
# yum install systemd-networkd
# systemctl enable systemd-networkd
# systemctl disable NetworkManager
# chkconfig network off
Kreirajte fajl (zajedno sa direktorijumima) /etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
DHCP=ipv4
Ponovo pokrećemo “raspberry” i ponovo dobijamo pristup mreži preko ssh-a (IP adresa se može promijeniti). Obratite pažnju na ono što se koristi /etc/resolv.conf, koju je ranije kreirao Network Manager. Stoga, u slučaju problema s rješavanjem, uredite njegov sadržaj. Koristi sistemski riješeno 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 ko ne svari ugrađeno
# 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 nema hardverske mogućnosti za spremanje trenutnog stanja sata nakon ponovnog pokretanja, potrebna je sinhronizacija. Vrlo dobar i brz demon za ovo je hronija - već instaliran i automatski se pokreće. NTP servere možete promijeniti na 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 ćemo koristiti trik. Budući da nam je cilj stvoriti Wi-Fi ruter koji radi na 5GHz frekvencijama, pripremit ćemo se za iznenađenja unaprijed regulator:
# yum info crda
Sažetak: Daemon usklađenosti s propisima za 802.11 bežično umrežavanje
Ovaj zli dizajn, takođe zasnovan na vremenskoj zoni, "zabranjuje" upotrebu (u Rusiji) frekvencija od 5 GHz i kanala sa "visokim" brojevima. Trik je u postavljanju vremenske zone bez korištenja naziva kontinenata/gradova, odnosno umjesto:
# timedatectl set-timezone Europe/Moscow
pritisnemo:
# timedatectl set-timezone Etc/GMT-3
I završni detalji frizure sistema:
# 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 kompletnim uputama za instaliranje “vanilije” CentOS-a na Raspberry Pi. Trebalo bi da dobijete računar koji se (ponovno) pokreć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 tačke na ovaj sistem, moraćete malo da proširite mogućnosti standardne CentOS distribucije. Prije svega, nadogradimo drajver (firmver) ugrađenog Wi-Fi adaptera. Početna stranica projekta kaže:
Wifi na Raspberry 3B i 3B+
Raspberry PI 3B/3B+ fajlove firmvera nije dozvoljeno distribuirati od strane CentOS projekta. Možete koristiti sljedeće članke da biste razumjeli problem, nabavili firmver i podesili WiFi.
Ono što je zabranjeno za CentOS projekat nije nam zabranjeno za ličnu upotrebu. Distribucijski Wi-Fi firmver u CentOS-u zamjenjujemo odgovarajućim od Broadcom programera (one iste omražene binarne mrlje...). Ovo će vam, posebno, omogućiti da koristite AC u režimu pristupne tačke.
Nadogradnja Wi-Fi firmveraSaznajte 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 od 01.03.2015/XNUMX/XNUMX, i zapamtite sljedeći skup 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 sa "raspberry" u direktorij /usr/lib/firmware/brcm/
Ponovo 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. Mrežna konfiguracija i predstojeći izazovi
Kao što smo gore dogovorili, „malina“ je „žicom“ povezana na lokalnu mrežu. Pretpostavimo da provajder pruža pristup Internetu na potpuno isti način: adresu na javnoj mreži dinamički izdaje DHCP server (možda sa MAC vezanjem). U ovom slučaju, nakon konačnog podešavanja maline, potrebno je samo da "uključite" kabl provajdera u njega i gotovi ste. Korištenje autorizacije systemd-networkd - tema je posebnog članka i ovdje se ne raspravlja.
Raspberry Wi-Fi interfejs(i) je lokalna mreža, a ugrađeni Ethernet adapter (eth0) je eksterni. Označimo lokalnu mrežu statički, na primjer: 192.168.0.0/24. Raspberry adresa: 192.168.0.1. DHCP server će raditi na vanjskoj mreži (Internet).
Paralelni haos (lirska digresija)Lennart Pottering je sastavio vlastiti program systemd Veoma dobro. Ovo systemd tako brzo pokreće druge programe da se oni, nemajući vremena da se oporave od sudijskog zvižduka, spotaknu i padaju na startu, a da nisu ni krenuli na stazu s preprekama.
Ali ozbiljno, agresivna paralelizacija pokrenutih procesa na početku systemd OS-a je neka vrsta “magarećeg mosta” za iskusne sekvencijalne LSB stručnjake. Na sreću, uvođenje reda u ovaj “paralelni haos” se pokazalo jednostavnim, iako ne uvijek očiglednim.
Kreiramo dva virtuelna bridge interfejsa sa konstantnim imenima: lan и wan. Wi-Fi adapter(e) ćemo “spojiti” na prvi, a eth0 “raspberry” na drugi.
/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 eliminiše potrebu da se nagoveštava kernelu preko sysctl-a da bi se omogućilo rutiranje.
MACAAddress= Poništimo komentare i promijenimo ako je potrebno.
Prvo “povezujemo” eth0. Sjećamo se „problema ujednačenosti“ i koristimo samo MAC adresu ovog interfejsa, što 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
Izbrišemo prethodni konfiguracioni fajl eth0, ponovo pokrećemo Raspberry i dobijamo pristup mreži (IP adresa će se najverovatnije promeniti):
# rm -fv /etc/systemd/network/eth0.network
# reboot
5.DNSMASQ
Za pravljenje Wi-Fi pristupnih tačaka, ništa nije bolje od slatkog dnsmasq + hostapd još nisam shvatio. Po mom mišljenju.
U slučaju da je neko zaboravio, onda...
Počnimo sa dnsmasq-om:
# yum install dnsmasq
Uzorak /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
“Magija” ovdje leži u parametru bind-dynamic, koji govori dnsmasq demonu da pričeka dok se ne pojavi na sistemu interfejs=lan, a ne onesvijestiti se od napadaja ponosne usamljenosti nakon starta.
# systemctl enable dnsmasq
# systemctl start dnsmasq; journalctl -f
6. HOSTAPD
I konačno, čarobne hostapd konfiguracije. Ne sumnjam da neko čita ovaj članak u potrazi za upravo ovim dragocjenim redovima.
Prije instaliranja hostapd-a, morate prevladati “problem ujednačenosti”. Ugrađeni Wi-Fi adapter wlan0 može lako promijeniti ime u wlan1 kada poveže dodatnu USB Wi-Fi opremu. Stoga ćemo popraviti imena interfejsa na sledeći način: smislić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
Sada ćemo biti sigurni u to wl0 - Ovo je ugrađeni Wi-Fi. Ponovo pokrećemo Raspberry da bismo se uvjerili u ovo.
Instaliraj:
# yum install hostapd wireless-tools
Konfiguracioni fajl /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 režimu, prenoseći svoje stanje na konzolu. Ako nema grešaka, klijenti koji podržavaju AC način rada će moći da se povežu na pristupnu tačku. Za zaustavljanje hostapd-a - Ctrl-C.
Sve što ostaje je da omogućite hostapd pri pokretanju sistema. Ako uradite standardnu stvar (systemctl omogući hostapd), onda nakon sljedećeg ponovnog pokretanja možete dobiti demona koji se "valja u krvi" s dijagnozom "interfejs wl0 nije pronađen". Kao rezultat "paralelnog haosa", hostapd se pokrenuo brže nego što je kernel pronašao bežični adapter.
Internet je pun lijekova: od prinudnog vremenskog ograničenja prije pokretanja demona (nekoliko minuta), do drugog demona koji prati izgled interfejsa i (ponovno) pokreće hostpad. Rješenja su prilično izvodljiva, ali užasno ružna. Pozivamo velikog u pomoć systemd sa svojim “ciljevima” i “zadacima” i “zavisnostima”.
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
Magija ažurirane servisne datoteke leži u dinamičkom vezivanju hostapd-a za novi cilj - wl0 interfejs. Kada se pojavi interfejs, demon se pokreće; kada nestane, prestaje. I to je sve na mreži - bez ponovnog pokretanja sistema. Ova tehnika će biti posebno korisna kada povezujete USB Wi-Fi adapter na Raspberry.
Sada možete:
# systemctl enable hostapd
# reboot
7. IPTABLES
“Stha???” © Da, da! Nema systemd. Nema novonastalih kombajna (u obliku firewalld), koji na kraju rade istu stvar.
Koristimo stari dobri iptables, čije će usluge, nakon pokretanja, učitavati mrežna pravila u kernel i tiho se gasiti bez zadržavanja rezidentnosti i bez trošenja resursa. systemd ima elegantan IPMasquerade=, ali ćemo i dalje povjeriti prevod adrese (NAT) i firewall iptables-u.
Instaliraj:
# yum install iptables-services
# systemctl enable iptables ip6tables
Više volim da pohranim iptables konfiguraciju 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čanih SSH veza sa Raspberry-jem. Tako je, napravili smo Wi-Fi ruter, pristup kojem je „preko Interneta“ podrazumevano zabranjen - sada samo „preko zraka“. Povezujemo Ethernet kabel provajdera i počinjemo surfati!
8. Bonus: +2,4GHz
Kada sam sastavio prvi Raspberry ruter koristeći gore opisani crtež, otkrio sam brojne sprave u svom domaćinstvu koje, zbog ograničenja Wi-Fi dizajna, uopće nisu mogle vidjeti "malinu". Rekonfigurisanje rutera da radi u 802.11b/g/n bilo je nesportsko, jer maksimalna brzina “preko zraka” u ovom slučaju nije prelazila 40 Mbita, a moj omiljeni Internet provajder mi nudi 100 (putem kabla).
U stvari, rješenje problema je već izmišljeno: drugi Wi-Fi interfejs koji radi na frekvenciji od 2,4 GHz i druga pristupna tačka. Na obližnjoj tezgi kupio sam ne prvu, već drugu USB Wi-Fi “zviždaljku” na koju sam naišla. Prodavca su mučila pitanja o čipsetu, kompatibilnosti sa 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 interfejsom poverićemo zasebnom hostapd demonu, koji će se pokretati i zaustavljati u zavisnosti od prisustva striktno definisanog „zvižduka“ u sistemu: wl1.
Konfiguracioni fajl /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 direktno ovisi o modelu USB Wi-Fi adaptera, tako da vam banalno kopiranje/paste može propasti.
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 ostaje 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 da vas upozorim na kvalitet USB Wi-Fi adaptera i napajanja Raspberryja. Povezana "vruća zviždaljka" ponekad može uzrokovati "smrzavanje malina" zbog kratkotrajnih električnih problema.
izvor: www.habr.com