Conntrack: Porovnání verzí
Bez shrnutí editace |
Bez shrnutí editace |
||
(Nejsou zobrazeny 4 mezilehlé verze od stejného uživatele.) | |||
Řádek 1: | Řádek 1: | ||
Včera se mi konečně podařilo vyřešit problém s velikostí tabulky spojení na centrálním routeru - bod 1 z postupu uvedeném v mailu níže nefungoval, /etc/modutils/aliases nebyl tam správný soubor. | Včera se mi konečně podařilo vyřešit problém s velikostí tabulky spojení na centrálním routeru - bod 1 z postupu uvedeném v mailu níže nefungoval, /etc/modutils/aliases nebyl tam správný soubor. | ||
Správný soubor v debianu s kernelem 2.6.x a module-init-tools je tento: | Správný soubor v debianu s '''kernelem 2.6.x a module-init-tools''' je tento: | ||
/etc/modprobe.d/aliases | '''/etc/modprobe.d/aliases''' | ||
kde na 1. řádku stačilo přidat: | kde na 1. řádku stačilo přidat: | ||
options ip_conntrack hashsize=524288 | |||
options ip_conntrack hashsize=524288 | |||
Pozor, v kernelu 2.6.21 je změna, ip_conntrack se jmenuje nf_conntrack, takže: | Pozor, v kernelu 2.6.21 je změna, ip_conntrack se jmenuje nf_conntrack, takže: | ||
options nf_conntrack hashsize=524288 | |||
options nf_conntrack hashsize=524288 | |||
Řádek 13: | Řádek 15: | ||
Po upravě souboru je potřeba ještě spustit | Po upravě souboru je potřeba ještě spustit | ||
depmod -a | depmod -a | ||
a pak už při modprobe daného modulu bude použit parametr uvedený za options. V případě modulu ip_conntrack na centrálním routeru je ovšem potřeba provést restart | a pak už při modprobe daného modulu bude použit parametr uvedený za options. V případě modulu ip_conntrack na centrálním routeru je ovšem potřeba provést restart, tento modul je používán dalšími X moduly, takže nepomáhá ani modprobe -r | ||
Nyní by měla tabulka spojení vyhledávat bleskově.. | Nyní by měla tabulka spojení vyhledávat bleskově. | ||
Pro úplnost uvádím aktuální konfiguraci /etc/sysctl.conf na našem centrálním routeru: | |||
kernel.panic=2 | |||
kernel.panic_on_oops=1 | |||
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv=20 | |||
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent=20 | |||
net.ipv4.tcp_syncookies=1 | |||
net.ipv4.tcp_max_syn_backlog=2048 | |||
net.core.rmem_max=16777216 | |||
net.core.wmem_max=16777216 | |||
net.ipv4.tcp_rmem=4096 87380 16777216 | |||
net.ipv4.tcp_wmem=4096 65536 16777216 | |||
net.ipv4.netfilter.ip_conntrack_max=524288 | |||
== Motivace: == | |||
Přes to, že je nastaveno syn_cookies, filtrujeme viry a já nevím co, došlo dnes opět k přeplnění tabulky na | Přes to, že je nastaveno syn_cookies, filtrujeme viry a já nevím co, došlo dnes opět k přeplnění tabulky na centrálním routeru. | ||
Pohledal jsem na webu a našel pár tipů, jak zvětšit omezení 32760 spojení, které Linux vypočítává z velikosti RAM paměti (na Doubravě je 512M): | Pohledal jsem na webu a našel pár tipů, jak zvětšit omezení 32760 spojení, které Linux vypočítává z velikosti RAM paměti (na Doubravě je 512M): | ||
Řádek 33: | Řádek 52: | ||
Na základě informací | Na základě informací prý stačí udělat toto (pozor, funguje jen se starými modutils, pro module-init-tools použijte návod uvedený uplně nahoře!): | ||
Aktuální verze z 4. 3. 2009, 19:33
Včera se mi konečně podařilo vyřešit problém s velikostí tabulky spojení na centrálním routeru - bod 1 z postupu uvedeném v mailu níže nefungoval, /etc/modutils/aliases nebyl tam správný soubor.
Správný soubor v debianu s kernelem 2.6.x a module-init-tools je tento: /etc/modprobe.d/aliases kde na 1. řádku stačilo přidat:
options ip_conntrack hashsize=524288
Pozor, v kernelu 2.6.21 je změna, ip_conntrack se jmenuje nf_conntrack, takže:
options nf_conntrack hashsize=524288
Pokud budete potřebovat pro jakýkoli modul ve vašich linuxech předávat nějaké parametry, tak tohle je to správné místo.
Po upravě souboru je potřeba ještě spustit
depmod -a
a pak už při modprobe daného modulu bude použit parametr uvedený za options. V případě modulu ip_conntrack na centrálním routeru je ovšem potřeba provést restart, tento modul je používán dalšími X moduly, takže nepomáhá ani modprobe -r
Nyní by měla tabulka spojení vyhledávat bleskově.
Pro úplnost uvádím aktuální konfiguraci /etc/sysctl.conf na našem centrálním routeru:
kernel.panic=2 kernel.panic_on_oops=1 net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv=20 net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent=20 net.ipv4.tcp_syncookies=1 net.ipv4.tcp_max_syn_backlog=2048 net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216 net.ipv4.netfilter.ip_conntrack_max=524288
Motivace:
Přes to, že je nastaveno syn_cookies, filtrujeme viry a já nevím co, došlo dnes opět k přeplnění tabulky na centrálním routeru.
Pohledal jsem na webu a našel pár tipů, jak zvětšit omezení 32760 spojení, které Linux vypočítává z velikosti RAM paměti (na Doubravě je 512M):
http://www.wallfire.org/misc/netfilter_conntrack_perf.txt - Excelentní materiál o tom, jak souvisí max. počet spojení s velikostí hash tabulky, ve které jsou spojení uloženy, kolik to celé zabírá paměti, a jak to nastavit, abychom dostali velký počet položek hash tabulky, velký počet možných spojení a max. výkon.
český návod, jak nastavit hashsize: http://usenet.jyxo.cz/cz.comp.linux/0406/ip-conntract.html
http://www.abclinuxu.cz/blog/show/147124?varianta=print - zajímavý článek, ve kterém kdosi píše, že 30 uživatelů torrent klienta Azureus dokáže kompletně zaplnit tabulku spojení.... Mimochodem, kdosi tam radí, vypnout na neNATovacích routerech connection tracking, což se v našem případě neosvědčilo.
Na základě informací prý stačí udělat toto (pozor, funguje jen se starými modutils, pro module-init-tools použijte návod uvedený uplně nahoře!):
Do souboru /etc/modutils/aliases přidal řádek:
options ip_conntrack hashsize=524288
a spustil příkaz
update-modules
který zapíše tennto option do /etc/modules.conf
Toto nastaví velikost hash tabulky na 524tis. položek (defaultně je tam pouze 4096 položek - viz příkaz:
sysctl net.ipv4.netfilter.ip_conntrack_buckets
Přičemž 1 položka zabere 8 bajtů, tj. modul ip_conntrack s novým nastavením ukousne 8*524288= 4MB paměti.
2. Do souboru /etc/sysctl.conf jsem přidal řádek:
net.ipv4.netfilter.ip_conntrack_max=524288
což omezí celkový počet spojení na 524tis. 1 spojení zabere 300 bajtů, tj pokud by se tabulka zaplnila, spotřebuje 150MB paměti.
Bohužel, velikost hashtabulky se nastavuje pouze při rebootu (nebo při odstranění a znovunahrátí ip_conntrack modulu), na což si zrovna teď netroufám. Rebootl bych to až v noci, aby Jára mohl případně na Doubravu zajet sjednat nápravu.
Tom