Bygga din egen gateway brandvägg (6 / 7 steg)
Steg 6: Packet prioritering
Packet prioritering med ALTQOm din WAN-anslutning förblir ganska mättade (med saker som bittorrent), då är jag säker på att har du haft din beskärda del av tidsgränser, fördröjning, eller långsam sida laster. Packet prioritzation erbjuder en lösning på detta problem. Istället för att spendera $100 + på en router som har denna funktion, kan du i stället använda ALTQ med PF för att utföra samma sak.
ALTQ är mycket enkel att installera. Det mest komplicerade som du behöver göra är kompilera om din kärna. Oroa dig inte, det är mycket lättare än du tror. Att följa bara mina instruktioner, och du ska vara bra. En ny kärna är nödvändigt, eftersom ALTQ stöd är inaktiverat som standard i FreeBSD.
Att lägga till ALTQ stöd till din kärna
Till att börja läser byggnad och installera en Custom Kernel thorougly. Efter att du läste det läsa Aktivera ALTQ.
Jag kommer att använda den "nya" metoden. Efter duplicera den generiska kernel konfigurationsfilen, redigera den med din favorit editor (pico är bra för nybörjare). Nu, Lägg till följande rader till slutet av filen:
#ALTQ OPTIONSoptions ALTQoptions ALTQ_CBQ # klass baser QUEINGoptions ALTQ_RED # RANDOM tidig DETECTIONoptions ALTQ_RIO # rött i / OUToptions ALTQ_HFSC # HIERARCHIAL PACKET SCHEDULERoptions ALTQ_PRIQ # prioriterade QUEUINGoptions ALTQ_NOPCC # krävs för SMP bygga
Nu spara filen (jag kallade mig FIREWALLKERNEL) och följ sedan stegen (från handboken) för att sammanställa det:
1. Byt till katalogen/usr/src.
# cd/usr/src
2. sammanställa kärnan.
# gör buildkernel KERNCONF = FIREWALLKERNEL
3. installera den nya kärnan.
# gör installkernel KERNCONF = FIREWALLKERNEL
Om allting fungerar, är din nya kärnan klar att användas. FreeBSD är även snäll nog att placera den nya kärnan i din boot väg. Allt du behöver göra är att starta om datorn ("shutdown - r nu"). Nu bör du har ALTQ stöd sammanställs i din kärna. Vårt nästa steg är faktiskt konfigurera ALTQ
Konfigurera ALTQ
ALTQ stöder två typer av packet prioritering: klass-baserade (CBQ) och prioritetsbaserade (PRIQ).
Klass-baserade queueing delar trafic i "klasser". En del av din totala bandbredd fördelas sedan till var och en av dessa klasser.
Prioritetsbaserad kö, som det har namnet antyder, tilldelar paket prioriteringar. Paketen med högst prioritet bearbetas först.
Det finns också några ytterligare funktioner som du har till ditt förfogande: random tidig upptäckt och uttrycklig överbelastning anmälan (ECN).
Random tidig upptäckt eller röd, beräknar den genomsnittliga köstorlek, sedan sjunker eller vidarebefordrar paket beroende på överbelastning. Om den genomsnittliga köstorlek är över en högsta nivå, kommer att alla paket släppas. Om köns storlek understiger en lägsta tröskel, kommer att ingen paket släppas. Någonstans mellan dessa trösklar, och paket som kommer att släppas beroende på hur nära köstorlek är att de övre och nedre tröskelvärdena.
Uttrycklig överbelastning anmälan eller ECN, sätter en flagga i paket till anmälas värdar för nätverken kongestion. När en värd som stöder ECN tar emot paket märkt med denna flagga, svarar den genom att minska sin verksamhet.
Jag valde prioriterade-kö, eftersom mitt nätverk ser ett stort utbud av olika typer av trafik. Priority-köer använder siffrorna 1 till 15 att prioritera trafik, nummer 1 är högsta prioritet. I min PF konfigurationsfil (pf.conf), jag har tilldelat en standardprioritet till nummer 10. Detta innebär att all trafik som matchar min brandväggsregler och ges inte en prioritet används som standard för prioritetsnivå 10. Sedan gav jag bittorrent en prioritetsnivå 15. Genom att göra detta, jag kan ha bittorrent kör non-stop i mitt nätverk, utan någon märkbar ökning av latens eller genomströmning. Jag gav också SSH hög prioritet 1, sin tidskritiska natur. Här är vad min PRIQ konfigurationer se ut ($int_if är min interna gränssnitt, enhet rl0; och $ext_if är min externa gränssnitt, enhet dc0):
altq $int_if priq bandbredd 100% kön {std, ssh, bt, http, p2p} altq $ext_if priq bandbredd 5Mb kön {std, ssh, bt, http, p2p} kö ssh prioritet 1 priqqueue http prioritet 2 priqqueue std prioritet 10 priq (standard) kö p2p prioriterade 13 priq (röd, ecn) kö bt prioritet 15 priq (röd, ecn)
Lägg märke till mina "bandbredd" alternativ på de första och andra linjerna. Jag ställa in storleken ALTQ kö på min externa gränssnitt till 5Mb. Även om min externa gränssnitt kan anslutas på 10Mbps, är jag bara tilldelning 5Mbps av min ISP. Detta är viktigt, eftersom packet prioritering förlitar sig på nivån på mättnad på ett gränssnitt att bestämma när börja queuing paket. Du ska märker jag också tilldelats 100% av bandbredden på min interna gränssnitt ALTQ. Detta innebär att all trafik som passerar genom min interna gränssnitt kommer att ha 100% av bandbredden 100Mbps.
Nu när jag har bestäms min prioritetsnivåer, är det dags att faktiskt tilldela dem till min brandväggsregler. Detta är mycket enkelt. "Kö < könamn >" Lägg till i slutet av alla regler som du vill tilldela prioriteringsnivå identifieras av < könamn >.
Och det är det. Så enkelt är det Packet prioritering. Lämna mig en kommentar för att låta mig veta om detta hjälper någon. Det har definitivt hjälpt mig.
Jag har bifogat en reviderad version av min pf.conf som innehåller ALTQ konfigurationer.