Kernelparametrar

Det går att ändra på en hel del av parametrarna till Linuxkärnan. Några exempel på saker som man kan vilja ändra på är att slå på eller slå av routing, slå av att datorn ska svara på broadcastping, skydda mot syn-attacker, ändra på TTL (Time To Live) för IP-paket etc. Observera att inte alla parametrar går att ändra.

sysctl

Programmet /sbin/sysctl kan användas för att lista respektive för att sätta/ändra parametrar till Linuxkärnan.

Lista alla parametrar till kärnan med:
sysctl -a
eller med:
sysctl -A

Parametrarna kan sparas i filen /etc/sysctl.conf och sedan läsas därifrån med sysctl -p.

Syntaxen till sysctl är parameter=värde. Notera att det inte ska vara några mellanslag före eller efter likhetstecknet. För att sätta ett värde används flaggan -w till sysctl.
Exempel: /sbin/sysctl -w net.ipv4.ip_default_ttl=255

/proc

Det går även att lista och ändra på parametrar genom att gå via proc-filsystemet. Till exempel kan net.ipv4.ip_forward även nås som /proc/sys/net/ipv4/ip_forward . Ändra värde görs genom att skriva nytt värde till aktuell fil.
Exempel: echo 1 > /proc/sys/net/ipv4/ip_forward

Routing

Nedan följer några routingparametrar.

net.ipv4.ip_forward eller /proc/sys/net/ipv4/ip_forward styr om datorn ska kunna agera router eller ej. Om värdet är 0 är routingen avstängd och om värdet är 1 är routingen påslagen.

En del inställningar går att göra för varje enskilt nätverksinterface, net.ipv4.conf. eller /proc/sys/net/ipv4/conf/, eller för alla interface, net.ipv4.conf.default eller /proc/sys/net/ipv4/conf/default/ .

net.ipv4.conf.default.accept_redirects eller /proc/sys/net/ipv4/conf/default/accept_redirects styr om datorn dynamiskt ska kunna uppdatera sina routingtabeller. Värdet 0 stänger av redirect och 1 slår på redirect. Redirects bör med fördel stängas av.

net.ipv4.conf.default.send_redirects eller /proc/sys/net/ipv4/conf/default/send_redirects styr om datorn ska kunna skicka ICMP-redirect. 0 stänger av och 1 slår på så att datorn kan skicka ICMP-redirect. Stäng helst av denna.

net.ipv4.conf.default.accept_source_route eller /proc/sys/net/ipv4/conf/default/accept_source_route styr om datorn ska acceptera source-routade paket eller ej. 0 stänger av och 1 slår på/tillåter sourceroutade paket. Sourcerouting innebär att avsändaren bestämmer vilken väg trafiken ska gå för att nå mottagaren istället för att routrarna får bestämma vilken väg den ska ta. Din dator bör ej acceptera sourceroutade paket.

net.ipv4.conf.default.log_martians eller /proc/sys/net/ipv4/conf/default/log_martians styr om datorn ska logga paket som kommer från en avsändaradress som inte finns med i routingtabellen. Spoofade och sourceroutade paket kommer också att loggas. 0 stänger av loggningen och 1 slår på loggningen.

net.ipv4.conf.default.rp_filter eller /proc/sys/net/ipv4/conf/default/rp_filter kontrollerar om trafiken kommer in från rätt nätverksinterface. Om till exempel nätet 172.22.0.0 finns bakom eth0 och det kommer in trafik från avsändaradressen 172.22.17.42 på eth1 kastas denna bort om rp_filter är påslagen. 0 stänger av kontrollen och 1 slår på kontrollen. Det är bra att ha denna aktiverad.

TCP-inställningar

Det finns ett antal parameterinställningar för TCP.

net.ipv4.tcp_keepalive_probes eller /proc/sys/net/ipv4/tcp_keepalive_probes bestämmer efter hur många keepalive-paket en förbindelse ska kastas bort. Exempel: net.ipv4.tcp_keepalive_probes=9

net.ipv4.tcp_keepalive_time eller /proc/sys/net/ipv4/tcp_keepalive_time bestämmer timeouttiden för keepalivepaketen. Exempel: net.ipv4.tcp_keepalive_time=7200

net.ipv4.tcp_syncookies eller /proc/sys/net/ipv4/tcp_syncookies skyddar mot SYN-floodattacker. 0 stänger av skyddet och 1 aktiverar skyddet.

net.ipv4.tcp_retries1 eller /proc/sys/net/ipv4/tcp_retries1 bestämmer hur många omsändningar av data som ska ske vid en bruten förbindelse innan förbindelsen stängs. Exempel: net.ipv4.tcp_retries1=3

net.ipv4.tcp_fin_timeout eller /proc/sys/net/ipv4/tcp_fin_timeout bestämmer hur länge datorn ska vänta på att stänga en förbindelse som är på väg att stängas men där sista avslutande paketen ännu inte har kommit in till datorn. Tiden anges i sekunder. Exempel: net.ipv4.tcp_fin_timeout=30

IP-inställningar

net.ipv4.ip_dynaddr eller /proc/sys/net/ipv4/ip_dynaddr kan vara bra att slå på om datorn får sin adress dynamiskt till exempel via dhcp eller ppp. 0 stänger av och 1 slår på denna.

net.ipv4.ip_default_ttl eller /proc/sys/net/ipv4/ip_default_ttl är standardvärdet på TTL (Time To Live) för IP-paket. TTL bestämmer hur många routrar, brandväggar etc. IP-paketen kan passera innan de kastas. TTL finns bland annat till för att undvika att IP-paketen loopar oändligt om de hamnar i en loop. Loopar i nätverk är en felkonfiguration av nätet. Exempel på värde: net.ipv4.ip_default_ttl=255

net.ipv4.ip_local_port_range eller /proc/sys/net/ipv4/ip_local_port_range håller reda på vilka lokala portar som ska användas för UDP och TCP. Klientapplikationer får första lediga port i detta intervall när de kopplar upp sig mot en server. Exempel på värde: net.ipv4.ip_local_port_range=1024 32000

net.ipv4.ip_no_pmtu_disc eller /proc/sys/net/ipv4/ip_no_pmtu_disc styr om path MTU discovery ska användas eller ej. path MTU discovery tar reda på hur stora varje enskilda datapaket kan vara som skickas mellan två datorer. Om net.ipv4.ip_no_pmtu_disc är 1 ska datorn inte försöka göra en path MTU discovery och om den är 0 ska datorn försöka ta redan på hur stora paket den kan skicka.

net.ipv4.ipfrag_high_thresh eller /proc/sys/net/ipv4/ipfrag_high_thresh
net.ipv4.ipfrag_low_thresh eller /proc/sys/net/ipv4/ipfrag_low_thresh
net.ipv4.ipfrag_time eller /proc/sys/net/ipv4/ipfrag_time
Dessa används för att begänsa minnesanvändningen och timeouten för fragmenterade IP-paket. Ett IP-paket fragmenteras, delas upp i flera delar, om paketet är för stort på någon del av sträckan mellan två datorer för att kunna skickas i sin helhet. net.ipv4.ipfrag_high_thresh bestämmer hur mycket minne som maximalt får användas för att lagra fragmenterade IP-paket. När den gränsen är nådd tas inga fler fragment emot. net.ipv4.ipfrag_low_thresh är en nedre gräns som bestämmer när datorn kan börja ta emot fragmenterade paket igen. Enheten för övre och nedre gräns är bytes. net.ipv4.ipfrag_time bestämmer i sekunder hur länge fragmenterade paket sparas i minnet. När den tiden har gått kastas de. Exempel på värden:
net.ipv4.ipfrag_high_thresh=262144
net.ipv4.ipfrag_low_thresh=196608
net.ipv4.ipfrag_time=30

net.ipv4.ip_always_defrag eller /proc/sys/net/ipv4/ip_always_defrag gör så att alla paket alltid defragmenteras när den är aktiverad. Detta är egentligen mest bara meningsfullt i brandväggar som maskerar trafik (NAT). Om den är satt till 1 defragmenteras alltid alla paket om den är satt till 0 görs det inte.

ICMP

net.ipv4.icmp_echo_ignore_broadcasts eller /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts gör så att datorn inte svarar på pingpaket till någon av de broadcastadresser för något av de nät den är ansluten till. Värdet 1 gör att den inte svarar på broadcastping och 0 gör att den svarar på broadcastping. Sätt gärna denna till 1.

Begränsningar för maximalt hur många ICMP-paket av olika typer som ska skickas per 100-dels sekund kan också göras. Parametrarna heter:
net.ipv4.icmp_destunreach_rate eller /proc/sys/net/ipv4/icmp_destunreach_rate
net.ipv4.icmp_echoreply_rate eller /proc/sys/net/ipv4/icmp_echoreply_rate
net.ipv4.icmp_paramprob_rate eller /proc/sys/net/ipv4/icmp_paramprob_rate
net.ipv4.icmp_timeexceed_rate eller /proc/sys/net/ipv4/icmp_timeexceed_rate
Exempel på värden för dessa kan vara 10 eller 100 eller någonting liknande.

Ta inställningarna i drift

För att aktivera de nya inställningarna som rör nätverket i måste nätet startas om. I till exempel Redhat och liknande linuxsystem gör du /etc/rc.d/init.d/network restart eller /etc/init.d/network restart

Filer

fs.file-max eller /proc/sys/fs/file-max styr maximala antal samtidiga öppnade filer. Exempel på värde: fs.file-max=8192

Swap i 2.6-kärnor

vm.swappiness eller /proc/sys/vm/swappiness styr balansen mellan att använda minnet för att cacha så mycket som möjligt och att swappa ut processer till swappen. Exempel på värde: vm.swappiness=0

Värdet swap_tendency beräknas på följande sätt: swap_tendency = mapped_ratio/2 + distress + vm_swappiness;

Om swap_tendency är under 100 används endast cachat minne. Om swap_tendency är över 100 kommer kärnan att även vilja använda minne som används av processer vilka då swappas/pageas ut. Genom att sätta wm.swappiness (wm_swapiness) går det att påverka hur snabbt swap_tendency ska nå värdet 100 och gå över det. Med ett värde på 0 för wm.swappiness swappas processer inte ut förrän minnet verkligen börjar bli helt fullt.

Läs gärna mer om swapiness på http://lwn.net/Articles/83588/.

Copyright © 2010 Kjell Enblom.
This document is covered by the GNU Free Documentation License, Version 1.1