howto:network:conntrack
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
howto:network:conntrack [2016/12/05 18:58] – vytvořeno gandalf | howto:network:conntrack [2022/05/05 12:45] (aktuální) – gandalf | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | ====== nf_conntrack - nastavení conntracku na linux routeru | + | ====== Linux router - poznámky ====== |
+ | |||
+ | |||
+ | ===== nf_conntrack - nastavení conntracku na linux routeru ===== | ||
Conntrack se na routeru používá při zapnutí stavového firewallu nebo při nastavení NATu. Při natování většího poštu IP adres není často defaultní nastavení conntracku dostatečné a proto je potřeba ho upravit. V krajním případě jste na neoptimální nastavení dokonce upozorněni hláškou '' | Conntrack se na routeru používá při zapnutí stavového firewallu nebo při nastavení NATu. Při natování většího poštu IP adres není často defaultní nastavení conntracku dostatečné a proto je potřeba ho upravit. V krajním případě jste na neoptimální nastavení dokonce upozorněni hláškou '' | ||
- | Optimalizaci provádíme změnou hodnot parametrů **nf_conntrack_max** a conntrack hashsize reprezentovanou parametrem **nf_conntrack_buckets*. Aktuální hodnoty získáte pomocí příkazů: | + | Optimalizaci provádíme změnou hodnot parametrů **nf_conntrack_max** a conntrack hashsize reprezentovanou parametrem **nf_conntrack_buckets**. Aktuální hodnoty získáte pomocí příkazů: |
< | < | ||
Řádek 71: | Řádek 74: | ||
Pravidla s IP adresou je potřeba vyjmenovat pro všechny IP adresy na interfacech routeru. | Pravidla s IP adresou je potřeba vyjmenovat pro všechny IP adresy na interfacech routeru. | ||
+ | **Pokud nepouzivame firewall na OUTPUTu, je mozne v tomto pripade pro notrack v outputu uplne vynechat** | ||
+ | V pripade, ze mate na routeru vetsi mnozstvi interfacu, je mozne pouzit ipset: | ||
+ | < | ||
+ | -A PREROUTING -m set --match-set local4 src -j ACCEPT | ||
+ | -A PREROUTING -m set --match-set local4 dst -j ACCEPT | ||
+ | -A PREROUTING -j CT --notrack | ||
+ | </ | ||
+ | |||
+ | a v prislusnem ipsetu (v nasem pripade **local4**) vyjmenovat adresy na vsech lokalnim interfacech pomoci skriptu | ||
+ | |||
+ | < | ||
+ | #!/bin/bash | ||
+ | |||
+ | ipset flush local4 | ||
+ | ipset flush local6 | ||
+ | |||
+ | ipset -exist create local4 hash:ip comment timeout 0 | ||
+ | ipset -exist create local6 hash:ip comment timeout 0 family inet6 | ||
+ | |||
+ | for i in `ip a s | grep -o "inet [0-9\.]*" | ||
+ | ipset -exist add local4 $i | ||
+ | done | ||
+ | |||
+ | for i in `ip a s | grep -o "inet6 [0-9a-f\: | ||
+ | ipset -exist add local6 $i | ||
+ | done | ||
+ | </ | ||
+ | |||
+ | ===== NAT a tunelované VPN ===== | ||
+ | |||
+ | Pokud nám zlobí některé služby např. PPTP, je potřeba na routeru přidat automatické zavádění modulů: | ||
+ | |||
+ | < | ||
+ | ip_conntrack | ||
+ | ip_conntrack_ftp | ||
+ | ip_conntrack_pptp | ||
+ | ip_gre | ||
+ | ip6_gre | ||
+ | gre | ||
+ | ip_nat | ||
+ | ip_nat_ftp | ||
+ | ip_nat_pptp | ||
+ | nf_conntrack | ||
+ | nf_conntrack_ipv4 | ||
+ | nf_conntrack_ipv6 | ||
+ | nf_conntrack_proto_gre | ||
+ | nf_nat_proto_gre | ||
+ | ppp_mppe | ||
+ | pptp | ||
+ | pppoe | ||
+ | nf_nat_pptp | ||
+ | </ | ||
+ | |||
+ | V kernelu od verze 4 je ještě potřeba zapnout přes sysctl používání nat helper, které je defaultně vypnuté: | ||
+ | |||
+ | |||
+ | < | ||
+ | net.netfilter.nf_conntrack_helper=1 | ||
+ | </ | ||
+ | |||
+ | ===== Optimalizace ===== | ||
+ | |||
+ | |||
+ | |||
+ | Optimalizace pro 10G karty | ||
+ | |||
+ | < | ||
+ | # 10GB/54MB (56623104) | ||
+ | net.core.rmem_max = 56623104 | ||
+ | net.core.wmem_max = 56623104 | ||
+ | net.core.rmem_default = 56623104 | ||
+ | net.core.wmem_default = 56623104 | ||
+ | net.core.optmem_max = 40960 | ||
+ | net.ipv4.tcp_rmem = 4096 87380 56623104 | ||
+ | net.ipv4.tcp_wmem = 4096 65536 56623104 | ||
+ | </ | ||
+ | |||
+ | Optimalizace poctu sousedu a ARP cache | ||
+ | |||
+ | < | ||
+ | # For IPv4 | ||
+ | net.ipv4.neigh.default.gc_thresh1=8192 | ||
+ | net.ipv4.neigh.default.gc_thresh2=12228 | ||
+ | net.ipv4.neigh.default.gc_thresh3=24456 | ||
+ | # For IPv6 | ||
+ | net.ipv6.neigh.default.gc_thresh1=8192 | ||
+ | net.ipv6.neigh.default.gc_thresh2=12228 | ||
+ | net.ipv6.neigh.default.gc_thresh3=24456 | ||
+ | </ | ||
+ | |||
+ | Optimalizace souvisejici s firewallem | ||
+ | |||
+ | < | ||
+ | #number of incoming connections | ||
+ | net.core.somaxconn = 2048 | ||
+ | |||
+ | #Maximum number of remembered connection requests | ||
+ | net.ipv4.tcp_max_syn_backlog = 30000 | ||
+ | |||
+ | # Increase the tcp-time-wait buckets pool size to prevent simple DoS attacks | ||
+ | net.ipv4.tcp_max_tw_buckets = 2000000 | ||
+ | |||
+ | # Decrease TIME_WAIT seconds | ||
+ | net.ipv4.tcp_fin_timeout = 10 | ||
+ | </ | ||
+ | --- zdroje | ||
+ | * [[https:// | ||
howto/network/conntrack.1480960706.txt.gz · Poslední úprava: 2016/12/05 18:58 autor: gandalf