opbygning af din egen Router med en Raspberry Pi

Når du prøver at finde ud af, hvorfor internettet er langsomt, kan det være svært at lære nøjagtigt, hvilken enhed på netværket der spiser al båndbredde. Mange løsninger på dette problem kræver, at programmer installeres på hver enhed, der skal overvåges. I stedet forsøgte jeg at opbygge en brugerdefineret Raspberry Pi-netværksmonitor.

opbygning af din egen Router

en Raspberry Pi 4 er en ret kapabel router under de rigtige omstændigheder.

men først, lad os være klare på vilkår.

en kontakt blander data rundt om netværket. En router hjælper med at styre denne trafik.

opbygning af en “router” betyder i denne sammenhæng, at vi vil implementere DHCP, DNS og en Brandvæg.

Hvis du ikke ved hvad noget af det betyder, skal du ikke bekymre dig. Lad os nu bare antage, at du har en Raspberry Pi 4 (Se deleliste nederst). Bit” version 4″er vigtig, fordi den har et betydeligt bedre netværkskort (eth0) end tidligere modeller (Gigabit). Dette peger på den største begrænsning ved at bruge RPi som en router: båndbredden er begrænset til 1000 Mbps.

båndbredde og gennemstrømning er ofte forvirrede.

båndet “bredde” er den maksimale mængde data, der kan strømme gennem systemet (i dette tilfælde fra hjemmet til internettet). Gennemstrømning måler, hvor meget båndbredde der bruges til enhver tid.

i øvrigt skal denne vejledning fungere for ethvert Debian-baseret system, som du vil slå til en router. Du kan bruge bedre udstyr til at skabe en endnu mere effektiv løsning. Jeg valgte en Pi4, fordi vores internethastighed alligevel kun er 30 Mbps (DSL). Som jeg beskrev i netværksovervågningsposten, har denne Raspberry Pi 4 vist sig at være langt mere end nok til denne sag. Følgende er de nøjagtige produkter, jeg brugte.

Hvis du er ny til Raspberry Pi, er de populære CanaKits et godt sted at starte. Jeg foretrækker at købe Raspberry Pi 4, strømadapter, micro SD-kort og heatsinks separat. Dette er ikke kun billigere, men det reducerer e-affald.

følgende er tilknyttede links til andre dele, jeg brugte i dette projekt. Jeg linker aldrig til et produkt, som jeg ikke personligt har brugt.

har en DSL/PPP-forbindelse?

Læs om de specifikke egenskaber ved at bruge en Raspberry Pi som en DSL-router.

en anden ethernet-port er påkrævet (Se næste afsnit). Jeg brugte USB 3.0 Gigabit-stikket ovenfor.

tilslutning til internettet

Jeg vil henvise til netværksgrænsefladerne somwan oglan.

Hvis du vil have ting til at være copy-and-paste, kan du omdøbe dine netværksgrænseflader til at matche. For eksempel lan er navnet på den hurtigste af de to grænseflader (den indbyggede netværksinterface, eth0, i mit tilfælde). For at oprette det statiske navn skal du først skrive ifconfig få MAC-adressen til grænsefladen (efter ether). Hvis du fandt ether aa:bb:cc:dd:ee:ff, skal du oprette eller redigere /etc/udev/rules.d/10-network.rules for at inkludere:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="lan"

… og gentag derefter processen for wan interface.

det interne netværk (LAN) skal håndtere mere gennemstrømning end Van.

dette er grunden til, at den hurtigere grænseflade vælges til LAN.

på dette tidspunkt kan du direkte forbinde wan interface til modemet leveret af din internetudbyder. Du ønsker måske at sætte modemet i gennemsigtig brotilstand, hvis det er muligt, da Pi overtager routingfunktionaliteten (mere om dette).

mens du er her, skal du tage et øjeblik for at sikre dig, at du er konfigureret korrekt til at få en DHCP-lejekontrakt. Hvis du bruger en anden metode end standard DHCP (f.eks. PPOE), skal du ændre dette trin efter dine behov. Men i de fleste tilfælde er det tilstrækkeligt at oprette en fil på /etc/network/interfaces.d/wan med følgende indhold:

auto wanallow-hotplug waniface wan inet dhcp

DHCP-Server

med Pi online er det tid til at lade enheder oprette forbindelse til Pi.

i dette eksempel vil Raspberry Pi-routeren have en IP-adresse på192.168.0.1.

vær forsigtig, hvis du ændrer denne IP!

dette eksempel bruger undernettet 192.168.0.0/24. Hvis du beslutter at ændre dette, skal du sørge for at vælge mellem udvalget af gyldige private undernet.

dette betyder først at oprette eller redigere /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

nu vil LAN-grænsefladen have en statisk IP og behandle sig selv som routeren. Nu er det tid til at gøre det i stand til at tildele IP-adresser til andre enheder på netværket. At køre en DHCP-server vil derfor gøre det så mange computere kan oprette forbindelse til Pi.

Deaktiver først dhcpcd og installer isc-dhcp-server:

sudo systemctl disable dhcpcdsudo apt install isc-dhcp-server

rediger derefter /etc/default/isc-dhcp-server, erstatter INTERFACESv4:

INTERFACESv4="lan"

Vi har fortalt DHCP-serveren, hvilken grænseflade der indeholder LAN. Nu skal det kende parametrene for hjemmenetværket. For at fortsætte med eksemplet lader vi serveren tildele IP-adresser i området fra 192.168.0.100 til 192.168.0.199 (mere om hvorfor i et øjeblik). Rediger /etc/dhcp/dhcpd.conf for først at ændre domænenavnet og domænenavneserverne:

option domain-name "router.local";option domain-name-servers 8.8.8.8, 1.1.1.1;

.local suffikset er konvention for et LAN, men du er velkommen til at erstatte router navn. Domænenavneserverne ændres snart, men peger på google for nu.

tilføj også følgende:

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;}

dette fortæller DHCP-serveren, at den muligvis tildeler IP-adresser til de enheder, der opretter forbindelse til den inden for det givne interval. Årsagen til det relativt lille interval er, at vi kan tildele statiske IP-adresser uden for dette interval. For eksempel kan du tage den samme MAC-adresse til lan ovenfor og tilføje følgende afsnit:

host router { hardware ethernet aa:bb:cc:dd:ee:ff; fixed-address 192.168.0.1;}

tilføjelse af den statiske IP til routeren betyder også, at DHCP-serveren aldrig kan blive forvirret og ved et uheld tildele en anden IP-adresse. Generelt centraliserer kodning af IP-adresserne i DHCP-serveren også autoriteten (snarere end kodning af statiske IP ‘ er på specifikke enheder, hvilket er langt mere skørt IME).

Hvis du genstarter Raspberry Pi nu og tilslutter en computer til lan-porten, skal du finde en IP-adresse i det relevante område. Ved hjælp af Mac åbnede jeg ruden netværkspræferencer og derefter fanen Udstyr for at finde MAC-adressen på min bærbare computers USB-C til Ethernet-adapter. Derefter tildelte jeg en statisk IP (ligesom ovenfor) til den adresse og genstartede DHCP-serveren:

sudo systemctl restart isc-dhcp-server
Opret forbindelse til raspberry pi router
MAC-adressen kom fra fanen Udstyr. Ved at trykke på knappen” forny DHCP Lease ” vil du bede DHCP-serveren om en ny IP-adresse, der effektivt opdaterer forbindelsen.

selvom den faste adresse er uden for området ovenfor, fungerer denne slags statiske IP-opgave med enhver enhed. Jeg kan godt lide at give statiske IP ‘ er til alle mine kendte, pålidelige enheder, der er uden for det offentlige område. Dette gør følgende:

  • hjælper med at identificere kendte enheder.
  • tillader anvendelse af sikkerhedsregler for kendte IP ‘ er.
  • aktiverer servere (dvs.aflæsningstemperatur via en billig Arduino-sensor).

hvis en computer af en eller anden grund aldrig kan oprette forbindelse til hjemmenetværket, gør det lettere at debugge ved at køre din egen DHCP-server. Kører journalctl -xe | grep dhcpd viser eventuelle forsøg fra enheder til at oprette forbindelse til hjemmenetværket:

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

og kigger på /var/lib/dhcp/dhcpd.leases afslører, hvilke enheder der har tilsluttet det seneste.

tilslutning af trådløse enheder

til dette skal du bruge en trådløs router eller et adgangspunkt.

den typiske tilgang er at bruge det indbyggede trådløse internet. Dette matcher for det meste ovenstående trin, undtagen at bruge wlan0 enheden på Raspberry Pi til lan interface og opsætning hostapd. Det anbefales dog ikke i forbindelse med dette indlæg. At lade Raspberry Pi fungere som en gennemgang mellem to ethernet-grænseflader er en enklere og hurtigere tilgang.

i stedet skal du blot tilslutte en trådløs router tillan porten på Raspberry Pi og derefter sætte routeren i adgangspunkt (aka bridge) – tilstand. Nu er routeren ligeglad med, om klienter opretter forbindelse via ethernet eller trådløst internet.

Jeg er en stor fan af Orbi — routerne-ikke kun er de ekstremt hurtige, men du kan tilslutte basestationens “internet” – port til Raspberry Pi og have et dusin kabelforbindelser til din rådighed rundt om i huset:

videresendelse af trafik

på dette tidspunkt…

  • Raspberry Pi kan tale med internettet (van).
  • enhederne på LAN kan tale med hinanden.

… men der er ingen kommunikation mellem de to.

Enter firewalld:

sudo apt install firewalld

Firevalld er den nemmeste løsning, jeg har fundet indtil videre.

IP-tabeller og brandvægge kan være en smerte.

i det mindste skal du have et hjem og et offentligt område og derefter maskere trafikken mellem de to. Dette fortæller bare brandvæggen, at lan-grænsefladen er til hjemmet, og Van/ppp0-grænsefladerne er til offentligheden.

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

på dette tidspunkt skal computere, der er tilsluttet LAN, kunne få adgang til internettet. Du kan bare køre sudo firewall-cmd --runtime-to-permanent nu for at gemme det hele, men der kan være et par mere nyttige trin (nedenfor). Hvis internet (eller anden) trafik ikke fungerer fra netværket, skal du køre journalctl -xe og se efter linjer som denne:

FINAL_REJECT: IN=ppp0 OUT= MAC= SRC=77.247.109.40 DST=...

i dette tilfælde fungerer reglen som forventet. Nogen fra en ukendt IP-adresse forsøgte at kontakte mit hjemmenetværk viappp0 interface (dvs., fra internettet). I andre tilfælde skal du muligvis åbne brandvæggen for at tillade bestemt trafik.

det er nemmest at bruge områdebaserede regler. Du har brug for mindst to områder, som jeg har kaldt hjem og offentligt i stedet for lan og Van (for at matche brandvalds konventioner). Jeg har også et tredje (valgfrit) betroet område i min konfiguration til kubernetes/docker-undernet. Så når jeg skriver firewall-cmd --get-active-zones, ser jeg:

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

definitionerne for områder findes i filer placeret på /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>

trafik er kategoriseret i områder baseret på grænsefladen eller kilden, såsom:

  • sudo firewall-cmd --zone=public --add-interface=ppp0
  • sudo firewall-cmd --zone=trusted --add-source=10.202.0.0/24

og et område kan modtage trafik til en tjeneste eller en port:

  • sudo firewall-cmd --zone=public --add-service=http
  • sudo firewall-cmd --zone=home --add-port=10250/tcp

bemærk, at disse ændringer er midlertidige. Dette giver mulighed for sikker test. For at gøre dem permanente skal du køre sudo firewall-cmd --runtime-to-permanent. Hvis der ikke er en hvis du har brug for mere hjælp med brand, tjek denne artikel.

DNS-Server& omskriver

en DNS-server kan gøre denne lille router endnu bedre.DNS-serverens opgave er at svare med en IP-adresse for et givet domænenavn. For eksempel ved den, hvilken IP-adresse din computer skal oprette forbindelse til for at nå google.com. mange mennesker kan lide at køre deres egne af sikkerheds-og privatlivsårsager.

der er ad-blokkere derude, for eksempel, der fungerer som DNS-servere. Ved at installere Pi Hole eller AdGuard Home kan du forhindre, at computere på netværket kan finde annoncerings – /spam – /ondsindede domæner. Begge disse to værktøjer understøtter også DNS-omskrivninger, så du kan ændre “placering” på ethvert sted.

Når du har installeret en af de to, skal du bare redigere/etc/dhcp/dhcpd.confoption domain-name-servers 192.168.0.1;

nu bliver alle enheder, der opretter forbindelse til netværket, bedt om at bruge denne DNS-server.

hvorfor er omskrivninger så nyttige? Tjek følgende indlæg om opbygning af en hjemmeserver. Omskrivninger lader den samme URL bruges internt og eksternt, hvilket muliggør HTTPS overalt. For eksempel ved at bruge AdGuard Home til at omskrive *.snowy-cabin.com til 192.168.0.100, vil enhver trafik, der stammer fra hjemmenetværket til house.snowy-cabin.com aldrig forlade hjemmenetværket. Dette betyder, at den samme https:// URL kan bruges til at nå omvendt fuldmagt, hvor SSL-opsigelse sker, hvilket sikrer sikker kommunikation for både offentlig og privat trafik.siden blev ikke fundet: #8977

Cheat-sheet

for at opsummere, her er nogle nøglekoncepter til hjemmeservere:

  • statisk IPs: Rediger /etc/dhcp/dhcpd.conf for at tilføje en ny vært, genstart derefter isc-dhcp-server og forny lejekontrakten på klienten.
  • portvideresendelse: Kør sudo firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toaddr=192.168.0.100
  • brugerdefinerede domænenavne: brug DNS-serveren til at få dit unikke domænenavn til at fungere internt og eksternt.
  • overvågning netværkstrafik: instruktioner.

fra sikkerhed til hastighed er der mange grunde til at forstå din hjemmenetværksforbindelse. Lær grundlæggende netværk, samt bygg din egen router for at fremskynde internettet derhjemme.

Tagged asDIY Projects, Raspberry Pi Projects
skrevet af

(H5)

dette site begyndte som et sted at dokumentere DIY projekter. Det er vokset til en samling af IOT-projekter, tekniske tutorials og vejledninger. Læs mere om dette site…

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.