Дропаются пакеты: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
 
Строка 17: Строка 17:
 
Этим самым мы увеличили таблицу до 64мб
 
Этим самым мы увеличили таблицу до 64мб
  
 +
==Насколько уже заполнена таблица==
 
Проверить, насколько уже заполнена таблица, используемая для отслеживания соединений, можно следующим образом:
 
Проверить, насколько уже заполнена таблица, используемая для отслеживания соединений, можно следующим образом:
 
  /sbin/sysctl net.netfilter.nf_conntrack_count
 
  /sbin/sysctl net.netfilter.nf_conntrack_count
  
 +
==Увеличение объема hash-таблицы==
 
Увеличение объема hash-таблицы. Соответственно необходимо увеличить и хэш-таблицу, где записываются списки conntrack-записей.
 
Увеличение объема hash-таблицы. Соответственно необходимо увеличить и хэш-таблицу, где записываются списки conntrack-записей.
  
Строка 26: Строка 28:
 
При этом используется следующее правило:  
 
При этом используется следующее правило:  
 
hashsize = nf_conntrack_max / 8
 
hashsize = nf_conntrack_max / 8
 
  
 
Разумеется, все соответствующие изменения необходимо сохранить в
 
Разумеется, все соответствующие изменения необходимо сохранить в
 
/etc/sysctl.conf и /etc/rc.local
 
/etc/sysctl.conf и /etc/rc.local
 +
 +
==Уменьшение значений time-out==
 +
Текущие значения можно посмотреть, например, так:
 +
sysctl -a | grep conntrack | grep timeout
 +
Это значения тайм-аутов в секундах <br/>
 +
 +
Всё лежит тут:/proc/sys/net/netfilter/

Текущая версия на 13:55, 4 октября 2011

Если сеть начала тормозить и в syslog мы видим следующее

tail /var/log/syslog 
Jun 18 01:09:44 mednet-server kernel: [1415532.823592] printk: 263 messages suppressed.
Jun 18 01:09:44 mednet-server kernel: [1415532.823604] nf_conntrack: table full, dropping packet.
Jun 18 01:09:50 mednet-server kernel: [1415538.467105] printk: 167 messages suppressed.
Jun 18 01:09:50 mednet-server kernel: [1415538.467118] nf_conntrack: table full, dropping packet.
Jun 18 01:09:54 mednet-server kernel: [1415543.033402] printk: 173 messages suppressed.
Jun 18 01:09:54 mednet-server kernel: [1415543.033417] nf_conntrack: table full, dropping packet.
Jun 18 01:09:59 mednet-server kernel: [1415547.660853] printk: 142 messages suppressed.
Jun 18 01:09:59 mednet-server kernel: [1415547.660866] nf_conntrack: table full, dropping packet.

Это означает, что переполнена таблица значений iptables, вероятнее всего для решения проблемы достаточно просто выделить больше памяти для этой таблицы. В Ubuntu 8.04 по умолчанию это значение равно 32 мегабайтам (32768) Изменить значение можно выполнив команду

echo "65536" > /proc/sys/net/netfilter/nf_conntrack_max

Этим самым мы увеличили таблицу до 64мб

Насколько уже заполнена таблица

Проверить, насколько уже заполнена таблица, используемая для отслеживания соединений, можно следующим образом:

/sbin/sysctl net.netfilter.nf_conntrack_count

Увеличение объема hash-таблицы

Увеличение объема hash-таблицы. Соответственно необходимо увеличить и хэш-таблицу, где записываются списки conntrack-записей.

   echo 65536 > /sys/module/nf_conntrack/parameters/hashsize

При этом используется следующее правило: hashsize = nf_conntrack_max / 8

Разумеется, все соответствующие изменения необходимо сохранить в /etc/sysctl.conf и /etc/rc.local

Уменьшение значений time-out

Текущие значения можно посмотреть, например, так:

sysctl -a | grep conntrack | grep timeout

Это значения тайм-аутов в секундах

Всё лежит тут:/proc/sys/net/netfilter/