amikor megpróbálja kitalálni, miért lassú az internet, nehéz lehet pontosan megtudni, hogy a hálózat melyik eszköze emészti fel az összes sávszélességet. A probléma számos megoldása megköveteli, hogy a szoftvert minden monitorozandó eszközre telepítsék. Ehelyett megpróbáltam létrehozni egy egyedi Raspberry Pi hálózati monitort.
saját útválasztó építése
a Raspberry Pi 4 megfelelő körülmények között nagyon alkalmas útválasztó.
de először tisztázzuk a feltételeket.
a kapcsoló az adatokat a hálózat körül keveri. Az útválasztó segít irányítani ezt a forgalmat.
a “router” felépítése ebben az összefüggésben azt jelenti, hogy DHCP-t, DNS-t és tűzfalat fogunk megvalósítani.
Ha nem tudja, mit jelent ez, ne aggódjon. Most tegyük fel, hogy van egy Raspberry Pi 4 (lásd az alkatrészek listáját az alján). A” 4-es verzió ” bit azért fontos, mert lényegesen jobb hálózati kártyával rendelkezik (eth0
), mint a korábbi modellek (Gigabit). Ez az RPI útválasztóként való használatának legnagyobb korlátozására utal: a sávszélesség 1000 Mbps-ra van korlátozva.
a sávszélességet és az átviteli sebességet gyakran összekeverik.
a “szélesség” sáv az a maximális adatmennyiség, amely a rendszeren keresztül áramolhat (ebben az esetben az otthonból az internetre). Az áteresztőképesség azt méri, hogy mekkora sávszélességet használnak bármely pillanatban.
Ez az útmutató egyébként minden olyan Debian-alapú linux rendszeren működik, amelyet be szeretne kapcsolni egy útválasztóba. Jobb hardvert használhat egy még hatékonyabb megoldás létrehozásához. Azért választottam a Pi4, mert az internet sebessége csak 30Mbps egyébként (DSL). Amint azt a hálózati felügyeleti bejegyzésben leírtam, ez a Raspberry Pi 4 bizonyítottan több, mint elég ebben az esetben. Az alábbiakban pontosan azokat a termékeket használtam.
Ha még nem ismeri a Raspberry Pi-t, a népszerű CanaKits remek hely a kezdéshez. Én inkább vásárolni a Raspberry Pi 4, hálózati adapter, micro SD kártyák, hűtőbordák külön-külön. Ez nemcsak olcsóbb, hanem csökkenti az e-hulladékot is.
a következő affiliate linkek más részek használtam ebben a projektben. Soha nem hivatkozom olyan termékre, amelyet személyesen nem használtam.
van DSL/PPP kapcsolata?
olvassa el a Raspberry Pi DSL útválasztóként való használatának sajátos furcsaságait.
egy második ethernet port szükséges (lásd a következő részt). A fenti USB 3.0 gigabites csatlakozót használtam.
Csatlakozás az internethez
a hálózati interfészekre wan
és lan
hivatkozom.
Ha azt szeretné, hogy a dolgok másolás-beillesztés legyenek, átnevezheti a hálózati interfészeket, hogy megfeleljenek. Például lan
a két interfész közül a leggyorsabb neve (a fedélzeti hálózati interfész, eth0
, az én esetemben). A statikus név létrehozásához először írja be ifconfig
szerezze be a felület MAC-címét (a ether
után). Ha megtalálta ether aa:bb:cc:dd:ee:ff
, akkor hozzon létre vagy szerkesszen /etc/udev/rules.d/10-network.rules
a következőket tartalmazza:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="lan"
… majd ismételje meg a folyamatot a wan
felületen.
a belső hálózatnak (LAN) nagyobb átviteli sebességgel kell foglalkoznia, mint a WAN.
ez az oka annak, hogy a LAN gyorsabb interfészt választja.
Ezen a ponton közvetlenül csatlakoztathatja a wan
interfészt az internetszolgáltató által biztosított modemhez. Érdemes lehet a modemet átlátszó híd módba állítani, ha lehetséges, mivel a Pi átveszi az útválasztási funkciót (erről bővebben).
amíg itt van, szánjon egy percet arra, hogy megbizonyosodjon arról, hogy a WAN megfelelően van-e konfigurálva a DHCP-bérlet megszerzéséhez. Ha a szokásos DHCP-től eltérő módszert használ (például PPOE), akkor ezt a lépést az Ön igényeinek megfelelően kell módosítania. De a legtöbb esetben elegendő egy fájlt létrehozni a /etc/network/interfaces.d/wan
címen a következő tartalommal:
auto wanallow-hotplug waniface wan inet dhcp
DHCP szerver
A Pi online használatával itt az ideje, hogy az eszközök csatlakozzanak a Pi-hez.
ebben a példában a Raspberry Pi útválasztó IP-címe 192.168.0.1
.
legyen óvatos, ha megváltoztatja ezt az IP-t!
Ez a példa a 192.168.0.0/24 alhálózatot használja. Ha úgy dönt, hogy megváltoztatja ezt, győződjön meg róla, hogy az érvényes privát alhálózatok közül választ.
Ez azt jelenti, első létrehozása vagy szerkesztése /etc/network/interfaces.d/lan
:
allow-hotplug laniface lan inet static address 192.168.0.1 netmask 255.255.255.0 gateway 192.168.0.1
most a LAN interfész statikus IP-vel rendelkezik, és útválasztóként kezeli magát. Most itt az ideje, hogy képes legyen IP-címek hozzárendelésére a hálózat más eszközeihez. A DHCP-kiszolgáló futtatása ezért sok számítógép képes csatlakozni a Pi-hez.
először tiltsa le a dhcpcd-t és telepítse az isc-dhcp-kiszolgálót:
sudo systemctl disable dhcpcdsudo apt install isc-dhcp-server
majd szerkessze a /etc/default/isc-dhcp-server
, helyettesítve a INTERFACESv4
:
INTERFACESv4="lan"
elmondtuk a DHCP szervernek, hogy milyen felület tartalmazza a LAN-t. Most ismernie kell az otthoni hálózat paramétereit. A példa folytatásához hagyjuk, hogy a szerver IP-címeket rendeljen a 192.168.0.100
tartományba a 192.168.0.199
tartományba (bővebben a miért egy pillanat alatt). Edit /etc/dhcp/dhcpd.conf
a domain név és a domain névszerverek első módosításához:
option domain-name "router.local";option domain-name-servers 8.8.8.8, 1.1.1.1;
a .local
utótag konvenció egy LAN-ra, de a router
név helyettesíthető. A domain név szerverek hamarosan megváltoznak, de egyelőre a google-ra mutatnak.
Add hozzá a következőket:
authoritative;subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.199; option routers 192.168.0.1; option subnet-mask 255.255.255.0;}
Ez azt mondja a DHCP szervernek, hogy IP-címeket rendelhet a hozzá csatlakozó eszközökhöz az adott tartományon belül. A viszonylag kis tartomány oka az, hogy statikus IP-címeket rendelhetünk ezen a tartományon kívül. Például ugyanazt a MAC-címet veheti fel a fenti lan
– hez, és hozzáadhatja a következő részt:
host router { hardware ethernet aa:bb:cc:dd:ee:ff; fixed-address 192.168.0.1;}
a statikus IP hozzáadása az útválasztóhoz azt is jelenti, hogy a DHCP-kiszolgáló soha nem zavarodhat meg, és véletlenül más IP-címet rendelhet hozzá. Általában az IP-címek kódolása a DHCP-kiszolgálón szintén központosítja a hatóságot (ahelyett, hogy statikus IP-ket kódolna meghatározott eszközökön, ami sokkal törékenyebb IME).
Ha most újraindítja a Raspberry Pi-t, és számítógépet csatlakoztat a lan-porthoz, meg kell találnia egy IP-címet a megfelelő tartományban. A Mac OSX használatával megnyitottam a hálózati beállítások ablaktáblát, majd a Hardver fület, hogy megtaláljam a laptop USB-C-Ethernet adapterének MAC-címét. Ezután hozzárendeltem egy statikus IP-t (csakúgy, mint fent) erre a címre, és újraindítottam a DHCP szervert:
sudo systemctl restart isc-dhcp-server
annak ellenére, hogy a rögzített cím a fenti tartományon kívül esik, ez a fajta statikus IP-hozzárendelés bármilyen eszközzel működik. Szeretek statikus IP-t adni minden ismert, megbízható eszközömnek, amelyek kívül esnek a nyilvános tartományon. Ez a következőket teszi:
- segít azonosítani az ismert eszközöket.a
- lehetővé teszi az ismert IP-k biztonsági szabályainak alkalmazását.
- engedélyezi a szervereket (azaz a hőmérséklet leolvasását egy olcsó Arduino érzékelőn keresztül).
Ha valamilyen oknál fogva a számítógép valaha nem tud csatlakozni az otthoni hálózathoz, a saját DHCP-kiszolgáló futtatása megkönnyíti a hibakeresést. A journalctl -xe | grep dhcpd
futtatása megmutatja az eszközök által az otthoni hálózathoz való csatlakozásra tett kísérleteket:
May 03 15:50:44 router dhcpd: DHCPREQUEST for 192.168.0.106 from xx:xx:xx:xx:xx via eth0May 03 15:50:44 router dhcpd: DHCPACK on 192.168.0.106 to xx:xx:xx:xx:xx via eth0
és a /var/lib/dhcp/dhcpd.leases
megmutatja, hogy milyen eszközök csatlakoztak az utóbbi időben.
WiFi eszközök csatlakoztatása
ehhez szüksége lesz egy WiFi útválasztóra vagy hozzáférési pontra.
a tipikus megközelítés a fedélzeti WiFi használata. Ez többnyire megegyezik a fenti lépésekkel, kivéve a wlan0
eszközt a Raspberry Pi-n a lan
interfészhez és a hostapd
beállításához. Ez azonban nem ajánlott ebben a bejegyzésben. A Raspberry Pi átadása két ethernet interfész között egyszerűbb és gyorsabb megközelítés.
ehelyett egyszerűen csatlakoztasson egy WiFi útválasztót a Raspberry Pi lan
portjához, majd állítsa az útválasztót hozzáférési pont (más néven híd) módba. Most az útválasztót nem érdekli, ha az ügyfelek Etherneten vagy WiFi-n keresztül csatlakoznak.
nagy rajongója vagyok az Orbi routereknek — nem csak rendkívül gyorsak, de csatlakoztathatja a bázisállomás “internet” portját a Raspberry Pi-hez, és tucatnyi vezetékes kapcsolat áll rendelkezésére a ház körül:
forgalom továbbítása
Ezen a ponton…
- a Raspberry Pi tud beszélni az interneten (WAN).
- a LAN-on lévő eszközök képesek egymással beszélni.
… de nincs kommunikáció a kettő között.
Enter firewalld
:
sudo apt install firewalld
a Firewalld a legegyszerűbb megoldás, amit eddig találtam.
az IP táblák és a tűzfalak fájdalmat okozhatnak.
legalább szüksége lesz egy otthoni és nyilvános zónára, majd álcázni a kettő közötti forgalmat. Ez csak azt mondja a tűzfalnak, hogy a lan interfész az otthoni, a wan/ppp0 interfészek pedig a nyilvánosság számára.
sudo firewall-cmd --zone=home --add-interface=lansudo firewall-cmd --zone=public --add-interface=ppp0sudo firewall-cmd --zone=public --add-interface=wansudo firewall-cmd --zone=public --add-masqueradesudo firewall-cmd --zone=home --add-service=dnssudo firewall-cmd --zone=home --add-service=dhcp
Ezen a ponton a LAN-hoz csatlakoztatott számítógépeknek képesnek kell lenniük az internet elérésére. Csak futtathatja a sudo firewall-cmd --runtime-to-permanent
most az összes mentéséhez, de lehet még néhány hasznos lépés (alább). Ha az internetes (vagy egyéb) forgalom nem működik a hálózaton belül, futtassa a journalctl -xe
és keresse meg a következő sorokat:
FINAL_REJECT: IN=ppp0 OUT= MAC= SRC=77.247.109.40 DST=...
ebben az esetben a szabály a várt módon működik. Valaki ismeretlen IP-címről próbált kapcsolatba lépni az otthoni hálózatommal a ppp0
interfészen keresztül (azaz., az internetről). Más esetekben előfordulhat, hogy bizonyos forgalom engedélyezéséhez meg kell nyitnia a tűzfalat.
a Firewalld a legegyszerűbb, ha zónaalapú szabályokat használ. Legalább két zónára lesz szükség, amelyeket otthonnak és nyilvánosnak hívtam lan és wan helyett (hogy megfeleljen a firewalld konvencióinak). Van egy harmadik (opcionális) megbízható zónám is a kubernetes/docker alhálózat konfigurációjában. Tehát amikor beírom firewall-cmd --get-active-zones
, látom:
home interfaces: lan lopublic interfaces: wan ppp0trusted interfaces: docker0 cni0 sources: 10.244.0.0/24 10.202.0.0/24 10.96.0.0/24
a zónák definícióit a /etc/firewalld/zones/
:
<?xml version="1.0" encoding="utf-8"?><zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <interface name="wan"/> <interface name="ppp0"/> <service name="ssh"/> <service name="http"/> <service name="https"/> <masquerade/></zone>
<?xml version="1.0" encoding="utf-8"?><zone target="ACCEPT"> <short>Home</short> <description>For use in home areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <interface name="lan"/> <interface name="lo"/> <service name="ssh"/> <service name="mdns"/> <service name="samba-client"/> <service name="dhcpv6-client"/> <service name="dhcp"/> <service name="dns"/> <service name="http"/> <service name="https"/> <port port="5000" protocol="tcp"/> <port port="3000" protocol="tcp"/> <port port="9999" protocol="tcp"/> <port port="10250" protocol="tcp"/> <port port="10250" protocol="udp"/></zone>
<?xml version="1.0" encoding="utf-8"?><zone target="ACCEPT"> <short>Trusted</short> <description>All network connections are accepted.</description> <interface name="docker0"/> <interface name="cni0"/> <source address="10.244.0.0/24"/> <source address="10.202.0.0/24"/> <source address="10.96.0.0/24"/> <service name="dns"/> <service name="dhcp"/> <service name="dhcpv6-client"/> <service name="https"/> <service name="http"/></zone>
a forgalom zónákba van sorolva az interfész vagy a forrás alapján, például:
sudo firewall-cmd --zone=public --add-interface=ppp0
sudo firewall-cmd --zone=trusted --add-source=10.202.0.0/24
és egy zóna fogadhat forgalmat egy szolgáltatásra vagy egy portra:
sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=home --add-port=10250/tcp
megjegyzés hogy ezek a változások ideiglenesek. Ez lehetővé teszi a biztonságos tesztelést. Ahhoz, hogy állandóvá tegye őket, futtassa a sudo firewall-cmd --runtime-to-permanent
parancsot. Ha nincs, ha további segítségre van szüksége a firewalld, nézd meg ezt a cikket.
DNS-kiszolgáló & átírja
a DNS-kiszolgáló még jobbá teheti ezt a kis útválasztót.
a DNS-kiszolgáló feladata, hogy válaszoljon egy adott domain név IP-címével. Például tudja, hogy milyen IP-címet kell a számítógépnek csatlakoznia ahhoz, hogy elérje google.com. sokan szeretik futtatni a saját biztonsági és adatvédelmi okokból.
vannak például ad-blokkolók, amelyek DNS-kiszolgálóként működnek. A Pi Hole vagy az AdGuard Home telepítésével megakadályozhatja, hogy a hálózaton lévő számítógépek megtalálhassák a reklám/spam/rosszindulatú programok domainjeit. Mindkét eszköz támogatja a DNS átírását is, így megváltoztathatja bármely webhely “helyét”.
miután telepítette a kettő egyikét, csak szerkessze /etc/dhcp/dhcpd.conf
option domain-name-servers 192.168.0.1;
most minden olyan eszköz, amely csatlakozik a hálózathoz, azt fogja mondani, hogy használja ezt a DNS-kiszolgálót.
miért olyan hasznosak az átírások? Nézze meg a következő bejegyzést az otthoni szerver felépítéséről. Az átírások lehetővé teszik ugyanazt az URL-t Belső és külső használatra, lehetővé téve a HTTPS-t bárhol. Ha például az AdGuard Home használatával átírja a *.snowy-cabin.com
– t a 192.168.0.100
– re, az otthoni hálózaton belül a house.snowy-cabin.com
– re érkező forgalom soha nem hagyja el az otthoni hálózatot. Ez azt jelenti, hogy ugyanaz a https://
URL használható a fordított proxy eléréséhez, ahol az SSL megszüntetése történik, biztosítva a biztonságos kommunikációt mind a nyilvános, mind a magánforgalom számára.
a post id nem található: #8977
Cheat-sheet
összefoglalva, itt van néhány kulcsfontosságú fogalmak otthoni szerverek:
- statikus IPs: edit
/etc/dhcp/dhcpd.conf
új gazdagép hozzáadásához, majd indítsa újraisc-dhcp-server
és megújítani a bérleti az ügyfél. - Port forwarding: run
sudo firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toaddr=192.168.0.100
- egyéni domain nevek: használja a DNS-kiszolgálót az egyedi domain név belső és külső működéséhez.
- hálózati forgalom figyelése: utasítások.
a biztonságtól a sebességig számos oka van annak, hogy megértsük az otthoni hálózati kapcsolatot. Ismerje meg a hálózati alapokat, valamint készítsen saját útválasztót az otthoni internet felgyorsításához.
(zane)/technikailag varázslás
Ez az oldal a DIY projektek dokumentálásának helyeként kezdődött. Az IOT projektek, technikai oktatóanyagok és útmutatók gyűjteményévé nőtte ki magát. További információ erről az oldalról…