, Když se snaží zjistit, proč internet je pomalý, to může být těžké se naučit přesně, které zařízení v síti je jíst až všechny pásma. Mnoho řešení tohoto problému vyžaduje instalaci softwaru na každé zařízení, které má být sledováno. Místo toho jsem se pokusil vytvořit vlastní síťový monitor Raspberry Pi.
vytváření vlastního routeru
Raspberry Pi 4 je docela schopný router za správných okolností.
ale nejprve si ujasněme podmínky.
přepínač zamíchá data po síti. Směrovač pomáhá řídit tento provoz.
vytvoření „routeru“ v této souvislosti znamená, že budeme implementovat DHCP, DNS a Firewall.
Pokud nevíte, co to znamená, Nebojte se. Prozatím předpokládejme, že máte Raspberry Pi 4 (viz seznam dílů dole). Bit „verze 4“ je důležitý, protože má výrazně lepší síťovou kartu (eth0
) než předchozí modely (Gigabit). To ukazuje na největší omezení používání RPI jako routeru: šířka pásma je omezena na 1000 Mbps.
šířka pásma a propustnost jsou často zmatené.
pásmo „šířka“ je maximální množství dat, které mohou protékat systémem (v tomto případě z domova na internet). Propustnost měří, kolik šířky pásma se používá v každém okamžiku.
mimochodem, tato příručka by měla fungovat pro jakýkoli linuxový systém založený na Debianu, který chcete převést na router. Můžete použít lepší hardware k vytvoření ještě efektivnějšího řešení. Vybral jsem si Pi4, protože naše rychlost internetu je stejně pouze 30Mbps (DSL). Jak jsem popsal v příspěvku pro monitorování sítě, tento Raspberry Pi 4 je pro tento případ více než dostačující. Níže jsou uvedeny přesné produkty, které jsem použil.
Pokud jste nováčkem Raspberry Pi, populární CanaKits jsou skvělým místem pro začátek. Raději si koupím Raspberry Pi 4, napájecí adaptér, micro SD karty a chladiče Samostatně. Nejen, že je to levnější, ale snižuje e-odpad.
níže jsou uvedeny přidružené odkazy na další části, které jsem použil v tomto projektu. Nikdy jsem odkaz na produkt, který jsem osobně nepoužíval.
máte připojení DSL/PPP?
Přečtěte si o konkrétních zvláštnostech používání Raspberry Pi jako směrovače DSL.
je vyžadován druhý ethernetový port (viz další část). Použil jsem USB 3.0 gigabitový konektor, výše.
Připojení k Internetu
budu odkazovat k síti rozhraní jako wan
lan
.
Pokud chcete, aby se věci kopírovaly a vkládaly, můžete přejmenovat síťová rozhraní tak, aby odpovídala. Například lan
je název pro nejrychlejší dvě rozhraní (palubní síť rozhraní, eth0
, v mém případě). Chcete-li vytvořit statický název, nejprve zadejte ifconfig
získejte MAC adresu pro rozhraní (po ether
). Pokud jste našli ether aa:bb:cc:dd:ee:ff
, pak vytvořit nebo upravit /etc/udev/rules.d/10-network.rules
obsahuje:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="lan"
… a pak opakujte postup pro wan
rozhraní.
vnitřní síť (LAN) se musí vypořádat s větší propustností než WAN.
proto je pro LAN vybráno rychlejší rozhraní.
V tomto bodě, můžete přímo propojit wan
rozhraní k modemu od POSKYTOVATELE. Možná budete chtít modem uvést do režimu průhledného mostu, pokud je to možné, protože Pi přebírá funkci směrování(více o tom).
Když jste tady, udělejte si chvilku, abyste se ujistili, že WAN je správně nakonfigurován pro získání pronájmu DHCP. Pokud používáte jinou metodu než standardní DHCP (např. PPOE), budete muset tento krok upravit podle svých potřeb. Ve většině případů však stačí vytvořit soubor na /etc/network/interfaces.d/wan
s následujícím obsahem:
auto wanallow-hotplug waniface wan inet dhcp
DHCP
S Pi online, je čas nechat zařízení připojit k Pi.
v tomto příkladu bude mít router Raspberry Pi IP adresu 192.168.0.1
.
buďte opatrní, pokud změníte tuto IP adresu!
tento příklad používá podsíť 192.168.0.0/24. Pokud se to rozhodnete změnit, nezapomeňte si vybrat z rozsahu platných soukromých podsítí.
to znamená nejprve vytvořit nebo upravit /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
nyní bude mít LAN rozhraní statickou IP a bude se považovat za router. Nyní je čas, aby bylo možné přiřadit IP adresy jiným zařízením v síti. Spuštění serveru DHCP proto způsobí, že se k Pi může připojit tolik počítačů.
za Prvé, zakázat dhcpcd a install isc-dhcp-server:
sudo systemctl disable dhcpcdsudo apt install isc-dhcp-server
Pak upravit /etc/default/isc-dhcp-server
nahrazení INTERFACESv4
:
INTERFACESv4="lan"
už Jsme řekli, DHCP server, co rozhraní obsahuje LAN. Nyní potřebuje znát parametry domácí sítě. Chcete-li pokračovat s příkladem, dáme serveru přiřadit IP adresy v rozsahu od 192.168.0.100
192.168.0.199
(více o tom, proč v současné době). Edit /etc/dhcp/dhcpd.conf
nejprve změnit název domény a název domény servery:
option domain-name "router.local";option domain-name-servers 8.8.8.8, 1.1.1.1;
.local
přípona je úmluva na LAN, ale můžete nahradit router
jméno. Servery doménových jmen budou brzy změněny,ale prozatím jsou zaměřeny na google.
přidat Také přidat následující:
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;}
Toto říká, že DHCP server může přidělit IP adresy zařízení, která připojit se k němu v daném rozsahu. Důvodem relativně malého rozsahu je to, že můžeme přiřadit statické adresy IP mimo tento rozsah. Například, mohli byste mít stejnou MAC adresu lan
výše a přidejte následující sekci:
host router { hardware ethernet aa:bb:cc:dd:ee:ff; fixed-address 192.168.0.1;}
Přidání statické IP pro router, stejně, znamená, že DHCP server může nikdy dostat zmatený a náhodně přiřadit jinou IP adresu. Obecně platí, že kódování IP adres v DHCP serveru také centralizuje autoritu (spíše než kódování statických IP adres na konkrétních zařízeních, což je mnohem křehčí IME).
Pokud nyní restartujete Raspberry Pi a připojíte počítač k portu lan, měli byste najít IP adresu v příslušném rozsahu. Pomocí systému Mac OSX jsem otevřel podokno Předvolby sítě a poté kartu Hardware a našel MAC adresu adaptéru USB-C na Ethernet mého notebooku. Poté jsem na tuto adresu přiřadil statickou IP adresu (stejně jako výše) a restartoval server DHCP:
sudo systemctl restart isc-dhcp-server
i když je pevná adresa mimo rozsah výše, tento druh statického přiřazení IP bude fungovat s jakýmkoli zařízením. Rád dávám statické IP adresy všem známým, důvěryhodným zařízením, která jsou mimo veřejný rozsah. To dělá následující:
- pomáhá identifikovat známá zařízení.
- umožňuje použití bezpečnostních pravidel pro známé IP adresy.
- umožňuje servery (tj. čtení teploty pomocí levného Arduino senzoru).
Pokud se počítač z nějakého důvodu nemůže připojit k domácí síti, spuštění vlastního DHCP serveru usnadňuje ladění. Běh journalctl -xe | grep dhcpd
ukazuje všechny pokusy o zařízení připojit k domácí síti:
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
A podívali se na /var/lib/dhcp/dhcpd.leases
ukazuje, jaká zařízení máte připojeno v poslední době.
připojení WiFi zařízení
k tomu budete potřebovat WiFi router nebo přístupový bod.
typickým přístupem je použití palubní WiFi. To většinou odpovídá výše uvedené kroky, s výjimkou používání wlan0
zařízení na Raspberry Pi pro i lan
rozhraní a nastavení hostapd
. To se však v kontextu tohoto příspěvku nedoporučuje. Nechat Raspberry Pi sloužit jako průchod mezi dvěma ethernetovými rozhraními je jednodušší a rychlejší přístup.
Místo toho, stačí připojit WiFi router, aby lan
portu na Raspberry Pi a pak dal router do Přístupového Bodu (.k.a. most) režimu. Nyní se router nebude starat o to, zda se klienti připojují přes ethernet nebo WiFi.
jsem velký fanoušek Orbi routery — nejen, že jsou extrémně rychlé, ale můžete připojit k základní stanici je „internet“ port do Raspberry Pi a tucet kabelové připojení k dispozici kolem domu:
Přesměrování Provozu
V tomto bodě…
- Raspberry Pi může promluvit k internetu (WAN).
- zařízení v síti LAN mohou spolu mluvit.
… ale mezi nimi neexistuje žádná komunikace.
Enter firewalld
:
sudo apt install firewalld
Firewalld je nejjednodušší řešení, co jsem našel tak daleko.
IP tabulky a brány firewall mohou být bolest.
minimálně budete potřebovat domácí a veřejnou zónu a poté maskovat provoz mezi nimi. To jen říká firewallu, že rozhraní lan je pro domov a rozhraní wan / ppp0 jsou pro veřejnost.
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
v tomto okamžiku by počítače připojené k síti LAN měly mít přístup k internetu. Nyní můžete spustit sudo firewall-cmd --runtime-to-permanent
, abyste vše uložili, ale může existovat několik užitečných kroků (níže). Pokud internetový (nebo jiný) provoz kdykoli nefunguje ze sítě, spusťte journalctl -xe
a vyhledejte řádky takto:
FINAL_REJECT: IN=ppp0 OUT= MAC= SRC=77.247.109.40 DST=...
v tomto případě pravidlo funguje podle očekávání. Někdo z neznámé IP adresy se pokusil kontaktovat mou domácí síť prostřednictvím rozhraní ppp0
(tj., z internetu). V ostatních případech bude možná nutné otevřít bránu firewall, aby byl povolen určitý provoz.
Firewalld je nejjednodušší při použití pravidel založených na zónách. Budete potřebovat alespoň dvě zóny, které jsem nazval domácí a veřejné místo lan a wan (aby odpovídaly konvencím firewalld). Mám také třetí (volitelnou) důvěryhodnou zónu v mé konfiguraci pro podsíť kubernetes/docker. Takže když napíšu firewall-cmd --get-active-zones
, vidím:
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
definice zón jsou obsaženy v souborech xml umístěných na /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>
Provoz je rozdělena do zón na základě rozhraní nebo zdroje, jako jsou:
sudo firewall-cmd --zone=public --add-interface=ppp0
sudo firewall-cmd --zone=trusted --add-source=10.202.0.0/24
A zóny mohou přijímat dopravní služby nebo portu:
sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=home --add-port=10250/tcp
Všimněte si, že tyto změny jsou dočasné. To umožňuje bezpečné testování. Chcete-li, aby byly trvalé, spusťte sudo firewall-cmd --runtime-to-permanent
. Pokud není, pokud potřebujete další pomoc s firewalld, podívejte se na tento článek.
DNS Server & přepíše
DNS server může tento malý router ještě vylepšit.
úkolem serveru DNS je odpovědět IP adresou pro daný název domény. Například ví, k jaké IP adrese by se měl počítač připojit, aby dosáhl google.com, mnoho lidí ráda provozuje své vlastní z bezpečnostních a soukromých důvodů.
existují například blokátory reklam, které fungují jako servery DNS. Instalací Pi Hole nebo AdGuard Home můžete zabránit tomu, aby počítače v síti mohly najít reklamní/spamové / malware domény. Oba tyto dva nástroje také podporují přepisy DNS, takže můžete změnit „umístění“ libovolného webu.
Poté, co jste nainstalovali jeden ze dvou, stačí upravit /etc/dhcp/dhcpd.conf
option domain-name-servers 192.168.0.1;
Nyní, všechna zařízení, která se připojují k síti bude řečeno na používání tohoto serveru DNS.
proč jsou přepisy tak užitečné? Podívejte se na následující příspěvek o budování domácího serveru. Přepisy umožňují použít stejnou adresu URL interně i externě, což umožňuje HTTPS kdekoli. Například pomocí AdGuard Domů přepsat *.snowy-cabin.com
192.168.0.100
, žádný provoz, který vzniká v rámci domácí sítě, aby house.snowy-cabin.com
nikdy neopustí domácí síti. To znamená, že stejné https://
adresa URL může být použit k dosažení reverzní proxy, kde SSL ukončení se stane, zajištění bezpečné komunikace pro obě veřejné a soukromé dopravy.
ID příspěvku nebylo nalezeno: #8977
Cheat-sheet
Pro připomenutí, zde jsou některé klíčové koncepty pro domácí servery:
- Statická Ip: upravit
/etc/dhcp/dhcpd.conf
přidat nového hostitele, pak restartisc-dhcp-server
a prodloužit nájemní smlouvu na klienta. - Port forwarding: run
sudo firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toaddr=192.168.0.100
- Vlastní názvy domén: použijte server DNS, aby vaše jedinečné domény název práce interně i externě.
- monitorování síťového provozu: instrukce.
Z bezpečnostních rychlost, existuje mnoho důvodů, aby pochopit vaše připojení k domácí síti. Naučte se základy sítě a vytvořte si vlastní router, abyste urychlili internet doma.
(zane) / Technicky Kouzel
Tento web začal jako místo k dokumentu DIY projekty. Rozrostla se do sbírky IOT projektů, technických tutoriálů a návodů. Přečtěte si více o tomto webu…