Linux Routing Subnett Tips og Tricks

Er det noen som gjør noe alvorlig frakoblet computing? Jeg daresay ikke. Vi installerer og oppdaterer våre Linuxes over Internett, og installere ny programvare, og slå opp informasjon på nettet. Nettverk er avgjørende for en Linux-system, og har alltid vært integrert selv som vår favoritt glossy proprietære operativsystemer ikke kunne bygge nettverk deres veier ut av papirposer. Jeg liker å tenke på IPC-- inter-prosess communication-- som en form for intern nettverksbygging mellom prosesser, men klokere nettverks guruer kan være uenige.

Nettverk i Linux er enklere enn det pleide å være i gamle dager . Hvorfor har jeg ikke tilpasset en kjerne i hundens år, som var noe vi måtte gjøre en god del tilbake i dagene av oppoverbakke begge veier i snøen. Men det er ikke helt ren magi ennå, og vi trenger fortsatt å vite noen ting. La oss starte med ruting mellom subnett. Splitte selv et lite nettverk i subnett er et nyttig verktøy for sikkerhet, og for allokering av ressurser som fil- og skriver aksjer og Internett-tilgang. Du kan isolere dine subnett fra hverandre, eller tillate dem å snakke med hverandre.

 

Den enkleste måten å gjøre det mulig ruting mellom subnett er å koble alle subnett til en enkelt ruter, ved hjelp av et fysisk nettverksgrensesnitt for hvert subnett. Det enkleste eksempel på dette er en bredbåndsruter (kabel, DSL, hva-har-du) som gir både kablet Ethernet og et trådløst aksesspunkt, som den populære Linksys WRT54GL. Den WRT54GL inkluderer en integrert 4-porters Ethernet-svitsj, og fordi det er drevet av DD-WRT det leverer et bredt spekter av nettverkstjenester. Navnetjenester, VPN, SSH, brannmur, routing, hotspot, og online gaming tjenester Anmeldelser

Figur 1 viser en litt mer komplisert oppsett: Netgear gigabit smart bytte, DSL-modem, og hjemmelaget Debian Linux-drevne ruter og trådløst aksesspunkt på en PC Motorer ALIX bord inne i en festlig rød sak. Den ALIX fungerer som brannmur, Internett-gateway, og navnetjener

Tilkobling går slik:

 Big Bad Internets >. DSL-modem > PC Motorer ALIX brannmur /router > Slå > kablede noder \\ Trådløst tilgangspunkt > trådløse noder 

Debian på ALIX er konfigurert til å fungere som en ruter ved å videresende IPv4-pakker med denne regelen i /etc/sysctl.conf:

 net.ipv4.ip_forward = 1 


ALIX Styret har tre kablet Ethernet-grensesnitt, så legger en tredje subnett betyr legge en mer bryter. Pluss konfigurere grensesnittet, og legger til den nye nettverks til DHCP /DNS-server, legge noen videresending regler for deling av Internett-tilkobling, og konfigurering av kunder. Dnsmasq er en stor DNS /DHCP LAN server, og du kan lære alt om det på Dnsmasq For Easy LAN navnetjenester.

Hvis du ikke trenger delt Internett-tilgang kan du stoppe her, fordi ruteren vil videresende all trafikk mellom subnett uten ytterligere konfigurasjon. Du kan legge til subnett til gulvet kollapser under vekten og Linux vil holde rett på videresending pakker.

Det er også mulig å koble flere subnett til et enkelt bytte, men det avhenger av bryteren. Noen vil gjøre det uten en oppstyr, og noen vil ikke. Hvis du har en bryter med nok porter for alle dine subnett så du virkelig ønsker å sette opp noen virtuelle LAN (VLAN). Gode ​​gigabit Ethernet-svitsjer er skitt billig, selv de som støtter VLAN. De bør ha fine Web grensesnitt som gjør konfigurere VLAN som enkelt som å sjekke noen esker (figur 2).

Du kan også kjøre flere subnett fra en enkelt Ethernet-grensesnitt, fordi du kan tildele flere IP-adresser til en enkelt grensesnitt. Jeg mener ikke aliaser, men adresser, ved hjelp av ip-kommandoen:

 $ sudo ip adr legge 192.168.3.100/24 ​​dev eth0 

Bruk ip adr show å se din nye adresse. Denne overlever ikke en omstart, så på Debian /etc /network /grensesnitt skal se slik ut for å bevare din konfigurasjon:

 iface eth0 inet statisk adresse 192.168.1.100 netmask 255.255.255.0 kringkaste 192.168.1.255 opp ip adr legge 192.168.3.100/24 ​​dev eth0 ned ip ADDR del 192.168.3.100/24~~number=plural dev eth0 

Og du vil se den i rutetabellen:

 $ routeKernel IP ruting tableDestination Gateway Genmask Flags Metric Ref Bruk Iface192.168.3.0 * 255.255.255.0 U 0 0 0 eth0192.168.2.0 * 255.255.255.0 U 0 0 0 ath0192.168.1.0 * 255.255.255.0 U 0 0 0 eth01.2.3.0 * 255.255.252.0 U 0 0 0 eth1default ip-1-2-3 0.0.0.0 UG 0 0 0 eth1 
Dele en Internett-tilkobling

Dele en Internett-tilkobling er en helt annen kjele med muslinger, fordi det betyr deling en enkelt ekstern IP-adresse mellom flere LAN verter. Dette betyr å skrive videresending og omskriving regler, som vi gjør med pakke filtre som pfSense og netfilter /iptables. Jeg bruker iptables, fordi hvorfor ikke, jeg gikk til alle problemer med å lære derned ting. Du kan takke NAT (Network Address Translation) for kompliserer livet av nettverket admin. NAT har tillatt oss å strekke begrenset pool av IPv4-adresser over all forventning, selv i denne strålende 2013 når vi skulle bli migrert til IPv6. Det er en smart hack og jeg beundrer sin oppfinnsomhet. Men det er fortsatt et hack, og det kommer i veien fordi nettverksapplikasjoner må være NAT-aware, og fordi vi trenger å ansette adresse omskriving og TCP videresending til å flytte trafikk inn og ut av våre LAN. Ta en titt på dette settet med iptables regler for å illustrere. Denne regelen omskriver kilde adressene til alle pakker som forlater LAN til den offentlige IP-adressen på gateway:

 IPT = "/sbin /iptables" WAN_IFACE = "eth1" WAN_IP = "1.2.3.4" $ IPT - t nat -A POSTROUTING -o $ WAN_IFACE j SNAT --to-kilde $ WAN_IP 

Selvfølgelig må du erstatte "1.2.3.4" med ditt eget WAN adresse. Hvis du har en dynamisk WAN IP-adresse, må du bruke en regel som dette:

 $ IPT -t nat -A POSTROUTING -o $ WAN_IFACE j Masquerade 

Masquerade pådrar seg mer overhead fordi det sonder for hvilken IP-adresse som skal brukes for hver pakke. Da må du gi en bane for innkommende pakker. Lar etablert disse reglene økter for å fortsette:

 $ IPT -A INPUT -m state --state relatert, ETABLERT -j ACCEPT $ IPT -A FORWARD -i $ WAN_IFACE -o $ LAN_IFACE -m state --state ETABLERT, RELATERT -j ACCEPT 

Vi ville ikke trenger alt dette folderol om vi kunne bruke direkte adressering i stedet for å måtte navigere NAT. Og så, avhengig av hvordan pakkefilter er satt opp, kan du også nødt til å skrive spesifikke regler for å fjerne blokkeringen trafikk mellom subnett, som dette eksemplet som videresender alle pakker mellom en kablet og trådløs nettverks:

 LAN_IFACE = "eth0" WIFI_IFACE = "ath0" $ IPT -A FORWARD -i $ LAN_IFACE -o $ WAN_IFACE -m state \\ --state NEW, ETABLERT, RELATERT -j ACCEPT $ IPT -A FORWARD -i $ LAN_IFACE -o $ WIFI_IFACE - m tilstand \\ --state NEW, ETABLERT, RELATERT -j ACCEPT 

Mens vi er på temaet NAT, kan du bruke netstat-nat kommandoen på Linux ruteren for å se alle de NAT tilkoblinger på nettverket:

 # netstat-nat -nProto nert Adresse Foreign Adresse State tcp 192.168.1.101:60038 204.1.224.59:80 TIME_WAIT tcp 192.168.1.101:40071 74.20.20.111:80 TIME_WAIT tcp 192.168.1.101:52499 199.255.22.204:80 ESTABLISHEDtcp 192.168.1.105:53885 74.130.20.34:443 ESTABLISHEDtcp 192.168.1.105:46416 208.79.40.11:80 ESTABLISHEDtcp 192.168.1.110:41061 199.15.47.106:80 TIME_WAIT tcp 192.168.1.110:36344 74.20.20.111:443 ETABLERT 

Det er bare en liten prøve, og du vil se dusinvis eller hundrevis av oppføringer. Hvis du utelater -n det viser vertsnavn i stedet for IP-adresser. Du kan se hele kilde NAT (SNAT) med netstat-nat -S ankomststed NAT (DNAT) med netstat-nat -D. netstat-nat -L viser NAT tilkoblinger på ruteren. Du kan spørre bestemte verter som dette:

 # netstat-nat -s studioProto nert Adresse Foreign Adresse State tcp server.network.net:57323 74.20.20.111:https~~V ESTABLISHEDtcp server.network.net:44637~~V 74.20.20.111 : https ESTABLISHEDtcp server.network.net:32814 ec2-101-23-22-444.compute-: www ESTABLISHEDtcp server.network.net:48745 www.server.com:www ESTABLISHEDtcp server.network.net:36625 stats.server com: www TIME_WAIT 

Kjør netstat-nat-h for å se alle alternativene

Computer nettverk er dype mørke komplikasjoner, slik at disse ressursene bør være nyttig

Dnsmasq For Easy LAN navn.. Tjenester IPv6 Crash kurs for LinuxAnother IPv6 Crash Course For Linux: Fast IPv6-adresser, Routing, er Name ServicesWhose Fault det når Internett Dies? Feilsøking Networks med Linux Min egen fabelaktig Linux Networking Cookbook Anmeldelser