Параметры SysCtl для стека IP
В этой статье описаны параметры протокола IP, значения которых
содержатся в файлах виртуальной файловой системы
/proc. Значения параметров задаются
во время загрузки операционной системы и могут
быть изменены в любой момент с помощью команд
типа
echo "значение" > /proc/sys/net/ipv4/имя_файла
Отметим, что
измененые в процессе работы значения не будут
сохранены после перезагрузки системы. Если вы
хотите сохранить изменения, включите соответствующую
команду в один из сценариев загрузки системы.
При установке значений
тех или иных параметров следует руководствоваться
требованиями к хостам и маршрутизаторам, изложенными
в документах RFC 1122, RFC 1123 и RFC 1812. Документы
можно загрузить с сайта
http://rgc-editor/rfc/
Параметры IPv4
ip_forward - пересылка пакетов
Логическая переменная
ip_forward управляет возможностью
пересылки пакетов между сетевыми интерфейсами
(маршрутизации). Значение 1 разрешает маршрутизацию,
0 - запрещает. По умолчанию маршрутизация
пакетов обычно отключена.
Изменение значения
этой переменной приводит к сбросу всех конфигурационных
параметров сети в принятые по умолчанию значения
(в соответствии с RFC1122 для хостов и RFC1812
для маршрутизаторов).
ip_default_ttl - время жизни пакетов
Целочисленная
переменная (1 байт)
ip_default_ttl
определяет время жизни пакетов, передаваемых данным
хостом. Значение поля времени жизни уменьшается
на 1 каждым маршрутизатором на пути следования
пакетов к адресату. По умолчанию устанавливается
значение TTL=64.
ip_no_pmtu_disc - oпределение максимального размера пакетов для пути)
Логическая переменная
ip_no_pmtu_disc управляет использованием
функции Path MTU Discovery (определение максимального размера пакетов для пути).
По умолчанию эта функция отключена (0), для ее включения используйте команду
echo "1" > /proc/sys/net/ipv4/ip_no_pmtu_disc
ip_queue_maxlen максимальное число пакетов в очереди пользовательского
пространства
Целочисленное
значение в файле
/proc/sys/net/ipv4/ip_queue_maxlen
определяет максимальное число пакетов, которые
могут быть переданы в очередь пользовательского
пространства без получения вердикта об их дальнейшей
судьбе. При достижении порога все последующие
пакеты будут отбрасываться, пока размер очереди
не снизится.
По умолчанию
для этого параметра используется значение 1024.
Если это значение слишком мало для вашей системы,
подберите большее значение экспериментальным путем.
Параметры фрагментации пакетов
IP
ipfrag_high_thresh - максимальный
размер памяти для сборки фрагментовЦелочисленная
переменная
ipfrag_high_thresh
задает максимальный размер памяти 9в байтах),
которая может использоваться для сборки фрагментов
IP. После выделения заданного количества байтов
памяти обработчик фрагментов будет выталкивать
(toss) пакеты из буфера, пока не будет достигнуто
значение нижнего порога
ipfrag_low_thresh.
ipfrag_low_thresh - нижний
предел размера для буфера сборки пакетов Целочисленное
значение
ipfrag_low_thresh определяет
нижний порог размера буфера сборки фрагментов
IP.
ipfrag_time - время хранения
фрагментовЦелочисленная
переменная
ipfrag_time определяет
время (в секундах), в течение которого фрагмент
дейтаграммы IP может храниться в памяти.
ipfrag_secret_interval -
время жизни хэш-ключа Целочисленное
значение переменной
ipfrag_secret_interval
задает интервал регенерации (в секундах) секретного
хэш-ключа, используемого для фрагментов IP. По
умолчанию время жизни ключа составляет 10 минут
(600 секунд).
Переменные INET peer storage
inet_peer_threshold Целочисленная
переменная
inet_peer_threshold
задает приблизительный размер буфера. По достижении
этого порога начинается жесткое отбрасывание записей.
Данный порог влияет также на время жизни записей
и интервалы между проходами для очистки памяти
(сборки мусора - garbage collection). Чем больше
записей, тем меньшее время они живут и чаще происходит
сборка мусора.
inet_peer_minttl Целочисленное
значение
inet_peer_minttl определяет
минимальное время жизни записей. Этого времени
должгл быть достаточно для покрытия времени жизни
фрагмента на стороне сборки. Минимальное время
жизни определяет гарантированный период существования
для тех случаев, когда размер пула меньше значения
переменной inet_peer_threshold. Время жизни задается
в специальных единицах jiffy.
inet_peer_maxttl Целочисленная
переменная
inet_peer_maxttl определяет
максимальное время жизни записей. Неиспользованные
записи по истечении этого периода могут сохраняться
при отсутствии дефицита памяти (когда число записей
в пуле достаточно мало). Время жизни задается
в jiffy.
inet_peer_gc_mintime Целочисленная
переменная
inet_peer_gc_mintime
задает минимальный интервал между проходами для
очистки (сборки мусора - garbage). Такой
короткий интервал используется при нехватке памяти
в пуле. Интервал задается в единицах jiffy.
inet_peer_gc_maxtimeЦелочисленная
переменная
inet_peer_gc_maxtime
определяет максимальный интервал между проходами
для очистки памяти. Максимальный переиод между
очистками памяти используется при отсутствии дефицита
памяти в пуле. Интервал задается в единицах jiffy.
Переменные
TCP
tcp_syn_retriesЦелочисленная
переменная (1 байт)
tcp_syn_retries
определяет число попыток передачи пакетов SYN,
которые протокол TCP будет предпринимать для организации
соединения. Число попыток не должно превышать
255. Используемое по умолчанию значение 5 соответствует
приблизительно 180 секундам на выполнение попыток
организации соединения.
tcp_synack_retriesЦелочисленное
значение (1 байт)
tcp_synack_retries
определяет число попыток повтора передачи пакетов
SYNACK для пассивных соединений TCP. Число попыток
не должно превышать 255. Используемое по умолчанию
значение 5 соответствует приблизительно 180 секундам
на выполнение попыток организации соединения.
tcp_keepalive_time Целочисленное
значение
tcp_keepalive_time определяет
интервал (в секундах) передачи протоколом TCP
сообщений keepalive. По умолчанию интервал передачи
таких сообщений составляет 7200 (2 часа).
tcp_keepalive_probes Целочисленная
переменная
tcp_keepalive_probes
задает число передач проб
keepalive,
после которого соединение считается разорванным.
По умолчанию передается 9 проб.
tcp_keepalive_intvl Целочисленная
переменная
tcp_keepalive_intvl
определяет интервал передачи проб. Произведение
tcp_keepalive_probes *
tcp_keepalive_intvl
определяет время, по истечении которого соединение
будет разорвано при отсутствии откликов. По умолчанию
установлен интервал 75 секунд, т.е., время разрыва
соединения при отсутствии откликов составит приблизительно
11 минут.
tcp_retries1 Целочисленная
переменная
tcp_retries1 определяет
число неудачных попыток, после которого должна
быть передана информация на сетевой уровень. В
соответствии с RFC минимальное значение составляет
3 (по умолчанию установлено именно это значение),
что соответствует периоду приблизительно от 3
секунд до 8 минут в зависимости от значения тайм-аута
повторной передачи RTO (Retransmission time-out).
tcp_retries2 Целочисленная
переменная
tcp_retries2 определяет
число неудачных попыток, после которого существующее
соединение уничтожается. В соответствии с RFC
1122 тайм-аут должен быть больше 100 секунд. Такое
значение слишком мало и по умолчания установлено
число попыток 15, соответствующее тайм-ауту приблизительно
от 13 до 30 минут в зависимости от RTO.
tcp_orphan_retries Целочисленной
значение
tcp_orphan_retries определяет
число неудачных попыток, после которого уничтожается
соединение TCP, закрытое на локальной стороне.
По умолчанию используется значение 7, соответствующее
приблизительно периоду от 50 секунд до 16минут
в зависимости от RTO. На сильно загруженных WEB-серверах
имеет смысл уменьшить значение этого параметра,
поскольку закрытые соединения могут поглощать
достаточно много ресурсов (см. стр. 4).
tcp_fin_timeoutЦелое число в
файле
tcp_fin_timeout определяет
время сохранения сокета в состоянии
FIN-WAIT-2
после его закрытия локальной стороной. Партнер
может не закрыть это соединение никогда, поэтому
следует закрыть его по своей инициативе по истечении
тайм-аута. По умолчанию тайм-аут составляет 60
секунд. В ядрах серии 2.2 обычно использовалось
значение 180 секунд и вы можете сохранить это
значение, но не следует забывать, что на загруженных
WEB-серверах вы рискуете израсходовать много памяти
на сохранение полуразорванных мертвых соединений.
Сокеты в состоянии
FIN-WAIT-2
менее опасны, нежели
FIN-WAIT-1,
поскольку поглощают не более 1,5 Кбайт памяти,
но они могут существовать дольше.
tcp_max_tw_buckets Целочисленное
значение в файле
tcp_max_tw_buckets
задает максимальное число сокетов, находящихся
в состоянии ожидания (timewait socket), которые
могут существовать в системе одновременно. При
достижении этого значения лишние сокеты незамедлительно
уничтожаются и выводится предупреждение. Этот
порог служит только для предотвращения простых
DoS-атак и вам не следует значение порога (скорее
следует увеличить пороговое значение, если условия
вашей сети требуют этого).
tcp_tw_recycleЛогическая переменная
tcp_tw_recycle управляет рециркуляцией
сокетов TIME-WAIT. По умолчанию используется значение
0 (отключено), которое не следует менять без консультации
с техническими специалистами.
tcp_tw_reuseЛогическая переменная
tcp_tw_reuse определяет возможность
повторного использования сокетов TIME-WAIT для
новых соединений, когда это безопасно с точки
зрения протокола. По умолчанию такая возможность
отключена (0) и включать ее не следует без консультации
с техническими специалистами.
tcp_max_orphans
Целочисленное значение в файле
tcp_max_orphans определяет максимальное
число допустимых в системе сокетов TCP, не связанных каким-либо идентификатором
пользовательского файла (user file handle). При достижении порогового значения
осиротевшие (
orphan) соединения незамедлительно сбрасываются с выдачей предупреждения.
Этот порог помогает предотвращать только простые атаки DoS и вам не следует
уменьшать пороговое значение (скорее увеличить его в соответствии с требованиями
системы - например, после добавления памяти. Отметим, что каждое orphan-соединение
поглощает около 64 Кбайт несбрасываемой на диск (unswappable) памяти.
tcp_abort_on_overflowЛогическая переменная
tcp_abort_on_overflow управляет
возможность отказа от приема новых соединений
при недостаточной производительности соответствующей
службы. По умолчанию установлено значение FALSE
(0), означающее, что при переполнении в результате
пиковой нагрузки соединение будет восстановлено.
Используйте для этой переменной значение TRUE
(1) только в тех случаях, когда вы реально уверены,
что прослушивающий соединения демон не способен
работать быстрее. В этом случае часть клиентов
будет получать отказы при попытке соединения с
сервером.
tcp_syncookiesЛогическая переменная
в файле
tcp_syncookies (требуется
ядро со включенной опцией
CONFIG_SYNCOOKIES)
управляет записью предупреждений synflood в журнальные
файлы при переполнении сокета. Эта функция может
использоваться для защиты от атак
SYN
flood. По умолчанию используется значение
FALSE (0).
Отметим, что
функции syncookies относятся к типу fallback и
их не следует использовать для попыток ограничить
число легитимных соединений с сервером. Если вы
видите предупреждения synflood в журнальных файлах
и их исследование показывает, что причиной является
значительное число легитимных соединений с сервером,
вам следует настроить другие параметры (
tcp_max_syn_backlog,
tcp_synack_retries,
tcp_abort_on_overflow),
чтобы избавиться от таких сообщений.
Использование
syncookies оказывает серьезное влияние на работу
протокола TCP, не позволяя использовать расширения
TCP, что может привести к существенному ухудшению
работы отдельных служб (например, транслятора
SMTP), незаметному на локальной машине, но отражающемуся
на доступе клиентов и других серверов к службам
данного сервера. Наличие предупреждений synflood
в журнальных файлах при отсутствии реальных атак
говорит о серьезных ошибках в конфигурации вашего
сервера.
tcp_stdurgЛогическая переменная
tcp_stdurg управляет интерпретацией
поля URG в заголовках TCP. Большинство хостов
использует старую интерпретацию BSD, установка
значения TRUE (1) приведет к интерпретации этого
поля в соответствии с документом Host requirements.
Использование значения TRUE может вызывать проблемы
при взаимодействии с хостами, поддерживающими
старый вариант интерпретации. По умолчанию используется
значение FALSE
tcp_max_syn_backlog
Целочисленное
значение в файле
tcp_max_syn_backlog
определяет максимальное число запоминаемых запросов
на соединение, для которых не было получено подтверждения
от подключающегося клиента. По умолчанию используется
значение 1024 для систем, в которых объем ОЗУ
превышает 128 Мбайт и 128 для систем с меньшим
объемом памяти. Если на сервере возникают перегрузки,
попытайтесь увеличить это значение.
tcp_window_scalingЛогическая переменная
tcp_window_scaling управляет
возможностью масштабирования размера окна в соответствии
с RFC 1323.
tcp_timestampsЛогическая переменная
в файле
tcp_timestamps определяет
интерпретацию временных меток в соответствии с
документом RFC 1323.
tcp_sackЛогическая переменная
tcp_sack включает режим SACKS
(select acknowledgments).
tcp_fackЛогическая переменная
tcp_fack управляет режимом предотвращения
насыщения FACK и быстрым повтором передач. При
установке
tcp_sack=0 эта переменная
не используется.
tcp_dsackЛогическая переменная
tcp_dsack позволяет протоколу
TCP передавать “дубликаты” пакетов
SACK.
tcp_ecnЛогическая переменная
tcp_ecn управляет механизмом
ECN для протокола TCP.
tcp_reorderingЦелочисленная
переменная
tcp_reordering определяет
максимальное разупорядочивание пакетов в потоке
TCP. По умолчанию используется значение 3.
tcp_retrans_collapse Логическая переменная
tcp_retrans_collapse управляет
режимом совместимости (Bug-to-bug) для некоторых
устаревших принтеров. При повторной передаче предпринимается
попытка отправить пакет большего размера, чтобы
преодолеть проблемы, связанные с ошибками в некоторых
реализациях стека TCP.
tcp_wmemВекторная переменная
в файле
tcp_wmem содержит 3 целочисленных
значения, определяющих минимальное, принятое по
умолчанию и максимальное количество памяти, резервируемой
для буферов передачи сокета TCP.
Минимум:
каждый сокет TCP имеет право использовать эту
память по факту своего создания. Размер минимального
буфера по умолчанию составляет 4 Кбайт (4096)
Значение
по умолчанию: количество памяти, допустимое
для буфера передачи сокета TCP по умолчанию. Это
значение применяется взамен параметра
/proc/sys/net/core/wmem_default,
используемого другими протоколами и обычно меньше,
чем
/proc/sys/net/core/wmem_default.
Размер принятого по умолчанию буфера обычно (по
умолчанию) составляет 16 Кбайт (16384)
Максимум:
максимальное количество памяти, которое может
быть автоматически выделено для буфера передачи
сокета TCP. Это значение не отменяет максимум,
заданный в файле
/proc/sys/net/core/wmem_max.
При “статическом” выделении памяти
с помощью
SO_SNDBUF этот параметр
не имеет значения. По умолчанию размер максимального
буфера составляет 128 Кбайт (131072).
tcp_rmemВекторная (минимум,
по умолчанию, максимум) переменная в файле
tcp_rmem
содержит 3 целых числа, определяющих размер приемного
буфера сокетов TCP.
Минимум:
каждый сокет TCP имеет право использовать эту
память по факту своего создания. Возможность использования
такого буфера гарантируется даже при достижении
порога ограничения (moderate memory pressure).
Размер минимального буфера по умолчанию составляет
8 Кбайт (8192).
Значение
по умолчанию: количество памяти, допустимое
для буфера передачи сокета TCP по умолчанию. Это
значение применяется взамен параметра
/proc/sys/net/core/rmem_default,
используемого другими протоколами. Значение используемого
по умолчанию буфера обычно (по умолчанию) составляет
87830 байт. Это определяет размер окна 65535 с
заданным по умолчанию значением
tcp_adv_win_scale
и
tcp_app_win = 0, несколько
меньший, нежели определяет принятое по умолчанию
значение tcp_app_win.
Максимум: максимальный размер буфера, который может быть автоматически
выделен для приема сокету TCP. Это значение не отменяет максимума, заданного
в файле
/proc/sys/net/core/rmem_max. При статическом выделении памяти
с помощью SO_RCVBUF этот параметр не имеет значения. Используемый по умолчанию
максимум составляет 87380 * 2 байт.
tcp_mem
Векторная переменная
в файле
tcp_mem содержит 3 целых
числа (порога), определяющих отношение протокола
TCP к выделению памяти.
Нижний
порог: при значениях ниже этого уровня
TCP не заботится о расходе памяти.
Порог
ограничения: при достижении этого порога
TCP контролирует размер выделяемой памяти и переходит
в режим
memory pressure (нехватка
памяти), из которого выходит при снижении расхода
памяти до нижнего порога.
Верхний
порог: число страниц памяти, доступных
для создания очередей всеми сокетами TCP.
Значения всех
порогов рассчитываются во время загрузки ОС с
учетом доступной на компьютере памяти.
tcp_app_win
Целочисленное значение
tcp_app_win определяет размером окна, резервируемого
для буфера приложений - max (window/2^tcp_app_win, mss). Нулевое значение в
этом файле означает отсутствие резервирования. По умолчанию используется значение
31.
tcp_adv_win_scaleЦелочисленный
параметр в файле
tcp_adv_win_scale
определяет степень перекрытия буферов - bytes/2^tcp_adv_win_scale
при положительных значениях параметра и bytes
- bytes/2^(-tcp_adv_win_scale) при tcp_adv_win_scale
<= 0 (bytes - размер буфера в байтах).
По умолчанию используется значение 2.
tcp_rfc1337Логическая переменная
tcp_rfc1337 определяет соответствие
стека TCP требованиям RFC 1337. Значение FALSE
(0), используемое по умолчанию, говорит о несоответствии
RFC 1337 и сохранении действия параметра TCP TIME_WAIT.
tcp_low_latencyЛогическая переменная
в файле
tcp_low_latency определяет
приоритет “задержка - пропускная способность”.
При установленном значении (1) стек TCP предпочитает
меньшую задержку большему пропусканию. По умолчанию
эта опция не установлена (0) и предпочтение отдается
пропускной способности. Примером приложения, где
не следует использовать принятое по умолчанию
значения, является кластер Beowulf.
tcp_westwoodЛогическая переменная
tcp_westwood управляет поддержкой
алгоритма контроля насыщения TCP Westwood+, использующего
на стороне отправителя модифицированный стек TCP
Reno, в котором оптимизированы функции контроля
насыщения. Этот алгоритм основан на оценке сквозной
полосы для выбора окна насыщения и порога медленного
старта после случая насыщения. Используя такую
оценку, алгоритм TCP Westwood+ адаптивно устанавливает
порог медленного старта и размер окна насыщения
с учетом ожидаемой полосы в период насыщения.
Алгоритм TCP
Westwood+ является существенно более беспристрастным
по сравнению TCP Reno в проводных и беспроводных
сетях.
По умолчанию
установлено значение 0 (алгоритм не используется).
tcp_vegas_cong_avoid Логическая переменная
tcp_vegas_cong_avoid управляет
использованием алгоритма блокировки насыщения
TCP Vegas.
TCP Vegas использует
на серверной стороне модифицированный стек TCP,
который позволяет предупредить насыщение за счет
оценки полосы. TCP Vegas регулирует исходящий
поток трафика путем изменения окна насыщения.
Стек TCP Vegas должен обеспечивать меньший уровень
потери пакетов, но этот алгоритм менее агрессивен,
нежели TCP Reno.
По умолчанию
алгоритм TCP Vegas отключен (0).
tcp_bicЛогическая
переменная tcp_bic управляет
механизмом контроля насыщения BIC-TCP, использующим
на серверной стороне модифицированный стек TCP,
который обеспечивает линейное изменение RTT при
больших окнах в сочетании с масштабируемостью
и дружественностью TCP. Протокол объединяет в
себе две схемы - additive increase и binary
search increase. При большом окне насыщения аддитивный
рост с большим инкрементом обеспечивает линейное
изменение RTT в сочетании с хорошей масштабируемостью
При небольшом окне насыщения, метод binary search
increase обеспечивает дружественность TCP. Описание
алгоритма можно загрузить с сайта http://www4.ncsu.edu:8030/~lxu2/xu_INFOCOM_2004.pdf.
По умолчанию алгоритм отключен (0).
tcp_bic_low_windowЦелочисленная
переменная в файле
tcp_bic_low_window
задает (в пакетах) размер порогового окна, при
котором алгоритм BIC-TCP начинает подстраивать
размер окна насыщения. Ниже этого порога алгоритм
BIC-TCP ведет себя подобно TCP Reno. По умолчанию
используется значение 14.
tcp_bic_fast_convergenceЛогическая переменная
tcp_bic_fast_convergence заставляет
алгоритм BIC-TCP быстрее реагировать на изменения
окна насыщения. Это позволяет двум потокам в одном
канале сходиться быстрее. По умолчанию опция включена
(1).
ip_local_port_range
Файл
ip_local_port_range
содержит 2 целых числа, определяющих диапазон
значений, используемых протоколами TCP и UDP для
выбора локальных номеров портов. Первое число
задает минимальный номер локального порта, второе
- максимальный. Установленные по умолчанию
значения зависят от размера оперативной памяти
на компьютере - при объеме памяти 128 Мбайт
используется диапазон 32768 - 61000, при
меньшем объеме памяти - 1024 - 4999 или
еще меньше.
Заданные в этом
файле значения определяют число активных соединений,
которая система может инициировать (вводить) одновременно,
если в данной системе не поддерживается расширение
TCP extensions (timestamp - временные метки).
При включенной опции tcp_tw_recycle (принято по
умолчанию) диапазона 1024 - 4999 достаточно для
возможности организации до 2000 соединений в секунду,
если система поддерживает временные метки.
ip_nonlocal_bind
Логическая переменная
ip_nonlocal_bind позволяет связывать
(bind) процессы с нелокальными адресами IP. Такое
связывание может быть весьма полезно, но мешает
работе некоторых приложений. По умолчанию связывание
отключено (0).
ip_dynaddr
Логическая переменная
ip_dynaddr определяет возможность
использования динамических адресов IP. При установке
для этой переменной значения >1, факты смены
динамических адресов будут протоколироваться в
журнальных файлах системы. По умолчанию поддержка
динамических адресов отключена (0).
Переменные ICMP
icmp_echo_ignore_allЛогическая переменная
icmp_echo_ignore_all позволяет
включить блокировку всех пакетов ICMP Echo. При
значении TRUE (1) ядро будет игнорировать все
запросы ICMP Echo.
icmp_echo_ignore_broadcasts
Логическая переменная
icmp_echo_ignore_broadcasts позволяет
включить блокировку широковещательных запросов
ICMP Echo. При значении TRUE (1) ядро будет игнорировать
все широковещательные запросы ICMP Echo.
icmp_ratelimit
Целочисленная
переменная
icmp_ratelimit задает
максимальную скорость передачи пакетов ICMP, тип
которых соответствует маске icmp_ratemask, описанной
в следующем параграфе. Значение 0 отменяет все
ограничения, остальные значения задают максимальное
количество пакетов в течение периода jiffy.
По умолчанию используется значение
100
icmp_ratemask
Целочисленное значение переменной
icmp_ratemask определяет маску типов
пакетов ICMP, для которых действуют ограничения, заданные переменной icmp_ratelimit.
Значимые биты: IHGFEDCBA9876543210
Маска по умолчанию: 0000001100000011000
используемое по умолчанию значение маски в десятичном формате составляет 6168.
Идентификаторы значимых битов:
0 Echo Reply (отклик)
3 Destination Unreachable (адресат недоступен) *
4 Source Quench (умерьте свой пыл) *
5 Redirect (перенаправление)
8 Echo Request (запрос)
B Time Exceeded (время истекло) *
C Parameter Problem (некорректные параметры) *
D Timestamp Request (запрос временной метки)
E Timestamp Reply (временная метка)
F Info Request (запрос информации)
G Info Reply (запрошенная информация)
H Address Mask Request (запрос маски сети)
I Address Mask Reply (маска сети)
Значения для отмеченных звездочкой (*) типов пакетов ограничиваются
по умолчанию (показанной выше маской)
icmp_ignore_bogus_error_responsesЛогическая переменная
icmp_ignore_bogus_error_responses
управляет выдачей предупреждений при получении
от маршрутизаторов, не соответствующих требованиям
RFC 1122, фиктивных откликов на широковещательные
запросы. Значение TRUE (1) отключает выдачу таких
предупреждений и появление соответствующих записей
в журнальных файлах.
По умолчанию используется значение
FALSE (0).
igmp_max_membershipsЦелочисленная
переменная
igmp_max_memberships
устанавливает максимальное число multicast-групп,
в которые может входить данный хост.
По умолчанию установлено значение
20.
Конфигурация интерфейсов
Конфигурационные
параметры интерфейсов хранятся в каталогах
/proc/sys/net/ipv4/conf/interface/*
(interface - имя интерфейса, например, eth0)
для каждого из сетевых интерфейсов компьютера
и в каталоге
/proc/sys/net/ipv4/conf/all/*,
содержащем параметры, применяемые ко всем интерфейсам
сразу.
log_martiansЛогическая переменная
log_martians управляет записью
информации о пакетах с невозможными адресами в
журнальные файлы системы. Запись для конкретного
интерфейса активизируется, если установлено значение
TRUE (1) в файле
/proc/sys/net/ipv4/conf/all/log_martians
или одноименном файле для данного интерфейса.
accept_redirectsЛогическая переменная
accept_redirects определяет восприятие
пакетов ICMP Redirect. Такие пакеты принимаются
интерфейсом, при выполнении любого из приведенных
ниже условий:
-
для интерфейса, поддерживающего
пересылку пакетов, установлено значение TRUE
(1) в обоих файлах /proc/sys/net/ipv4/conf/{all,interface}/accept_redirects;
-
для интерфейса, поддерживающего
пересылку пакетов, установлено значение TRUE
(1) по крайней мере в одном из файлов /proc/sys/net/ipv4/conf/{all,interface}/accept_redirects.
По умолчанию
в этих файлах задано значение TRUE (1) для хостов
и FALSE (0) для маршрутизаторов.
forwardingЛогическая переменная
forwarding управляет возможностью
пересылки пакетов IP для одного или всех интерфейсов.
mc_forwardingЛогическая переменная
mc_forwarding управляет пересылкой
пакетов с групповыми (multicast) адресами. Для
использования групповой адресации требуется ядро,
со включенной опцией
CONFIG_MROUTE
и демон, поддерживающий групповую маршрутизацию
(mrouted). Требуется также установить значение
TRUE (1) в файле
/proc/sys/net/ipv4/conf/all/mc_forwarding.
medium_idЦелочисленная
переменная
medium_id указывает
тип среды, к которой подключен интерфейс с точки
зрения распространения широковещательных пакетов.
Если два устройства подключены к разнотипным средам,
широковещательные пакеты данной среды будет получать
только одно из этих устройств (подключенное к
данной среде).
Используемое
по умолчанию значение 0 говорит, что к сетевой
среде подключен только один интерфейс, а значение
1 говорит о том, что тип среды неизвестен.
В настоящее время
этот параметр используется для управления поведением
proxy_arp - функции proxy_arp разрешены
для пакетов, пересылаемых между устройствами,
подключенные к разнотипным средам.
proxy_arpЛогическая переменная
proxy_arp управляет выполнением
proxy-функций для пакетов ARP. Функция proxy_arp
для интерфейса используется, если установлено
значение TRUE (1) по крайней мере в одном из файлов
/proc/sys/net/ipv4/conf/{all,interface}/proxy_arp.
shared_mediaЛогическая переменная
shared_media определяет поведение
по отношению к перенаправлению пакетов для разделяемой
среды (shared media redirect). При значении TRUE
(1) маршрутизатор будет передавать, а хост -
воспринимать перенаправленные пакеты в соответствии
с документом RFC 1620. Значение этой переменной
может отменять значение переменной secure_redirects
(см. описание следующего параметра).
Параметр shared_media
для интерфейса будет иметь значение TRUE (1) при
установке значений 1 в любом из файлов /proc/sys/net/ipv4/conf/{all,interface}/shared_media.
По умолчанию используется значение TRUE.
secure_redirectsЛогическая переменная
secure_redirects позволяет установить
режим восприятия пакетов
ICMP redirect
только от шлюзов, указанных в списке используемых
по умолчанию. Параметр
secure_redirects
для интерфейса будет иметь значение TRUE (1),
если указана 1 по крайней мере в одном из двух
файлов
/proc/sys/net/ipv4/conf/{all,interface}/secure_redirects.
По умолчанию параметр имеет значение TRUE. Значение
этого параметра может отменяться значением параметра
shared_media, описанного в предыдущем параграфе.
send_redirectsЛогическая переменная
send_redirects управляет для
маршрутизаторов возможностью перенаправления (redirect).
Параметр
send_redirects для интерфейса
будет иметь значение TRUE (1), если указано значение
1 по крайней мере в одном из двух файлов
/proc/sys/net/ipv4/conf/{all,interface}/send_redirects.
По умолчанию параметр имеет значение TRUE.
bootp_relayПри установленном
(1) значении логической переменной
bootp_relay
пакеты с адресом отправителя 0.b.c.d, не адресованные
данному хосту, будут восприниматься как локальные.
Предполагается, что демон BOOTP relay будет воспринимать
и пересылать такие пакеты. Для поддержки протокола
BOOTP relay интерфейсами хоста в файле
/proc/sys/net/ipv4/conf/all/bootp_relay
также должно быть установлено значение TRUE (1).
По умолчанию используется значение FALSE (0).
Эта функция еще не реализована.
accept_source_routeЛогическая переменная
accept_source_route управляет
восприятием пакетов с установленной опцией SRR.
Для того, чтобы интерфейс мог принимать такие
пакеты значение TRUE (1) должно быть указано также
в файле
/proc/sys/net/ipv4/conf/all/ accept_source_route. По умолчанию
пакеты с опцией SRR не принимаются
(FALSE)
хостами и принимаются (TRUE) маршрутизаторами.
rp_filterПеременная
rp_filter
управляет возможностью проверки пути к отправителю
(reversed path) в соответствии с RFC 1812. Значение
TRUE (1) включает такую проверку и рекомендуется
для хостов с одним сетевым интерфейсом и маршрутизаторов
тупиковых (stub) сетей. При использовании такой
проверки могут возникать некоторые проблемы в
сетях с петлями, использующих протоколы без гарантии
доставки (например, sort или RIP), а также статические
маршруты. При значении 0 проверка обратного пути
не проводится.
Для проверки
корректности отправителя тем или иным интерфейсом
системы требуется также установка значения TRUE
(1) в файле
/proc/sys/net/ipv4/conf/all/rp_filter.
По умолчанию
используется значение FALSE (0), но некоторые
дистрибутивы изменяют это значение в сценариях
загрузки системы.
При использовании
программы IPsec (см. параграф на стр. ), для большинства
случаев требуется установка значения 0.
arp_filterЛогическая переменная
arp_filter управляет фильтрацией
пакетов ARP.
Значение TRUE
(1) разрешает использовать множество интерфейсов
в одной подсети и выдавать отклики ARP для каждого
из этих интерфейсов в зависимости от того, будет
ли ядро передавать в ответ на запрос IP-адрес
данного интерфейс (этот требует поддержки в сети
маршрутизации по адресу отправителя - source
based routing). Иными словами, это позволяет определить,
какой из интерфейсов одной подсети будет отвечать
на запросы ARP.
Используемое
по умолчанию значение FALSE (0) позволяет ядру
отвечать на запросы arp с адресами от других интерфейсов.
Это может показаться ошибкой, но обычно имеет
смысл, поскольку повышает вероятность успешного
обмена информацией. Адреса IP принадлежат хосту
как целому, а не отдельным его интерфейсам. Однако
в более сложных системах (например, при распределении
нагрузки между каналами - load-balancing)
передача адресов других интерфейсов может вызывать
проблемы.
Для того, чтобы
разрешить (TRUE)
arp_filter для
интерфейса, значение TRUE должно быть установлено
по крайней мере в одном из 2 файлов
/proc/sys/net/ipv4/conf/{all,interface}/arp_filter.
arp_announceЦелочисленная
переменная
arp_announce определяет
тип (уровень) отклика интерфейсов с множеством
IP-адресов на запросы ARP.
Установленное
по умолчанию значение 0 позволяет использовать
любой локальный адрес, заданный для данного интерфейса.
Значение 1 используется для попытки избежать передачи
локальных адресов, которые не относятся к подсети
получателя для данного интерфейса. Этот режим
полезен в тех случаях, когда адресат, доступный
через данный интерфейс, в откликах ARP требует
IP-отправителя из подсети, заданной для локального
интерфейса получателя. При генерации запроса проверяются
все подсети, включающие IP-адрес получателя и
выбирается в качестве исходящего адрес в одной
из таких подсетей. При отсутствии таких подсетей
используются правила уровня 2. Значение 2 показывает
необходимость использования лучшего из локальных
адресов для данного получателя. В этом режиме
адрес отправителя в пакете IP игнорируется и предпринимается
попытка выбрать локальный интерфейс, наиболее
подходящий для связи с хостом-получателем. Выбор
адресов осуществляется путем просмотра первичных
IP-адресов для всех подключенных подсетей и из
них выбирается тот, который входит в подсеть получателя.
Если подходящего локального адреса нет, выбирается
первый локальный адрес исходящего интерфейса или
всех прочих интерфейсов в надежде на получение
отклика на запрос (иногда даже независимо от анонсируемого
адреса IP).
Уровень определяется
максимальным из двух значений
/proc/sys/net/ipv4/conf/{all,interface}/arp_announce.
Повышения уровня
ограничений увеличивает шансы на получение отклика
на запрос, а снижение дает более точную об отправителе.
arp_ignoreЦелочисленная
переменная
arp_ignore определяет
режим передачи откликов на полученные запросы
ARP, относящиеся к локальным IP-адресам:
0 (по умолчанию) - отклики
выдаются для любого локального адреса IP, связанного
с любым интерфейсом;
1 - отклики выдаются только
в тех случаях, когда интересующий адрес IP связан
с принявшим запрос интерфейсом;
2 - отклики выдаются только в
тех случаях, когда интересующий адрес IP связан
с принявшим запрос интерфейсом и этот адрес находится
в той же подсети, из которой поступил запрос;
3 - отклики выдаются только
на запросы для глобальных и канальных адресов;
4-7 - зарезервированы;
8 - отклики не выдаются
ни для каких локальных интерфейсов.
Используется большее из 2 значений
в файлах /proc/sys/net/ipv4/conf/{all,interface}/arp_ignore.
tag
Целочисленная переменная
tag позволяет задать значение, которое может
использоваться при необходимости. По умолчанию установлено значение 0.
Переменные IPv6
Переменные конфигурации
IPv6 доступны в файлах
/proc/sys/net/ipv6/*.
Для протокола IPv6 не используется отдельных глобальных
переменных типа
tcp_*.
Управление работой моста.
Переменные этой
группы сохраняются в файлах каталога
/proc/sys/net/bridge/.
bridge-nf-call-arptables
Логическая переменная
bridge-nf-call-arptables управляет
передачей трафика ARP в цепочку FORWARD пакетного
фильтра arptables. Установленное по умолчанию
значение 1 разрешает передачу пакетов фильтрам,
0 - запрещает.
bridge-nf-call-iptables
Логическая переменная
bridge-nf-call-iptables управляет
передачей проходящего через мост трафика IPv4
в цепочки iptables. Используемое по умолчанию
значение 1 разрешает передачу пакетов для фильтрации,
0 - запрещает.
bridge-nf-filter-vlan-tagged
Логическая переменная
bridge-nf-filter-vlan-tagged определяет возможность
передачи трафика IP/ARP с тегами VLAN программам фильтрации пакетов (arptables/iptables).
Установленое по умолчанию значение 1 разрешает передачу пакетов с тегами VLAN
программам фильтрации, 0 - запрещает.