saját útválasztó építése Raspberry Pi-vel

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 etherutá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
csatlakozás a raspberry pi routerhez
a MAC-cím a hardver fülről érkezett. A “DHCP-bérlet megújítása” gomb megnyomásával a DHCP-kiszolgáló új IP-címet kér, amely hatékonyan frissíti a kapcsolatot.

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 hostapdbeá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-permanentparancsot. 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.confoption 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 újra isc-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.

Tagged asDIY projektek, Raspberry Pi projektek
írta:

(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…

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.