Mesteparten av tiden vi bruker iptables til å sette opp en brannmur på en maskin, men iptables gir også pakke og byte tellere. Hver gang en iptables regel er avstemt med innkommende eller utgående datastrømmer, sporer programvaren antall pakker og mengden av data som passerer gjennom reglene.
Det er lett å gjøre bruk av denne funksjonen og skape en antall " pass-through regler " i brannmuren. Disse reglene ikke blokkere eller omdirigere noen data, men heller holde styr på mengden av data som passerer gjennom maskinen. Ved å bruke denne funksjonen, kan vi bygge en enkel, effektiv båndbredde overvåking system som ikke krever ekstra programvare.
Avhengig av hvordan brannmurregler er satt opp, oppsettet for båndbredde overvåking kan være svært enkle eller svært komplekse . For en stasjonær datamaskin, kan det hende du må opprette bare to regler for å logge total inngang og utgang. Et system som fungerer som en router kunne settes opp med ytterligere regler for å vise totaler for en eller flere subnett, helt ned til den enkelte IP-adresse innenfor hvert subnett. I tillegg til å vite nøyaktig hvor mye båndbredde hver vert og nettverks på nettverket bruker, kan dette systemet brukes i fakturerings eller føringen formål også.
Regler oppsett
Reglene oppsettet selv er rask og grei, og tar bare noen få minutter. Selvfølgelig må du være root eller bruk sudo for å sette iptables regler.
Eksemplene i denne artikkelen er basert på en ruter som gir Internett-tjenesten til forskjellige byer. De iptables regler å holde styr på hvor mye båndbredde hver by bruker og hvor mye båndbredde hver kunde i den byen bruker. På slutten av hver måned, sjekker en administrator tellerne. Personer som bruker mer enn de var ment å bli fakturert i over bruk, er tellere nullstilles, og prosessen gjentas i begynnelsen av neste måned.
IP-adressene i denne artikkelen er forandret fra de virkelige adresser. Vi vil bruke den private IP plass 192.168.0.0/16, subnetted i mindre blokker.
Først vil vi lage to egendefinerte kjeder for de to byene og sette byen spesifikke regler i dem. Dette vil holde den innebygde FORWARD kjeden relativt ren og enkel å lese. I dette eksemplet vil FORWARD kjeden bare gi de globale tellere (alle kunder kombinert på en per-town basis).
iptables -N town-en iptables -N by-b
neste dataelement er den totale båndbredden telleren. Fordi denne maskinen er en ruter bare, input og output kjedene er av liten interesse. Denne maskinen vil ikke generere en betydelig mengde båndbredde (dvs. det er ikke å tjene som en mail eller web server), vil heller ikke motta betydelige opplastinger fra andre verter.
Total båndbredde ned av vår de to byene sammen:
iptables -A FORWARD
Dette er den enkleste av reglene. Regelen vil matche enhver kilde og enhver destinasjon. Alt som blir gått gjennom denne ruteren matcher denne regelen, og vil gi totalt kombinert lastet ned og lastet opp data
Vi ønsker også å se hvor mye hver by nedlastinger og opplastinger separat.
# byen en Downloads iptables -A FORWARD -d 192.168.1.0/26 j by-en # byen en Uploads iptables -A FORWARD -s 192.168.1.0/26 j by-en # Town B Downloads iptables -A FORWARD -d 192.168 .1.64 /27-j by-b # Town B Uploads iptables -A FORWARD -s 192.168.1.64/27 j by-b
Bruk av kilde og destinasjon i ovennevnte regler kan være en kilde til forvirring. Destinasjoner er ofte likestilles med opplastinger, og kildene er nedlastinger. Dette ville være sant om dataene var bestemt for ruteren eller stammer fra selve ruteren.
I denne søknaden, men reversere vi perspektivet. Denne ruteren videresender (opplasting) data til et mål, men fra et kundeperspektiv, data mottatt. Med andre ord, er kunden laste ned dataene. Når du arbeider med kunder, er terminologien data de
lastet ned, ikke hva ruteren lastet opp til
dem. Dette er hvorfor i FORWARD kjeden, begrepene destinasjon og kilde vanligvis har snudd betydninger.
Reglene laget ovenfor gi oss separat totaler for alle nedlastinger til og opplasting fra hver enkelt by. Dette oppnås ved å matche kilden og målet for all trafikk gjennom ruteren for en bys bestemt subnett. Etter en regel er matchet, påkaller j alternativet et hopp til en av de egendefinerte kjedene. Disse egendefinerte kjeder kan deretter brukes til å legge til flere regler som gjelder for subnett. For eksempel kan reglene bli opprettet for hver enkelt IP-adresse i at subnett å spore båndbredde på en per-host basis:
# Town A, Host 192.168.1.10 Last iptables -En by-a-d 192.168. 1.10 # Town A, Host 192.168.1.10 opp iptables -A byen-a -s 192.168.1.10
Du kan gjenta denne prosessen for hver IP-adresse for alle byer innenfor subnettet.
< b> Båndbredde statistikk
Ser dagens båndbredde er et spørsmål om å kjøre iptables med -L og -V alternativer. Den -L utganger statistikken for en kjede (eller alle kjedene hvis ingen er oppgitt). V alternativet gir ordrik utgang, inkludert pakken og byte tellere som vi er interessert i. Jeg anbefaler å bruke -n alternativ også for å hindre DNS-oppslag, betyr iptables vil vise IP-adresser uten å forsøke å løse vertsnavn for IP adresser, noe som ville sette ekstra og unødvendig belastning på ruteren
Utgangen nedenfor er endret fra full produksjon for korthets skyld:
root @ raptor:. ~ # iptables -L - v -n Chain FORWARD (policy ACCEPT 7936M pakker, 3647G bytes) bytes
målet
kilde
reisemålet
338G 0.0.0.0/0 0.0.0.0/0 104G town-en 0.0.0.0/0 192.168.1.0/26 40G by-en 192.168.1.0/26 0.0.0.0/0 20G by-b 0.0.0.0/0 192.168.1.64/27 12G by-b 192.168.1.64/27 0.0.0.0/0
Dette biten viser at byene A og B kombinert har lastet ned og lastet opp totalt 338GB. Byen A er ansvarlig for 104NO lastet ned og 40GB lastet opp. I den første linjen på produksjonen av kjeden er i seg selv en " mer " totale antall - 3,647GB. Dette er den totale mengden data rutet gjennom siden forrige gang denne ruteren ble startet på nytt, eller mer nøyaktig, siden forrige gang de iptables modulene ble satt inn i kjernen
Når en kjede er ". Nullet " (tilbakestille alle tellerne i en kjede til null) med Z-alternativet, er dette tallet ikke nullstilt. Av denne grunn, anbefaler jeg å skape en reell total regel for å gjøre det enklere å nullstille totalt teller. Det tar da en kommando for å nullstille tellerne, og du trenger ikke å fjerne moduler, starte serveren, eller arbeide med iptables-save og iptables-restore kommandoer for å tilbakestille telleren.
Scrolling lenger ned utgangs viser de enkelte IP-adresser. Eksempel for Town A:
Chain town-en (2 referanser) bytes
kilde
reisemålet
32G 0.0.0.0/0 192.168.1.10 282M 192.168.1.10 0.0.0.0 /0 1521M 0.0.0.0/0 192.168.1.11 656m 192.168.1.11 0.0.0.0/0
Denne utgangen ytterligere bryter ned den totale båndbredden av byen ned til de enkelte kundene
". 2 referanser " vist i iptables utgang refererer til de to reglene i FORWARD kjede som hopper til denne kjeden.
Lagre data på tvers av oppstarter
Hvis du starte maskinen på nytt eller fjerne iptables kjernemoduler, vil du miste alle dine pakke og byte tellere. hvis disse skrankene skal brukes for faktureringsformål, vil du ønsker å ta sikkerhetskopier av de løpende tellere, og i tilfelle av en omstart, gjenopprette tellerne snarere enn å starte fra null.
iptables pakken leveres med to programmer som hjelpemiddel i dette: iptables-save og iptables-restore. Begge programmene trenger å bli fortalt eksplisitt bruke pakke og byte-telle under sikkerhetskopiering og gjenoppretting bruker -c kommandolinjealternativet.
sikkerhetskopiering og gjenoppretting prosessen er ganske grei. Å sikkerhetskopiere iptables data, bruke iptables-save -c > iptables-backup.txt. Å gjenopprette dataene etter omstart, bruke iptables-restore -c < iptables-backup.txt.
Konklusjon
Iptables gir en rask og enkel måte å spore båndbredde uten å måtte installere ekstra programvare. Du har, og sannsynligvis allerede bruker, etter
Den fleksibiliteten og kraften i iptables gjør de verktøyene som trengs for å oppnå denne overvåkingen. For mer komplekse overvåking scenarier. Du kan lage regler som ikke bare spore ulike subnett, men også for å spore bestemte porter og protokoller, som lar deg spore nøyaktig hvor mye av hver kundes trafikk er Web, e-post, fildeling, etc.
I tillegg disse båndbredde overvåking regler kan også bli blokkerer regler. Hvis en vert har brukt for mye båndbredde, kan dens regel i en by spesifikke kjeden endres ved å legge -j DROP til både nedlasting og opplasting regler. Dette effektivt stopper trafikken rutes til og fra den verten. Anmeldelser