Oman reitittimen rakentaminen Raspberry Pi: llä

kun yrittää selvittää, miksi internet on hidas, voi olla vaikea tietää tarkalleen, mikä verkon laite syö kaiken kaistanleveyden. Monet ratkaisut tähän ongelmaan edellyttävät ohjelmiston asentamista jokaiseen valvottavaan laitteeseen. Sen sijaan, yritin rakentaa mukautetun Vadelma Pi verkon monitori.

Oman reitittimen rakentaminen

Raspberry Pi 4 on oikeissa olosuhteissa varsin kyvykäs reititin.

mutta tehdään ensin selväksi ehdot.

kytkin sekoittaa dataa verkon ympäri. Reititin ohjaa liikennettä.

”reitittimen” rakentaminen tässä yhteydessä tarkoittaa, että toteutamme DHCP: n, DNS: n ja palomuurin.

Jos et tiedä, mitä se tarkoittaa, älä huoli. Nyt, oletetaan vain, että sinulla on Vadelma Pi 4 (katso osien luettelo alareunassa). ”Version 4” – bitti on tärkeä, koska siinä on huomattavasti parempi verkkokortti (eth0) kuin aiemmissa malleissa (Gigabit). Tämä osoittaa suurimman rajoituksen RPI: n käyttämiselle reitittimenä: kaistanleveys on rajattu 1000 Mbps: iin.

kaistanleveys ja läpimeno sekoitetaan usein.

taajuusalue ”leveys” on suurin tietomäärä, joka voi virrata järjestelmän läpi (tässä tapauksessa kotoa internetiin). Läpimeno mittaa, kuinka paljon kaistanleveyttä milloinkin käytetään.

muuten tämän oppaan pitäisi toimia missä tahansa Debian-pohjaisessa linux-järjestelmässä, jonka haluat kääntää reitittimeen. Voit käyttää parempaa laitteistoa luoda vieläkin tehokkaampi ratkaisu. Valitsin Pi4 koska meidän internet nopeus on vain 30Mbps joka tapauksessa (DSL). Kuten olen kuvattu verkon seuranta postitse, tämä Vadelma Pi 4 on osoittautunut paljon enemmän kuin tarpeeksi tässä tapauksessa. Seuraavassa on tarkat tuotteet, joita käytin.

Jos Raspberry Pi on uusi, Suositut Kanakit ovat oiva paikka aloittaa. Mieluummin ostaa Raspberry Pi 4, virtalähde, micro SD-kortit, ja heatsinkit erikseen. Paitsi että tämä on halvempaa, se myös vähentää e-jätettä.

seuraavat ovat affiliate-linkkejä muihin osiin, joita käytin tässä projektissa. En koskaan linkitä tuotteeseen, jota en ole itse käyttänyt.

onko DSL / PPP-yhteys?

Lue Raspberry Pi: n käytöstä DSL-reitittimenä.

tarvitaan toinen ethernet-portti (katso seuraava kohta). Käytin USB 3.0 Gigabit liitin, edellä.

yhteyden Internetiin

viittaan verkkoliittymiin nimillä wan ja lan.

Jos haluat asioiden olevan copy-and-paste, voit nimetä verkkoliittymäsi vastaamaan niitä. Esimerkiksi lan on nimi nopeimmalle kahdesta rajapinnasta (onboard network interface, eth0, minun tapauksessani). Staattisen nimen voi luoda kirjoittamalla ensin ifconfig saada käyttöliittymän MAC-osoitteen (etherjälkeen). Jos löysit ether aa:bb:cc:dd:ee:ff, luo tai muokkaa /etc/udev/rules.d/10-network.rules sisältämään:

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

… ja toista prosessi wan rajapinta.

sisäinen verkko (LAN) tarvitsee enemmän läpimenoa kuin WAN.

tästä syystä LAN-järjestelmään valitaan nopeampi käyttöliittymä.

tässä vaiheessa wan – liittymän voi liittää suoraan ISP: n tarjoamaan modeemiin. Haluat ehkä laittaa modeemin läpinäkyvään siltatilaan, jos mahdollista, koska Pi ottaa reititystoiminnon haltuunsa (lisää tästä).

kun olet täällä, varmista hetki, että WAN on määritetty oikein DHCP-vuokrasopimuksen saamiseksi. Jos käytät jotain muuta menetelmää kuin standardi DHCP (esim., PPOE), sinun täytyy muokata tätä vaihetta tarpeidesi mukaan. Mutta useimmissa tapauksissa riittää, että luodaan tiedosto /etc/network/interfaces.d/wan, jonka sisältö on seuraava:

auto wanallow-hotplug waniface wan inet dhcp

DHCP-palvelin

kun Pi on verkossa, on aika antaa laitteiden muodostaa yhteys Pi: hen.

tässä esimerkissä Raspberry Pi-reitittimen IP-osoite on 192.168.0.1.

ole varovainen, jos vaihdat tätä IP: tä!

tässä esimerkissä käytetään aliverkkoa 192.168.0.0 / 24. Jos päätät muuttaa tätä, varmista, että valitset kelvollisten yksityisten aliverkkojen joukosta.

tämä tarkoittaa ensin /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

nyt LAN-liitännällä on staattinen IP ja se kohtelee itseään reitittimenä. Nyt on aika tehdä se pystyy osoittamaan IP-osoitteita muille laitteille verkossa. DHCP-palvelimen pyörittäminen tekee siitä siis niin monen tietokoneen yhteyden Pi: hen.

poista ensin dhcpcd käytöstä ja asenna isc-dhcp-palvelin:

sudo systemctl disable dhcpcdsudo apt install isc-dhcp-server

sitten edit /etc/default/isc-dhcp-server, korvaa INTERFACESv4:

INTERFACESv4="lan"

olemme kertoneet DHCP-palvelimelle, mikä käyttöliittymä sisältää lähiverkon. Nyt se tarvitsee tietää parametrit kotiverkon. Jatkaa esimerkki, annamme palvelimen määrittää IP-osoitteet välillä 192.168.0.100 ja 192.168.0.199 (lisää Miksi hetki). Edit /etc/dhcp/dhcpd.conf muuttaaksesi ensin verkkotunnuksen ja verkkotunnuspalvelimet:

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

.local loppuliite on sovelias lähiverkon osalta, mutta router nimi. Verkkotunnuspalvelimet vaihdetaan lähiaikoina, mutta ne osoitetaan toistaiseksi Googlelle.

lisää myös seuraavat:

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

Tämä kertoo DHCP-palvelimelle, että se voi määrittää IP-osoitteita laitteisiin, jotka ovat yhteydessä siihen annetulla alueella. Syynä suhteellisen pieneen alueeseen on se, että voimme määrittää staattisia IP-osoitteita kyseisen alueen ulkopuolella. Esimerkiksi saman MAC-osoitteen voi ottaa lan edellä ja lisätä seuraavan osion:

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

staattisen IP: n lisääminen reitittimeen tarkoittaa myös sitä, että DHCP-palvelin ei voi koskaan hämmentyä ja antaa vahingossa eri IP-osoitteen. Yleensä IP-osoitteiden koodaaminen DHCP-palvelimella keskittää myös viranomaisen (sen sijaan, että se koodaisi staattisia IP-osoitteita tiettyihin laitteisiin, mikä on paljon hauraampaa IME: tä).

Jos käynnistät Raspberry Pi: n uudelleen nyt ja kytket tietokoneen lan-porttiin, sinun pitäisi löytää sopiva IP-osoite. Mac OSX: n avulla avasin Verkkoasetukset-ruudun ja sitten Laitteisto-välilehden löytääkseni kannettavan tietokoneeni USB-C-Ethernet-sovittimen MAC-osoitteen. Sitten määritin staattisen IP (aivan kuten edellä), että osoite ja uudelleen DHCP-palvelin:

sudo systemctl restart isc-dhcp-server
yhdistä raspberry pi-reitittimeen
MAC-osoite tuli laitteiston välilehdeltä. ”Renew DHCP Lease” – painikkeen painaminen kysyy DHCP-palvelimelta uutta IP-osoitetta, joka virkistää yhteyden tehokkaasti.

vaikka kiinteä osoite on yllä olevan alueen ulkopuolella, tämänkaltainen staattinen IP-määritys toimii millä tahansa laitteella. Haluan antaa staattisia IP-osoitteita kaikille tunnetuille, luotetuille laitteilleni, jotka ovat julkisen alueen ulkopuolella. Tämä tekee seuraavat:

  • auttaa tunnistamaan tunnettuja laitteita.
  • mahdollistaa turvallisuussääntöjen soveltamisen tunnettuihin IP-osoitteisiin.
  • mahdollistaa palvelimet (eli lämpötilan lukemisen halvan Arduino-anturin kautta).

Jos jostain syystä tietokone ei voi koskaan muodostaa yhteyttä kotiverkkoon, Oman DHCP-palvelimen käyttäminen helpottaa asioiden debugointia. Juoksu journalctl -xe | grep dhcpd näyttää laitteiden mahdolliset yritykset yhdistää kotiverkkoon:

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

ja kurkistus /var/lib/dhcp/dhcpd.leases paljastaa, mitä laitteita on viime aikoina yhdistetty.

WiFi-laitteiden yhdistäminen

tätä varten tarvitset WiFi-reitittimen tai tukiaseman.

tyypillinen tapa on käyttää junassa olevaa WiFi-verkkoa. Tämä vastaa suurimmaksi osaksi edellä mainittuja vaiheita, paitsi käyttämällä wlan0 Raspberry Piin laitetta lan liittymää ja perustamalla hostapd. Tätä ei kuitenkaan suositella tämän viran yhteydessä. Antamalla Vadelma Pi toimii läpivienti kahden ethernet-liitännät on yksinkertaisempi ja nopeampi lähestymistapa.

liitä sen sijaan vain WiFi-reititin lan – porttiin Raspberry Pi: llä ja laita reititin tukiasemaan (alias bridge). Nyt, reititin ei välitä, jos asiakkaat yhteyden ethernet tai WiFi.

olen suuri Orbi — reitittimien fani-paitsi että ne ovat äärimmäisen nopeita, voit kytkeä tukiaseman ”internet” – portin Raspberry Piin ja sinulla on kymmenkunta langallista yhteyttä käytössäsi ympäri taloa:

Huolintaliikenne

tässä vaiheessa…

  • Raspberry Pi voi puhua internetiin (WAN).
  • lähiverkon laitteet voivat puhua keskenään.

… mutta näiden kahden välillä ei ole kommunikaatiota.

Enter firewalld:

sudo apt install firewalld

Firewalld on helpoin tähän mennessä löytämäni ratkaisu.

IP-Pöydät ja palomuurit voivat olla tuskaa.

vähintään tarvitaan koti-ja yleisövyöhyke, ja sitten naamioidaan näiden kahden välinen liikenne. Tämä vain kertoo palomuuri, että lan-liitäntä on kotiin, ja wan/ppp0 liitännät ovat yleisölle.

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

tässä vaiheessa LAN-järjestelmään liitettyjen tietokoneiden pitäisi pystyä käyttämään Internetiä. Voit vain ajaa sudo firewall-cmd --runtime-to-permanent nyt tallentaa kaiken, mutta voi olla muutamia hyödyllisiä vaiheita (alla). Jos internet (tai muu) liikenne ei missään vaiheessa toimi verkon sisällä, aja journalctl -xe ja etsi linjoja näin:

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

tässä tapauksessa sääntö toimii odotetusti. Joku tuntemattomasta IP-osoitteesta yritti ottaa yhteyttä kotiverkkooni ppp0 – rajapinnan kautta (ts., internetistä). Muissa tapauksissa, saatat joutua avaamaan palomuuri sallia tietyn liikenteen.

Tulenkantaja on helpoin, kun käytetään vyöhykeperusteisia sääntöjä. Tarvitset ainakin kaksi vyöhykettä, joita olen kutsunut Lanin ja Wanin sijaan kodiksi ja julkiseksi (firewalldin yleissopimusten mukaiseksi). Minulla on myös kolmas (valinnainen) luotettu vyöhyke minun kokoonpano kubernetes/docker aliverkko. Joten kun kirjoitan firewall-cmd --get-active-zones, näen:

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

vyöhykkeiden määritelmät sisältyvät XML-tiedostoihin, jotka sijaitsevat kohdassa /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>

liikenne on luokiteltu rajapinnan tai lähteen perusteella vyöhykkeisiin, kuten:

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

ja alue voi vastaanottaa liikennettä palveluun tai porttiin:

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

huomaa, että nämä muutokset ovat väliaikaisia. Tämä mahdollistaa turvallisen testauksen. Jotta ne pysyvät, aja sudo firewall-cmd --runtime-to-permanent. Jos ei ole Jos tarvitset enemmän apua firewalld, tutustu tähän artikkeliin.

DNS-palvelin & uudelleenkirjoittaminen

DNS-palvelin voi tehdä tästä pikkureitittimestä vielä paremman.

DNS-palvelimen tehtävänä on vastata tietyn verkkotunnuksen IP-osoitteella. Se esimerkiksi tietää, mihin IP-osoitteeseen tietokoneen pitäisi muodostaa yhteys päästäkseen google.com. monet ihmiset haluavat ajaa omaa turvallisuuden ja yksityisyyden syistä.

on olemassa esimerkiksi DNS-palvelimina toimivia mainosestäjiä. Asentamalla Pi Hole tai AdGuard Home, voit estää tietokoneita verkossa voi paikantaa mainonta / spam / haittaohjelmien verkkotunnuksia. Molemmat näistä kahdesta työkalusta tukevat myös DNS uudelleenkirjoituksia, jotta voit muuttaa ”sijainti” tahansa sivuston.

kun olet asentanut jommankumman, vain edit /etc/dhcp/dhcpd.confoption domain-name-servers 192.168.0.1;

nyt kaikkia verkkoon kytkeytyviä laitteita käsketään käyttämään tätä DNS-palvelinta.

miksi uudelleenkirjoitukset ovat niin hyödyllisiä? Tutustu seuraava viesti rakentaa kotipalvelimen. Uudelleenkirjoittaminen antaa käyttää samaa URL-osoitetta sisäisesti ja ulkoisesti, mahdollistaen HTTPS missä tahansa. Esimerkiksi käyttämällä AdGuard Homea *.snowy-cabin.com to192.168.0.100, mikä tahansa kotiverkosta lähtevä liikennehouse.snowy-cabin.com ei koskaan poistu kotiverkosta. Tämä tarkoittaa, että samaa https:// URL-osoitetta voidaan käyttää käänteisen välityspalvelimen tavoittamiseen, jossa SSL-katkaisu tapahtuu, varmistaen turvallisen viestinnän sekä julkiselle että yksityiselle liikenteelle.

post id: tä ei löytynyt: #8977

Cheat-sheet

kerrataksesi, tässä muutamia keskeisiä käsitteitä kotipalvelimille:

  • staattiset IPs: edit /etc/dhcp/dhcpd.conf lisätäksesi uuden isännän, käynnistä sitten isc-dhcp-server ja uudista asiakkaan vuokrasopimus.
  • port forwarding: run sudo firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toaddr=192.168.0.100
  • Custom domain names: käytä DNS-palvelinta saadaksesi ainutlaatuisen verkkotunnuksesi toimimaan sisäisesti ja ulkoisesti.
  • verkkoliikenteen valvonta: ohjeet.

tietoturvasta nopeuteen on monta syytä ymmärtää kotiverkkoyhteyttä. Opettele verkostoitumisen perusteet sekä Rakenna oma reititin nopeuttamaan Internetiä kotona.

Tagged asDIY Projects, Raspberry Pi Projects
kirjoittanut

(zane)/teknisesti Velho

Tämä sivusto alkoi paikkana dokumentoida DIY-projekteja. Se on kasvanut kokoelmaksi IOT-projekteja, teknisiä oppaita ja oppaita. Lue lisää tästä sivustosta…

Vastaa

Sähköpostiosoitettasi ei julkaista.