Router Expert: Bygge en WLAN proxy-server, IP routing


BILDE 1

Skotter i sin trofaste nettverk verktøyet-boksen, finner han to alternativer: gjennomføre en statisk kjerne IP ruten bord eller kjøre noen form for dynamisk IP ruting-protokollen med Zebra, Lukket, rutet, eller kvagga. Som dynamisk ruting protokoll konfigurasjon som ikke er nødvendig for vår WLAN løsning og er utenfor omfanget av denne artikkelen, vil vi ikke komme inn konfigurering dynamisk ruting protokoller på Linux i dag. Vår helt i stedet blir til den statiske IP ruten alternativ, og det er der vår historie begynner ...

I forrige måneds artikkelen vi dekket hvordan /etc /sysconfig /nettverk og /etc /sysconfig /nettverk-scripts /ifcfg- eth * skript konfigurere serverens grensesnitt under oppstartprosessen. Og selv om disse skriptene satt en rekke forskjellige nettverksvariabler, de gir bare grunnleggende IP-ruting konfigurasjon med mulighet for å stille inn serverens standard rute. I de fleste tilfeller, er standard-rute mer enn tilstrekkelig, selv på en multi-grensesnitt server. Vanligvis blir flere fysiske grensesnitt lagt til servere for å gi direkte servertilgang fra vertene, for å støtte applikasjoner som DHCP eller nettverks sikkerhetskopier. Men det er scenarier der serveren kan kreve mer enn bare en standardrute. Ett slikt tilfelle er illustrert ovenfor, hvor flere IP-nettverk eksisterer utover den lokale segmentet på mer enn én server grensesnitt. Et annet tilfelle er når Linux server er konfigurert til å fungere som en IP Gateway, der serveren videre IP-pakker gjennom sine lokale grensesnitt generert av andre verter. Eller serveren er konfigurert som en applikasjon proxy eller brannmur, hvor det gjør IP serviceforespørsler på vegne av andre maskiner (som er tilfellet med våre WLAN proxy server). Red Hat Linux og * NIX gi både kommandolinje og boot tid verktøy for administrasjon av IP-ruter.

La oss komme i gang med kommandolinjeverktøy. The Red Hat Linux-distribusjonen vi jobber med har to kommandoer for å administrere IP-ruter: Den tradisjonelle /sbin /route, som kan finnes på omtrent alle * NIX og nykommeren, /sbin /ip-kommandoen, bruker " rute " sub-kommandoen. Begge kommandoene legge til og slette vert og nettverksruter sammen med å sette standard rute. Her er en oversikt over kommandosyntaksen er nødvendig for å utføre de ulike IP-rute lederfunksjoner:


å vise kjernen IP ruting tabellen:


/sbin /route

Twitter /sbin /ip rute


vil angi standard rute:


/sbin /route add standard gw {ip gateway-adresse i punktumatskilte quad}

Twitter /sbin /ip route add standard via {ip gateway-adresse i prikkete-quad}


å slette standard rute:



/sbin /route slette standard gw {ip gateway-adresse i prikkete-quad}

Twitter /sbin /ip rute del standard via {ip gateway-adresse i prikkete-quad}



å legge til en nettverksrute:


/sbin /route add -net {ip nettverksadresse i prikkete-quad} nettmasken (subnet mask i prikkete-quad} gw {ip gateway-adresse i prikkete -Quad}

Twitter /sbin /ip route add {ip nettverksadresse i prikkete-quad /subnet prefiks (8-30)} via {ip gateway-adresse i prikkete-quad}



å slette en nettverksrute:


/sbin /route del -net {ip nettverksadresse i prikkete-quad} (subnet mask i prikkete-quad} gw {ip gateway-adresse i prikkete -Quad}

Twitter /sbin /ip rute del {ip-adresse i prikkete-quad /subnet prefiks (8-30)} via {ip gateway-adresse i prikkete-quad}



For å legge til en rekke rute:


/sbin /route add -host {ip host adresse i prikkete-quad} gw {ip gateway-adresse i prikkete-quad}


/sbin /ip route add {ip host adresse i prikkete-quad /32} via {ip gateway-adresse i prikkete-quad}


å slette en rekke rute:


Twitter /sbin /route del -host {ip-adresse i prikkete-quad} gw {ip gateway-adresse i prikkete-quad}

Twitter /sbin /ip rute del {ip-adresse i prikkete-quad /32 } via {ip gateway-adresse i prikkete-quad}

på samme måte som /etc /sysconfig /network og /etc /sysconfig /network-scripts /ifcfg-eth * konfigurasjonsskript gir mulighet til å sette nettverksgrensesnitt alternativer globalt eller på en per-grensesnitt basis, både globalt og per grensesnitt alternativ finnes for å sette IP-ruter i løpet av bootstrap prosessen. Den globale alternativet, /etc /sysconfig /statisk ruter setter hele systemet ruter som kan brukes eter til en bestemt eller noe grensesnitt. Her er kommandosyntaksen:


 {PHY-grensesnitt | eventuelle} netto {nettverk prefiks i prikkete-quad} nettmasken {subnet mask i prikkete-quad} gw {IP-adresse gateway i prikkete -Quad} 

Her er en syntaks eksempel:


 noen netto 172.30.30.0 netmask 255.255.255.0 gw 172.30.71.1any netto 10.10.40.0 netmask 255.255.255.240 gw 172.30.71.1 noen netto 192.168.100.0 netmask 255.255.255.0 gw 172.30.40.1any netto 172.30.41.0 netmask 255.255.255.0 gw 172.30.40.1 

Dette gir følgende kjernen rutingtabellen (som kan skrives ut ved hjelp av /sbin /route kommandoen) :


 root @ vulcan sysconfig] # routeKernel IP-ruting tableDestination Gateway Genmask Flags Metric Ref bruk Iface10.10.40.0 172.30.71.1 255.255.255.240 UG 0 0 0 eth0172.30.30.0 172,30 .71.1 255.255.255.0 UG 0 0 0 eth0 172.30.71.0 * 255.255.255.0 U 0 0 0 eth0172.30.40.0 * 255.255.255.0 U 0 0 0 eth1172.30.41.0 172.30.40.1 255.255.255.0 UG 0 0 0 eth1 192.168.100.0 172.30.40.1 255.255.255.0 UG 0 0 0 eth1127.0.0.0 * 255.0.0.0 U 0 0 0 lodefault 172.30.71.1 0.0.0.0 UG 0 0 0 eth0 

Når du bruker dette valget, er det mulig å spesifisere hvilke grensesnitt ruten skal være bundet til. Jeg har funnet " alle " definisjon er langt mer fleksibel og sikrer ruten vil bli lagt til, krever det vert å bruke grensesnittet nettverksadresse for " nærmeste-kamp " sammenligninger for å bestemme gateway definisjonen.

Den per-grensesnitt rute innstilling, /etc /sysconfig /nettverk-scripts /rute-eth *, kan administratorer definere rutene for en bestemt vert grensesnitt. Denne tilnærmingen gir litt mer fleksibilitet, til prisen av en litt ekstra arbeid, slik at du kan sette både nettverks bestemte ruter og standard rute (en tredje metode) for en vertsgrensesnittet. Den eneste ulempen er selvfølgelig å lage en rute definisjonsfilen for hver av serverens grensesnitt. Selvfølgelig kommandosyntaksen for dette alternativet er annerledes da det brukes med /etc /sysconfig /statisk ruter (det er imidlertid enklere):

{nettverk /prefix} via {gateway IP-adresse i prikkete-quad}

Her er et eksempel som setter en nettverksrute og standard rute for eth0 grensesnittet:

0.0.0.0/0 via 172.30.71.1 172.30.30.0/24 via 172.30.71.1 10.10. 40.0 /28 via 172.30.71.1

resultatet er denne kjernen ruting tabellen (trykt bruke /sbin /ip route kommandoen):

[root @ vulcan root] # ip route 10.10.40.0 /28 via 172.30.71.1 dev eth0 172.30.71.0/24 dev eth0 omfang adresse 172.30.30.0/24 via 172.30.71.1 dev eth0 172.30.40.0/24 dev eth1 omfang adresse 172.30.41.0/24 via 172.30.40.1 dev eth1 192.168. 100,0 /24 via 172.30.40.1 dev eth1 127.0.0.0/8 dev lo omfang adresse standard via 172.30.71.1 dev eth0 [root @ vulcan root] #

Når det gjelder hvilken tilnærming er bedre i stor grad avhenger av miljøet og antall grensesnitt på verten, siden standard rute kan stilles inn med /etc /sysconfig /nettverk eller som en del av et grensesnitt konfigurasjon. Fra en konfigurasjon ståsted, /etc /sysconfig /statisk rute alternativet er den enkleste metoden hvis verten har tre eller flere grensesnitt. En ting å huske på om disse skriptene er at enhver endring av grensesnittet eller routing konfigurasjon brukes bare til grensesnittet og lastes. Dette er i motsetning til å legge en rute direkte på kommandolinjen, som aktiveres straks. Oppgradere grensesnittene gjøres enkelt ved hjelp av /etc/rc.d/rc3.d/S10network rc script eller /etc /sysconfig /network-scripts /ifdown og ifup skript. Her er reload syntakseksempler.

Hvis du vil laste et enkelt grensesnitt, er det ifup alternativet den beste veien å gå, som vist her:

root @ vulcan nettverks-scripts] # ​​./ifup eth1

For å laste alle bruker rc script:


 root @ vulcan rc3.d] # ./S10network startSetting nettverk parametre: [OK] Bringing up loopback-grensesnittet: [OK] Bringing up grensesnitt eth0 : [OK] Bringing up grensesnitt eth1: [OK] root @ vulcan rc3.d] # 

så langt har vi diskutert IP ruting, fra perspektivet til å ha Linux server fungere som en IP-relé eller proxy-server.


BILDE 2

I denne konfigurasjonen, vert relé applikasjonsnivå serviceforespørsler til Linux server og serveren gjør deretter serviceforespørselen til den eksterne verten, releer deretter svare tilbake til den anmodende verten. Dette er den modellen vi distribuerer i våre WLAN-løsning. Det gir en høy grad av sikkerhet; fordi " verter " er bare i stand til å benytte tjenester som det er program fullmakter og det beskytter vertene, fordi de aldri er direkte eksponert mot Internett.

Men ingen diskusjon om Linux routing ville være komplett uten å diskutere muligheten av en Linux-server til å videresende IP-pakker som genereres fra andre maskiner, med andre ord hvordan å konfigurere serveren til å fungere som en IP-ruter. Noen av de første ruterne var UNIX-servere, og selv i dag både med Linux og BSD-plattformer og kommersielle produkter som Junos og Nokias Voyager operativsystemet, fortsetter UNIX å være en ideell plattform for IP-rutere. Så ser på samme eksempel hvis Linux verten ble konfigurert som en ruter; verten vil videresende IP-pakker til Linux server, og det ville i sin tur videresende dem til neste IP-gateway.


BILDE 3

Nå vertene kommunisere direkte med eksterne verter når Linux server er konfigurert som en IP-ruter. Det flotte med å være en Linux server er at serveren kan konfigureres til å operere som både en IP-gateway og en applikasjon proxy. Vi vil undersøke denne konfigurasjonen når vi dekker Squid Proxy Server konfigurasjonsmuligheter. Det viktige takeaway her er at serveren kan fungere både som en ruter og en server. For å få serveren " frem " IP-pakker som genereres fra andre maskiner, må en bryter i Linux-kjernen for å tillate IP Forwarding være aktivert.

Slå på IP Forwarding oppnås ved å endre net.ipv4.ip_forward opsjonsverdi i kjernen. Som standard er denne funksjonen deaktivert. Slå den på krever at vi skal gjøre endringer i filer som ligger i /proc filsystemet. I tilfelle du lurer på hva /proc filsystemet er, er det en katalog som inneholder kataloger og filer som representerer ulike aspekter av kjerner operasjonell tilstand. Endringer kan gjøres til kjernen driftstilstand ved å endre verdiene som er lagret i filene.

Det første alternativet for å aktivere IP videresending setter IP videresending på for alle serverens grensesnitt. Bruke " echo " skallkommando, en " 0 " (Deaktiver) eller " en " (Aktiver) er rettet inn /proc /sys /net /ipv4 /ip_forward fil.

echo 1 > /Proc /sys /net /ipv4 /ip_forward

Sende en " en " muliggjør IP videresending. Denne endringen tar umiddelbar virkning. For å kontrollere om IP forwarding er aktivert eller deaktivert /bin /cat-kommandoen kan brukes til å lese /proc /sys /net /ipv4 /ip_forward og sende utdata til kommandoskall.

cat /proc /sys /net /ipv4 /ip_forward

Hvis en " en " returneres deretter IP forwarding er aktivert, hvis en " 0 " returneres IP forwarding er deaktivert (standard er deaktivert). Selv tar /proc endringen i kraft umiddelbart, bare det fortsatt gjelde til serveren startes på nytt. For å aktivere IP videresending ved oppstart, er det to alternativer. Den første (som er liksom en hack) er å legge til ekko en > /Proc /sys /net /ipv4 /ip_forward til /etc/rc.d/rc.local filen, som utfører spesiallaget kommando på slutten av oppstartsprosessen.

Det andre alternativet er å endre net.ipv4.ip_forward definisjonen i /etc/sysctl.conf filen. Den /sbin /sysctl kommandoen brukes til å stille inn kernel kjøre attributter ved oppstart. De /etc/sysctl.conf filen lagrer det egendefinerte attributter innstillinger, blir endringene lagret i /proc filsystemet.

# Kernel sysctl konfigurasjonsfil for Red Hat Linux # # For binære verdier, 0 er deaktivert, en er aktivert. Se sysctl (8) og # sysctl.conf (5) for mer informasjon.

# kontroller IP-pakke videresending net.ipv4.ip_forward = 0

For å aktivere IP videresending bruker /sbin /sysctl, endre net.ipv4.ip_forward verdien fra " 0 " til " en " og starte serveren. IP videresending vil være fra da av aktivert. Det kan være noen tilfeller der du ikke vil ønske å aktivere IP videresending på hver server grensesnitt. Heldigvis er det også mulig å sette IP forwarding på en per-grensesnitt basis. For å gjøre dette først få en oversikt over tilgjengelige adaptere:

[root @ vulcan eth0] # ls /proc /sys /net /ipv4 /conf /all standard eth0 eth1 eth2 lo [root @ vulcan eth0] #

Deretter deaktivere IP forwarding på alle grensesnitt (dette er mer en beste praksis tiltak):

ekko 0 > /Proc /sys /net /ipv4 /conf /all /videresending

Nå, la oss si at du ønsker å aktivere IP videresending bare mellom eth0 og eth1. For å aktivere denne vil du bruke følgende:

echo 1 > /Proc /sys /net /ipv4 /conf /eth0 /videresending echo 1 > /Proc /sys /net /ipv4 /conf /eth1 /videresending

Når endringene er gjort, bekrefter etter " catting " /proc filer:

[root @ vulcan eth0] # cat /proc /sys /net /ipv4 /conf /eth0 /videresending 1 [root @ vulcan eth0] # cat /proc /sys /net /ipv4 /conf /eth1 /videresending 1 [root @ vulcan eth0] #

Når IP forwarding er aktivert, avhengig av hvordan du vil at serveren /router å oppføre seg, er det noen andre alternativer som skal aktiveres /funksjonshemmet. Disse alternativene, som IP forwarding, kan settes for alle grensesnitt eller på en per-grensesnitt basis.


å aktivere arp proxy for alle eller per grensesnitt:


echo 1 > /Proc /sys /net /ipv4 /conf /all /proxy_arp


ekko en > /Proc /sys /net /ipv4 /conf /eth * /proxy_arp


å deaktivere arp proxy for alle eller per grensesnitt (dette er standard):



echo 0 > /Proc /sys /net /ipv4 /conf /all /proxy_arp


ekko 0 > /Proc /sys /net /ipv4 /conf /eth * /proxy_arp


å aktivere ICMP omdirigeringer for hele eller per grensesnitt (dette er standard):



echo 1 > /proc /sys /net /IPv4 /conf /alle /accept_redirects


ekko en > /Proc /sys /net /ipv4 /conf /eth * /accept_redirects


å deaktivere ICMP omdirigeringer for alle eller per grensesnitt:


ekko 0 > /proc /sys /net /IPv4 /conf /alle /accept_redirects


ekko 0 > /Proc /sys /net /ipv4 /conf /eth * /accept_redirects


å aktivere støtte for IP kilde ruting på hele eller per grensesnitt:


ekko 1 > /Proc /sys /net /ipv4 /conf /all /accept_source_route


echo 1 > /Proc /sys /net /ipv4 /conf /eth * /accept_source_route


å deaktivere støtte for IP kilde ruting på hele eller per grensesnitt (dette er standard):



ekko 0 > /Proc /sys /net /ipv4 /conf /all /accept_source_route


ekko 0 > /Proc /sys /net /ipv4 /conf /eth * /accept_source_route


å aktivere støtte for ICMP omdirigeringer på hele eller per grensesnitt (dette er standard):



ekko en > /proc /sys /net /IPv4 /conf /alle /send_redirects


ekko en > /Proc /sys /net /ipv4 /conf /eth * /send_redirects


å deaktivere støtten for ICMP omdirigeringer på hele eller per grensesnitt (dette er standard):



ekko 0 > /proc /sys /net /IPv4 /conf /alle /send_redirects


ekko 0 > /Proc /sys /net /ipv4 /conf /eth * /send_redirects

Når du konfigurerer serveren å videresende pakker. Det er lurt å deaktivere sending og mottak av ICMP, arp-proxy og IP kilderuting fra et sikkerhetsperspektiv. For disse typer spesialiseringer, anbefaler jeg legger dem via rc.local eller i et skript kalt av rc.local.

Vel det gjør det for Linux og IP statisk ruting, forlate oss med Linux og 802.11q VLAN-grensesnitt. Men det spennende temaet er for neste måned. Tiden håper du fant denne informasjonen nyttig, og hvis du er interessert i å ha dynamisk ruting protokoll konfigurasjon konvertert, gi meg beskjed. Som alltid spørsmål, kommentarer og klager er alltid velkommen. Følg med.