В этой статье описаны параметры протокола IP, значения которых содержатся в файлах виртуальной файловой системы /proc. Значения параметров задаются во время загрузки операционной системы и могут быть изменены в любой момент с помощью команд типа
echo "значение" > /proc/sys/net/ipv4/имя_файла
Отметим, что измененые в процессе работы значения не будут сохранены после перезагрузки системы. Если вы хотите сохранить изменения, включите соответствующую команду в один из сценариев загрузки системы.
При установке значений тех или иных параметров следует руководствоваться требованиями к хостам и маршрутизаторам, изложенными в документах RFC 1122, RFC 1123 и RFC 1812. Документы можно загрузить с сайта http://rfc-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
Логическая переменная 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 – запрещает.
|