Icmp ignore bogus error responses

�����blueflux at koffein.net ������Copyright (C) 2002 Oskar Andreasson ����

Ipsysctl tutorial 1.0.4

�����blueflux at koffein.net
������Copyright (C) 2002 Oskar Andreasson
����

�������: ������ �������

�����kis_an at mail.ru
����

�������� ��������: Russian Linux Gazette

������� (~600 ��)

������ ���������


��������� ������ ��������� ����� �������� �� ������: http://ipsysctl-tutorial.frozentux.net/
.

����������� �����������, ��������������� �/��� �����������
������� ��������� ��� ��� �����, � ������������ �
������������, ��������� � GNU Free Documentation License,
������ 1.1. ������������� ��������� �������� ������
«��������» � ��� ���������� ����� �������, � ��� ��
�������, ������������ ������� «Original Author: Oskar
Andreasson», ����� GNU Free Documentation License
�������� � ������ �������� � ��������� � ������ «GNU
Free Documentation License».

��� �������� � ������ ����������� ��������� ��� ��������
GNU General Public License. ��� �������� ��������
����������������� � ����� ������������, ����������������
�/��� ���������������� � ������������ � ��������� GNU General
Public License ������ 2, �������������� Free Software
Foundation.

�������� ���������������� � ������� �� ��, ��� ��� �����
������� ���, �� ��� ����� ���� ��������. �� ��������������
����������� ����������� � ������ GNU General Public
License.

� ������ ���������� ������ ���������������� ����� GNU
General Public License, � ������ «GNU General Public
License»; � ������ �� ���������� �� ������ �������� ��
������ Free Software Foundation, Inc., 59 Temple Place, Suite
330, Boston, MA 02111-1307 USA



����������

���� �������� ����������� ����, ��� ����� ��� � ������ ���
�������� � ������ ������� ����� ����������� � ���, ��� ����������
��������. � �������, ��� ���������� ���������� ����������,
���������� ��� ���������� ����������.

����� ����, � ���� ��������� ���� �������� ���� �����, �� ��,
��� ��� ��������� ���������, ����� � ����� �� ����������, �� ��,
��� ������������ ���� �� ���� ������, ����� � ����� ���������� �
������ �� ��, ��� ��� ����� ����� �������� ������� ��������
�����.


�����������

1. ����� �������� ��� �����������

� ��������� � ������ ��� ���� ���������� � ������� �� ��,
��� �� ������� ��� ������ ��������� IP (�� ����. Internet Protocol — ����������
��������, ����. �����)
, ��������������� ����� Linux 2.4.
���� ������������ � ������� ���� ����������� ������, �������
������� ��� �������� ��������� ���� «�� ����».
����� �������� ����� ���� ������������ ��� ����������
������������������, � ��� �� ��� ��������� ������
������������. � ���� ��������� �� ����� ����������� ���
�����������, ������� ��������� � ���� �������� ����������
�������� — sysctl, ����� �� ������������ ��� ���� ��������
�� ���������� ������� �����������. �������, ��� ���� ��������
�������� ����� ���������� ������������ �� ������ ����. ��
����� ���� ���� �� ���������� ���������� �������
������������, ������� �������� ��������� �� ��� ���������
ipsysctl, ���������� ���������� ���� ���� ip-sysctl.txt,
�������� � �������� ������������, �������������� ��������
������ ����, �� ��� ����� � ����� ������ �������� ���������
���������, ������� ����� �� ���� ������������.

� �������, ��� ����� ������������ ����������, �������
�������� �������� ��������� ��������, ������ ��� ���� ��
������� ����� ��������� � ������� �� ��������. ���� �� �����
���� �������� ���������� �������� ��� ������ ���������� — ��
�����������, �����������, ��������� � ��������, ���������� ��
������ �����, ������ ���, ��� �� ������� �����������.
������������ ������� — ���������� ���� ���������, ����� �
��������� �� ���� ������ ��� ����������� ��-�� ��������� �
���� � ��. ���� ��� ���������� ����� ������� sysctl, �������
�� ����������� ����� — �������� ��� � � ���������� ��������
�� �������� ��� ����� �������.


���� �������� ������������ ��� ����, ��� ���������
��������� ���� �������� ��� ������������ ������� Linux �
�����, ��� � TCP/IP � ���������. ��� ��������� �����
��������� �� ������ �������� �������� �������� � TCP/IP, ��
������ ����� — ��� ����� ��������� ������ � �� ����� ������
�� �������. ��� ��� �� ����������� ��������� ���������
������������� � ������ ���������� ����� �� ���� TCP/IP.

���� �������� �� ������������ ��� �������� � Linux, ��
���� �� ��� ����� ��������� ������������, ���� �� �����������
������������ ����������� � �������� ����������� �����
���������. ���� ���� ��������� — ����� ��������� ��������� �
��������� ��������� �� 100% � ���, ��� ���������� �����
������������� ����, ��� ������ �� �������, ���������
��������� ��������� ����� �������� � ������ �����������
�����������.

���� �������� ������������� ����, ��� ������������
������������ � ������������� ������. ����� �� ������� �������
�������� � ��������� ����������, ��������� ����� ���������
ipsysctl, ��� ������� ��� ������������ ������ � ���������
����, ��� ���� ������������� ������ �� ���.


3. ��� ������ ��� �����������

���� �������� ����� �������� � �����, ������� ��� ���
�������. ���� ��� ���������� ���� ��������� ������� —
������� ��. ���� ����� �� ������� �� ������������ � sysctl —
���������� ������ �����, � ����� ������ ������� � ��������
������������ ��� ��������. ���� ��� ��������� �������
��������� �������� �� ������ �� ����� — ������� ���. ���� ��
������������� ������, ������� � ����� — ������� ���. ����
��� �������� ������ � ������������� ���� — � �� ���� ������,
����� �� ������ �����!

���, ��� � ���� ������� — ������� �� �������, �������
������������ ��� ��� �������. ���� ���-�� ��� ��� ��������
���������� — ���������� ��������������� ������� ��� � ����
��������� ��� ��� ���� ���. � �� ���� ��������� ��� — ���
������ ���� ��������, ��� ������ �� ��� ��� ����� ���������
�������� � ��� ������ ������ — ��� ��� ����������.


4. ������������ ����������

� ������ ��������� ������������ ��������� ���������� ��
��������� ���������� ���������� ����:

  • �������, �������� �������������, � �����, ���������� �
    ���������� ������ ������, ������������ ������������
    �������, ����� ����, ���� ������������ ������������
    ������ �������:

    [blueflux@work1 neigh]$ ls
    default  eth0  lo
    [blueflux@work1 neigh]$
       
    
  • ��� ������� � ����� �������� ������������ ������ ������� .

  • ��� ���������� �� ���������� �����������, � ��� �� �
    ���������� ���������� ���� ��� ����������� ��������
    ������� (��������: �������� (loopback) ���������),
    ������������ ��������.

  • ����� �� ����� ���������� ����� �������.

  • ����� ������ � ���� � ������ ������������ �����
    �������: /usr/local/bin/iptables.


5. �������������

��� ����������� ���������� �� ��������, ������������ �
/usr/src/linux/Documentation/networking/ip-sysctl.txt. ������
��� ����������, � ����� �� ������������� �����, ������� �����
����� ��� ��� ���������. ���, ��� ����� ������ ��� ����
��������� � ��������� ���������, ��� ��� ��� ����� ����������
���������.

� ����� �� �������� ���� ��������������� ����
�������������, �������������� � ������ ��� ����������� �����
���������� TCP/IP, ������� ������ ������������ �����. �
�������, ��� ����� ������ ���� ����� � ���������� Linux ����
������������, �������� ���� ���, ���� ��� ����������.

� ��� �� ����� �� ������������� Fabrice Marie ��
���������� ������ �� ��������������� � �� ���������, ����� �
���� ���-�� �� ����������. �������� ������� ���� ����������
�� ������ �������� netfilter mailing list �� ������ ���
���������� ��������� ��������. �������� ������� ����
���������� ������� linuxsecurity �� �� ��������, �����������
��� ������������ ���� ��������� �����, � ����� � ����������
�� ���� ������ ����������.

���� �������� �������� ������������� �������, ��� ������
��� ��������� ������.


����� 1. ��������

�������� ������� /proc — ��� ����������� ��������
�������, ������� �� ���������� � ����������������, ����� ��� �
«������» ����. �������� ������� /proc — ��� ����������� ���� Linux. ���
����� �������������� � � ������ ������������ ��������, �� �
���� ����������������� � ������ ���������������.


1.1. ����������� �������� �������

��� �������� «����������� �������� �������»
��������������� ����� �������� �������, ������� �� �����
������ �� ������� �����, � ������� �� ������� ��������
������. ����� �� ����, ��� �� ������� � ����������� ��������
������� �� �������� � ��������� ����������� �� ���������
��������� — ������ � ����������� ������. �����������
�������� ������� ��������� ����� «�� ����», �
�������� �������� � ���������� ������ �����, ����� �� �������
� ��� ��� ���������� ����� ���� �������� � �� ��������.

Note

����������� �������� ������� ����� ����� ���������
��������������. ��� ����� �������������� ��� �������
RAM-����, ���� ����� ���������� ����� �� ���������
��������. �� ����������� �������� Amiga ���
������������ ��� ����������� ������ � ������� ��
�������. ������� ����(�) ���������� � ������, ����� �
�������� ����������� ������ ������� � ����(�)
���������� �� ���. ������, ��� ����� �������� ���
������ ��������� ����� �������� ��� ������������.


1.2. �������� �������
/proc

����������� �������� ������� /proc �������� ������� ����������
����������, ��������� �� ���� �� ����� ���������� �
�������������� ������ ���, ����� �� ��������� ����������� ��.
��� ���������� ������������ ��� ������� �������� ������� —
�� ������ ������������� �����, �������������� �� ������
��������� � �.�., �� ���� ��� ��, ��� �� ������ ������ � �
������� �������� �������. ������, ����������� ������ �
�������� ������� /proc �������� ������ ��� ������, �.�.
�� ����� ���� ��������. ��� ����� ������������� ���� ���
����, ����� ������������ ����������� ��� ����������.

����� �� ���������, ��������� �� ������-������, ��������
������� /proc/sys. ��� ����������
(«�����»), ������������� � ���� �������� � ���
������������ �������� ��� ��� ������, ��� � ��� ������.

� ���� ��������� ��������������� Internet Protocol ������
4 (IPv4). �������������� ��� ������ ��������� � �������� /proc/sys/net/ipv4. ����� ���������
��� ��������� ����� IPv4, ������� TCP, UDP, ICMP � ARP.


1.3. ������� �������� �������� �������
/proc

�������� ������� /proc �������� ��������� ��������
��������� � ������, ������� � ����� ������ ��� ������� �
������������ ����� ipv4.

������ ����� ������� ��������� � ���, ��� ��� ��������
������� �������� �������� ���������� ������������ ���������.
������ �� ���� ������������ ��������� ����� ����������������
��������� � ���� ��� ����� ��������� �������� � �������.
����� ����������� ����� ������� — ��� ���� ��������� �����
������� � ��� ������, ���������� ����� �������� ���������� �
������ �������, ���� ���������� ��������� ������, ������� ���
������� �������, ������ �� «������� �������
�������» (cwd), ���������� ���������, ������ ��
����������� ���� � �.�..

����� ����, ����� ��������� �������� ����� ������ ������ �
���������. ���� ���������� ������ ������:

[blueflux@work1 ]$ ls -l /proc
total 0
....
-r--r--r--    1 root     root            0 Sep 19 18:09 apm
dr-xr-xr-x    4 root     root            0 Sep 19 10:52 bus
-r--r--r--    1 root     root            0 Sep 19 18:09 cmdline
-r--r--r--    1 root     root            0 Sep 19 18:09 cpuinfo
-r--r--r--    1 root     root            0 Sep 19 18:09 devices
-r--r--r--    1 root     root            0 Sep 19 18:09 dma
dr-xr-xr-x    4 root     root            0 Sep 19 18:09 driver
-r--r--r--    1 root     root            0 Sep 19 18:09 execdomains
-r--r--r--    1 root     root            0 Sep 19 18:09 fb
-r--r--r--    1 root     root            0 Sep 19 18:09 filesystems
dr-xr-xr-x    2 root     root            0 Sep 19 18:09 fs
dr-xr-xr-x    4 root     root            0 Sep 19 18:09 ide
-r--r--r--    1 root     root            0 Sep 19 18:09 interrupts
-r--r--r--    1 root     root            0 Sep 19 18:09 iomem
-r--r--r--    1 root     root            0 Sep 19 18:09 ioports
dr-xr-xr-x   18 root     root            0 Sep 19 18:09 irq
-r--------    1 root     root     268374016 Sep 19 18:09 kcore
-r--------    1 root     root            0 Sep 19 10:52 kmsg
-r--r--r--    1 root     root            0 Sep 19 18:09 ksyms
-r--r--r--    1 root     root            0 Sep 19 18:09 loadavg
-r--r--r--    1 root     root            0 Sep 19 18:09 locks
-r--r--r--    1 root     root            0 Sep 19 18:09 mdstat
-r--r--r--    1 root     root            0 Sep 19 18:09 meminfo
-r--r--r--    1 root     root            0 Sep 19 18:09 misc
-r--r--r--    1 root     root            0 Sep 19 18:09 modules
lrwxrwxrwx    1 root     root           11 Sep 19 18:09 mounts -> self/mounts
-rw-r--r--    1 root     root          208 Sep 19 11:02 mtrr
dr-xr-xr-x    3 root     root            0 Sep 19 18:09 net
dr-xr-xr-x    2 root     root            0 Sep 19 18:09 nv
-r--r--r--    1 root     root            0 Sep 19 18:09 partitions
-r--r--r--    1 root     root            0 Sep 19 18:09 pci
dr-xr-xr-x    3 root     root            0 Sep 19 18:09 scsi
lrwxrwxrwx    1 root     root           64 Sep 19 12:01 self -> 2864
-rw-r--r--    1 root     root            0 Sep 19 18:09 slabinfo
-r--r--r--    1 root     root            0 Sep 19 18:09 stat
-r--r--r--    1 root     root            0 Sep 19 18:09 swaps
dr-xr-xr-x   10 root     root            0 Sep 19 14:39 sys
dr-xr-xr-x    2 root     root            0 Sep 19 18:09 sysvipc
dr-xr-xr-x    4 root     root            0 Sep 19 18:09 tty
-r--r--r--    1 root     root            0 Sep 19 18:09 uptime
-r--r--r--    1 root     root            0 Sep 19 18:09 version
[blueflux@work1 proc]$
 

������� ����� ���������� ��������� � �������, ������� ���
����������. ������ ���� �����, � ������� �� �������
«�����������», ��������: kcore. ���� ���� ������ ����������
���������� ����. ���� ����������� ����������� ��� �� ������
�� ����� (���� �� � ������� ������� cat), �� ��� �����
�������� � ��������� � ����� �������. � ��������� �������,
������� ����������� kcore � ������� ���� ����� �������� �
���������� ����� ���������� ������������, ���������� ��
�������� ������� �������� �����. ��� ��� ��� ���������� ��� �
���, ��� ����� ���� ����� � ����� �����������. � �����������
����� ���������� �������� ������� /proc ��������� ���
���������, ���������� ���������� ���� ��������� �����. ���
������� �������� ��������� ���������� (������), ����������� �
����� �������� ������� /proc, ���������� ������
����������:

  • cmdline — ��������� ������,
    ���������� ���� �� ����� ��������.

  • cpuinfo — ���������� � ����������� ������������ ����������
    (CPU)
    , ��������� ����, ����� � ��.

  • dma — ���������� � ���������
    ������� DMA � ���������, ������������ ��.

  • filesystems — ������� ���������� �
    �������� ��������, �������������� �����.

  • interrupts — ������� ������ ����
    IRQ, ������ � ���������� ����������, ����������� ��
    ������� �� ��� � ��������, ������������� ��� IRQ.

  • iomem — ����� ������.

  • ioports — ����� ������
    �����-������.

  • kcore — ������ ���� ������. ��
    ��������� ���������� ��� ����, ��� ����� ��������� ����
    �������. ������������ � ����� �������.

  • kmsg — ���������, ����������
    �����, �� ����� � �� ������ �������� ��������������,
    ��������� �������� �������� ������ ����������. � ��������
    ������������ � ���������� �����.

  • ksyms — ������� �������� ����,
    ������� ������������, � ��������, ��� �������.

  • loadavg — �������� ��������
    ������� �������� �� ��������� 1, 5 � 15 �����.

  • meminfo — ���������� ��
    ������������� ������.

  • modules — ���������� � ����
    ����������� ������� ����.

  • mounts — ������ �� ������ ���� �
    �������� ������� /proc, ������� �������� ����������
    ��� ���� �������������� �������� ��������.

  • partitions — ���������� ��� ����
    �������� �� ���� ����������� � �������.

  • pci — ���������� ��� ���� PCI
    ����������� � �������, ������� AGP � ����������
    ����������, ������������ � ���� PCI.

  • swaps — ���������� � ����
    �������������� swap-��������.

  • uptime — uptime ������� — ����� �
    ��������, ��������� � ������� ��������� ������������.

  • version — ������ ����, �������
    ���� ������ � ������ �����������.

������ �������� ���������:

  • bus — ���������� ��� ����
    ���������� �����, ����� ��� USB, PCI � ISA.

  • ide — ���������� ��� ���� �����
    IDE � ������� � IDE-�����������.

  • net — ��������� ������� ����������
    � ���������� ������� ����������.

  • scsi — ���������� � SCSI ����� �
    ������� � SCSI-�����������.

  • sys — ����� ����������, �������
    ����� ���� ��������. ���� ������ ������ /proc/sys/net/ipv4, ������� �����
    ����������� ����.

��� ������ — � �������� ������� /proc �������, ���������, �����
������, ���������� ������ ����������. �� �� ����������� �
�������� �� �� ������ ����������. ��� � ��� �������� — ��
����� ������������ ������ ������ �������� � ���������� ipv4,
��������� ����� ��������� sysctl.


����� 2. ��� ���������� ������ �
����������

���������� � ���������� ipsysctl ����� ���������� �����
���������, ������� ������������� ��� ���������� ���������
������. ������ �� ��� — � ������� ������� sysctl, �������
������� � ����������� ����������� �������������. ������ ������
— ����������� �������� ������� /proc, ������� ������ ������� �
����� ������������ Linux, � ������� ���� ������� � ����������
���� �������� �������.

����������� � �������� sysctl ������� �������, ��� �
�������� �������� /proc. ��� ��� ����������� �����, ��� ������
� �������� sysctl ��� ����� �������� ������, ��� ������ ����.
������ sysctl ���������� ������ ������� �������� ��������
���������� ���������. � ���� ������ ��� ����������� ���������
����� ���� �������� � ���������������� ���� � ����� ������� �
������� ������������ ������� ������� sysctl. ������� �������,
sysctl ���������� ����� ������ ������ ��������� �������.

�������� ������� /proc ������������� ����� ������� ������
��������� ��������. ������������������� � ����������� � �������
�� ����������� �����, �� ����� �������� ��� ��������� � ����
sysctl.conf � ����� �������������� �� �������� sysctl � ������
�������� �������. �������, ����� �������� �������� �� �����
��������� ��������, ������� ����� ��������� �����������
��������� ����� ��������� �������� ������� /proc, �� �����
�������� �������� � ������������� ����������������� �����,
������������� sysctl. �������, ���� �� ���������� ���������
���������� ������� ����� �������� ipsysctl, �� ����� �����
���������� � ������ ������� sysctl.


2.1. � ������� sysctl

��������� sysctl ����� �������������� ��� ���������
��������� ���������� ��� �������� ������ ���������� (�
������� ����������������� �����) �� ��������� ������. ��
������ �����, � ������� ���� ������� ����� �������� ������
���� ��������� ����������:

sysctl -a

��� ������� ������� ������ ���� ����������, � �������
����� ���������� �������� �������� «=» �� ��
��������. ��� ������ ������ ���������� ����� ������������
����� -a � -A. ���� -a �������� � ������ ������ ����������,
���������� �� �� �������� �������� «=», � ���� -A
— ������� ������ � ��������� ����� (��� ����������� � man
sysctl), �� �� ����������� ���� ��� ����������� (�������
����� — ����� � ��������� �����) ��� �� �����������, �������
� ������� ���� ���������� ����� ���������.

��� �� ������ ��������, ������������ ����� ���������� ��
����� ��������� � ipsysctl. �����, ��������� �� ��� ��
����������� � ������� ���������� (����� ������). � ipsysctl
�����������»/» ������� �� ������ «.»
(�����). ������ sysctl ��������� ��������� � �����������
«/», ��� ��� � ���� ������� ������� ��������� ��
������. ���� ��� ����� ����������� ��������� ����������, ��
������� ��� ����� ��������� �������:

sysctl net.ipv4.tcp_sack

��� ������ �������� � ���������� ������� ���������������
������ -w, �� ������� ������� ��� ���������� � �����
��������, ���������� �� ����� ������ «=», �.�.
�������� ���:

sysctl -w net.ipv4.tcp_sack=0

��� ������� ������� � ���������� tcp_sack value �������� 0
� ������� �� �� ����� � �������� �������������. ������ ������
����������. ��� ����, ����� ������ ���������, ����������� �
���������������� ����� (������� �� ��������� ����), �������
��������������� ������ -p, �������� ���:

sysctl -p

��� ������� ������ ��� ���������, ������� ���������� �
����� /etc/sysctl.conf. ���� ��������� ����������� �
������������� ������� ����� �����, �� ����� ������� ���� ����
� ��������� ������:

sysctl -p /etc/testsysctl.conf

���� �������� ��� ����������� ��������� ����� ����� �� ��
����� ��-��������� /etc/sysctl.conf, � �� ���������� �
��������� ������ — /etc/testsysctl.conf. ������
����������������� ����� sysctl.conf ����� �����. ������ �����
— ������, ������������ �������� «;» ���
«#», �������� �������������. ��� ��������� ������
���������� � ���� � ����������, ������� ��� ����� ����������,
����� ������� ������ «=» � ��������, ������� ������
���� �������� � ����������. ���� � ���������� �����������
������������ /proc/sys. ���� ���������� ������ �����
sysctl.conf:

# ��� �����������
net.ipv4.ip_forward = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 0
 

� ���� ����� � ���������� net.ipv4.ip_forward ������������
0, �.�. ����������� ���������� (�������� ���������� �������)
����� �������� ������������. ���� ��� ���������� ���������
������������ ����������� � Internet ����� �����������
������������, �� � ��� ���������� ����� �������� 1. ����� �
���������� net.ipv4.conf.all.rp_filter ������������ 1,
������� ��� �����, �������� ���������� ���������. ���
���������� �������� ���� � ������������� ���������� �������
�� �� ���������� ������.

� �������, ����������� ������ �������� 0 � ����������
kernel.sysrq (������� ���������� �� ����� �������� ���������
� ������� ����������), ����������� ���������� ������ sysrq,
������� ������������ ��� ����� �������. ��� ������ ���������
���� � ���� ������������������, ��� ����� �������� � ������
����������, �� ���������� ������ ipsysctl.


2.2. � ������� �������� �������
/proc

��������� �������� ������� /proc ������������� �������
������ � ���������� ipsysctl, ������, �� ����� �������� ���
������������� � �����������, ���� ����� ������� sysctl
����������� � �������. ����� ������ ������������ ��������
�������� /proc � ��������� �������, ����� ���������� ��
������ ���������� �� ������������� ������� �� ����� ��������.
��������, ���� �� ������ ������������, ���� �� ����������
ip_forward ���������� ��� ����� ����, ��� ����� �������
����������.

��� ��� ��� ����������, ����� ������������ ����� �������
������-������ ���������� — ��� ������� cat � echo. �����
������ �������� � ��, ��� � ��� ��� ����� ���� �� ���.
����������� ���������� ���������� ������� ���, ����� � ��� ��
���� ���� ������.

������ �����, ��� ����� ���������, ��� ��� ����������,
������� ����� ���� ������������ ��� ��������, ��������� �
�������� /proc/sys/. ��� ����������, ������� ����������� �
������ �����������, ��������� � �������� /proc/sys/net/ipv4.
� �����, ��� ������ ��� ������� �������� �������

cd /proc/sys/net/ipv4

����� ����������� ������ ��������� ����������, �������
��������� �������

ls

����� ������ — �� ��� ��� ��� ������ �����! ���� ��� ��
���, �� �� ������� ������ �� �� �����������! ����� ����������
�������� ���������� ����������, ��������� ������� cat ip_forward. �� �������� ���
����� ��������� �������� ���:

[blueflux@work1 ipv4]$ cat ip_forward
0
[blueflux@work1 ipv4]$
  

��� �� ������ ���������, �������� ���������� ����� ����
��������� �����, ��� ����� ������ � �������. ��� �����
���������� ��� ��������� � ����� ������ ������������,
��������� �����, ������� ������ � ������� ������ �������� ���
��������� �������.

Caution

� ��������� ���������� ���������� ����� ������� �
�������� ������� /proc. ���� � ���, ��� ��� ����� ��
������ ������ «������» � ���, � ������
«�������» ��� �� ����������. ���� �� �����,
����� �������� �������� ����� �������, �� �� �������
������� ��� ����� ��������� � �������� �����
��������, ������� ��������� � �������� linux/fs/proc.

��� ������ �������� � ���������� �������������� ��������
echo. ������, ������� echo ������������ ��� ������ �� �����,
�� �� ����� ������������� ����� � � ����. ��� ������ bash ���
����� ��������� �������� ���:

[root@work1 ipv4]# echo "1" > ip_forward
[root@work1 ipv4]#
  

��� �� ��� ��������� ��������, �� ��� ��� �� ��������� �
��������, ��� ����� ���� (����������) ip_forward, ������� ��
��� ������ ������ ���� � ����������. �������� ������ ��������
������ ���� � ��� ���� ����� ����������������� root. ���
������� ������������� ������� ������ � ���������� �����
��������� �������� ���:

[blueflux@work1 ipv4]$ echo "1" > ip_forward
bash: ip_forward: Permission denied
[blueflux@work1 ipv4]$
  

�������� �������� �� ��, ��� ��� ������� �� ��������
����������� � ��������������� ��������. �� ���� ������� ��
����������� ������ ���� � ����������.


����� 3. ���������� IPv4

� ���� ����� ����� ����������� ��� ���������� IPv4, �������
�������� ����� ��������� sysctl ��� /proc. ����� �� �������
�������� ������ ����������, �� ��� ��� ��������, ��������
��-��������� �, ���� ��� ��������, ����� ���������� ��������.
�� �� ����� ����������� � ��������� — ������ �� ��� ����
���������� ������ ���� ��������, ���� �� ��� �� ����� ������
������. ��������� ���� ����� �������� ��������� ��������
ipv4


3.1. ���������� IP

��� ������ ���� ����������, ��������� � ���� 2.4.x,
������� �������� �� ��������� IP. ��� �������� �������
������. ��� ��������� ����������� �������� ��������� �� ���
��� ���� �������, � ������ ������ ��������� �� �������.
����������� �� ���������� ����� ���������� ����������
�������� ��-���������, ������, ��������� �������������
������� �������������� ����������.


3.1.1. ip_autoconfig


3.1.2. ip_default_ttl

������������� �������� ��-��������� ��� �������� Time To
Live ��������� �������. ��� ����� ����������
����������������� «�����» ������ � Internet.
������ ���, ����� ����� �������� �� ��������� ������,
���������� � �.�., �������� TTL ������ ����������� ��
1.

�������� ��-��������� — 64. ��� ���������� ����������
��������. ����� ������ ����������� ���� ��������, ����� ���
����� ��������� �� �������������. ���������� ���������
����� ����� ��� ����� � ��������� �� 0 �� 255 ������������,
������, �������� 255 ������� ������, � ���� ��������� 0 —
�� �� ������ �������� ������ � ����. ����� 64 ����������
�������, ���� �� �� ��������� ���������� ���������� �
�����������, ��������� �� ��� �� ������������ ���������,
���������� � «���������» (hops). ����� ����
������� TTL ����� � �� �������. ������, � � ����� ��������
��� �� ���������� � ������������, ���������� �� ���� �����
��� �� 30 «���������» (hops) � � �� �����, ���
��� �������� ����������� �������� ���� ����������.

���������� TTL ������ �� 255 ����� ����� ���� ����������
�����������. ���� ����������� ����, ��� ���-�� ���������
���� � 2-� ��������������� � ����� «����������»
����� ����, ����� ����� ������ «������» ����-����
����� ����������������, �������� ���������� �����������
������, �� ��� ���, ���� TTL ������ �� �������. ���
�������, �������� TTL �� ������������� ������ 100.


3.1.3. ip_dynaddr

���������� ������������ ��� ���������� ���������
�������, ��������� � ������������ ����������. ���������
������ diald ������������ ������������� ���������� �
�������� ��������� ����� � ������� (� ������� ��� ���������
���������). ��� ����������� ���� ����������� ��� ���������
TCP �� ������������� ����������� � ����������� �
������������� (masqueradig). ��� ����� ���������
«�����������» ��������� ����� ������ ���
��������� ������������� IP-������.

� ���������� ����� �������� ���� �� 3-� ��������: 0, 1
��� 2.

  • 0 — ����� ���������, ��� �������� ��-���������.

  • 1 — ����� ��������.

  • ����� ������ ��������, ������������ �� 0 � 1
    ������������� ��������� ���� ����� �
    «������������» (verbose) ������, ��� ��������
    � ������ � ��������� ������ ���������� ���������.

��� ����������, ���� ���������� ����� ����������
���������� ��� ���������� ����� ip_dynaddr:

  • ��������� ����� ������ � ������ ���������� ���
    ��������� ��������, ����� �� ��������� � ���������
    SYN_SENT. ��� �������� ��������� ���������.

  • ��� ���������� ������� — ��������� ����� ������
    ���������� �� ������, ����� ���������� ���� ���������
    ��������� ��������, ���� �� ����� ������ �������
    �����.

��� ����� �������� ������� ��� ������� �����������,
����� � ������ ������������ ����� ��������� ����� ��� ��
��������. ����� ������ �� ���������� ���������� diald
«�������» ��������� ���������, ����� ���� ������
������������ ����� ����. ��� ��������, ��� ���
������������� ������� �������� ������ �������
«��������» ��������� ���������, � ����� ��������
«��������» ������ �� ����������, ������ ����� ��
������ ������������� ����������.


3.1.4. ip_forward

��������/��������� ������� ����������� (��������
���������� ������� ����� �������� ������������), �������
��������� ���������� ��������� � ���� ����������� ���
��������������. ��� ���������� ����� ����� ��� Network
Address Translation (���������� ������� �������),
������������, ��������������� � ����� ����, ��� ������
���������� ������ ����� ������.

��� ������ ����������. ���, ������� �������, ��� �����
��������� ��� �������� — 0 ��� 1. �������� ��-��������� —
0, «���������». �� ���� 0 �������� ������
�����������, � 1 — ��������� ���.

������, ��� ��� ����� ����������� ����������, ���������
��������� �� ������ �� ����� ��������� ���� �������� �
�������� ��-��������� (�, � ���� � ������� �� ���� 2.4.20,
�� ������� ���� �����������. ����. �����.). ������ ������
���� �������� �� ������� � RFC1122 ��� ������ � RFC1812 ��� ��������.


3.1.5. ip_local_port_range

�������� ��� ����� �����, ������� ���������� ��������
��������� ������, ������� ������������ � ����������
�����������, �.�. ��� ��������� ����������, �������
��������� ���� ������� � ��������� ����� ����, ��� ��
��������� � �������� �������. ������ ����� ������ ������
������� ���������, ������ — �������.

�������� ��-��������� ������� �� ���������� ������ ���.
���� ����������� ����� ��� 128 ��, �� ������ ������� �����
32768, � ������� — 61000. ��� ������� ������ ��� ������
������� ����� 1024 � ������� — 4999 ��� ���� ������.

���� �������� ���������� ���������� �������� ����������,
������� ����� ���� �������� ������������, � ������
��������, ������� �� ������������ TCP-����������
timestamp.

��������� 1024-4999 ������ ���������� ��� ��������� ��
2000 ���������� � ������� � ���������, �� ���������������
timestamp. ����� ������, ����� ������ ���������� ���
����������� ����������.


3.1.6. ip_no_pmtu_disc

���������� ip_no_pmtu_disc ��������� ����� PMTU (��
����. Path Maximum Transfer Unit — ������������ ������
������ ��� ���������� ����). ��� ����������� ������� �����
���������� � ��� ���������� �������� FALSE, ��� 0 (�.�.
������� ����� �������� ���������� ������������ ������
������, ��� ������� �� ����������� ��������� ��
������������, ��� �������� �� �������� ����). �� ������, �
��������� �������, ����� ��������� ������� ����� ���������
� «������» ����������. ���� � ��� ��������� �����
��������, �� ��� ������� ����������� ��������� ��� �����
(�.�. �������� � ���������� ����� 1) � ���������� ������
�������� MTU.

���� �������� ���� �������� �� ��, ��� MTU � PMTU — ���
�� ���� � �� ��! MTU — (�� ����. Maximum Transfer Unit —
������������ ������ ������) ���������� ������������ ������
������ ��� ����� ������� �����������, �� �� ��� �������
����������� �� ������ �����. PMTU — �����, �������
���������� ������� ��������� ������������ ������ ������,
��� ������� �� ����������� ������������ �������, ���
�������� � ��������� �����, ������� ��� �������������
��������.

�������� ��-��������� — FALSE (0), �.�. �������
����������� ���������. ���� �������� ����� 1 � ���
����������, �� ������� ����������� PMTU ����� ���������.
���������� ip_no_pmtu_disc ����� ��������� �������� 0 ���
1.


3.1.7. ip_nonlocal_bind

��������� ���� ���������� ��������� ��������� ���������
��������� ��������� �� ����� �������� (������) IP ������.
��� ����� ��������� �������� � ��������� �������, �����
���������� «������������» ������� (�����) IP
������, �������� — �������� ������ ��������. ������, ���
����� ����� ��������� ������������� ������� ��
����������������� ��������� ����������.

��� ���������� ����� ����� ��� �������� — 0 ��� 1. ����
����������� �������� 0, �� ����� ���������, 1 — ��������.
�������� ��-��������� — 0.


3.1.8. ipfrag_high_thresh

���������� ������ ������������ ����� ������, ����������
��� ������� ����������������� �������. ����� ����� �������
��������� ����� ������, �� ���������� ���������� �����
��������� ��� ����������������� ������ �� ��� ���, ����
����� ������� �� ���������� �� �������� ����������
ipfrag_low_thresh. ��� ��������, ��� ��� �����������
����������������� ������ ������ ���� �������� ��������
�����-������������.

������ ��������������� � ��� ������, ���� �� ������
������� �����, ����� ���� ����������� �� ������� ������.
����-�����������, � ���� ������, «�����» ������
�� ����� ������ ����� � ����� �������� �� ���� �� ������.
�� ����-���������� ��� ��������� ����� ���������� �
����������� �����. �������������, ��� ���� ������������
�������, ���� �� ����, ���� �������������, ��, � ���������,
����� ���� ������������ � ������ ������������� �����.

���������� �������� ����� ����� � ��������� 0 ..
2147483647 � �������� ������� ����� ����� �������
���������� � ������. �������� ��-��������� — 262144 ����,
��� 256 ��. ����� ����������, ��� �������, ������
���������� ���� ��� ����� ������� �������.


3.1.9. ipfrag_low_thresh

��� ���������� ����� ����� ������� � ����������
ipfrag_high_thresh. ��� ������������� ������ �����, ���
���������� �������� ����� ����������� ����� ���������� �
�������. ���������� ���������� ����� ���� �������, �
������� ��������� ����������������� ������, ���������
������. ����� ����� ������� ��������� �������� ������
(ipfrag_high_thresh), �� ����� ���������� � �������
������������������ �� ��� ���, ���� ����� ������� ��
���������� �� �������� ipfrag_low_thresh. ��� ������������
������� �� «����������» ������������������
�������� �, ��� �����, ��������, � ����� ����, ������� ��
��������� ����� DoS-����.

���������� �������� ����� ����� � ��������� 0 ..
2147483647 � �������� ������ ����� ����� ������� ����������
� ������, �� ���������� ��������, ����������������� ������
����� ����� ����������� � �������. �������� ��-��������� —
196608 ����, ��� 192 ��. ��� ����� ����������� ������ ����
������, ��� ipfrag_high_thresh.


3.1.10. ipfrag_time

��� ���������� ���������� ������������ �����
«��������» ���������� � ��������. ��� ���������
������ � ��� ����������, ������� ���� ���������� �������,
��������� ��������� ������ � ����� ����� ������ ����� ���
����� �������� ������ (�� ��������� ������� ��� �
����).

���������� ��������� ����� �������� � ����������
���������� ����� �������� ���������� � ��������. ����
�������� ���� ����� 5, �� ��� ����� �������� 5 ������.


3.2. Inet peer storage

��� �������� «inet peer storage» ����������
«���������» ����������, ������� ��������� �
������������� ������ ����. ������, ���� ���������� ������ ��
������, ������� ������������ ���������� �������� � ������, ��
��������� � ��������������. ��� ��������, ��� ��� ��������
���������� ������ � ���� ID ���������� ���������� ������. �
���� ������� ���� ��������� ����������, ������� ���������
���������� �������� ���� ����������, ������� �������,
���������� ��������� �������������� «������ ������»
� ������ �������� ������.


3.2.1. inet_peer_gc_maxtime

���������� inet_peer_gc_maxtime ����������
������� «������ ������» ��� �������������� ������
������. ��� ���������� ����� �� �� ��������������, ��� �
inet_peer_gc_mintime, ������ �����, ����� ����������
������������, ������������ � ����������� �� ��������
�������� �� �������. �������� ���������� ���������� � ���
���������� «�����» (jiffies), �������
«����» �������� ����������� � ���������� A.

���������� ��������� ����� �����, ���������� �
«�����». �������� ��-��������� — 120
«�����», ���� ������ ���������� ��� �����������
�������� � ������� �������.


3.2.2. inet_peer_gc_mintime

���������� inet_peer_gc_mintime �������������
����������� ����� ����� ��������� «��������
������» ��� ������������ ������ ������, ���������� �
«inet peer storage». ����� ������� ��������� ���
�������� ���������� � ���������� ��������� ��������,
�������������� ������ ���� ������, �� ������� «������
������» ������������ ���� ����������. ��������
���������� ���������� � ��� ���������� «�����»
(jiffies), ������� «����» �������� ����������� �
���������� A.

���������� ��������� ����� �����, ���������� �
«�����». �������� ��-��������� — 10
«�����», ���� ������ ���������� ��� �����������
�������� � ������� �������.


3.2.3. inet_peer_maxttl

��� ������������ ����� �������� �������. ���
�������������� ��������� �� ������� �������������� ������
����� ��������� ����� ������ ���������� �������.

�������� ���������� ���������� � ��� ����������
«�����» (jiffies), ������� «����»
�������� ����������� � ���������� A.


3.2.4. inet_peer_minttl

���������� ���������� ����������� ����� �������� ������
� «inet peer storage». ��� ����� ������ ����
���������� �������, ����� ��������� ����� ������ ����������
�� ��������������� �������. ����������� ����� ��������
�������� ��������� ����, ��� ������ ���� ����� ������ ���
�������� inet_peer_threshold.

�������� ���������� ���������� � ��� ����������
«�����» (jiffies), ������� «����»
�������� ����������� � ���������� A.


3.2.5. inet_peer_threshold

��� ���������� ������ ��������������� ������ ������ ���
«inet peer storage». ����� ������ ���� ���������
���� ��������, �� «������� ������» ����������� �
����� ����������� ����� ������ — � �������� �������
inet_peer_gc_mintime. ����� ����, ���� ����� ������ �� ����
�������� �������. ��� ���� ���� �����, ��� ������ ����
��������.

��� ���������� ��������� ����� �����, ��������
��-��������� — 65664 ����.


3.3. ���������� TCP

����� ����� ������ ����������� ����������, �������������
�� ��������� TCP. ������ ��� ��������� �� �������
�������������� ���������, ��������� ����� ������ ��������
��������� ��-��������� �, ������ �����, ��� ���� �� ��������
������ ����� ���-����, ��� ���������� ������ ������������
������������! ����� � �������� ���������� �������� �� �� ���,
��� ���, ���� ��� ���������.


3.3.1. tcp_abort_on_overflow

��� ���������� ���������� ���� ��������� �����
����������, ���� �� ��������� ����� ����������, ��� �������
�� � ��������� ���������� � ����� �������. ��� ���
��������? ��������, ��� �� ������� ������������ �����
�������� �� ����������, ����� ��� ����� ���� ������
����������, ���� ���������� ����� ��������, ���������
������� �� � ��������� ���������� �� ���. ���� ����������
�� �����������, �� ������� ����� �������� ��������� ���
�������.

���������� ����� ����� ��� �������� — 0(���������) ���
1(��������). �������� ��-��������� — 0. ��������� ����
����� ������� ����������� ��� ������� ����. ����� ����
���������� ���������� ������� ������������������
��������.


3.3.2. tcp_adv_win_scale

��� ���������� ������ �� ���������� ������ ������ �
������ ������, ���������� ��� ������ TCP-���� � ��� �����
����������. ���� �������� tcp_adv_win_scale �������������,
�� ��� ���������� ������� ������������ ���������
���������:

��� bytes — ��� ������ ���� � ������. ���� ��������
tcp_adv_win_scale �������������, �� ��� ����������� �������
������������ ��������� ���������:

���������� ��������� ����� ��������. ��������
��-��������� — 2, �.�. ��� ����� ���������� ��������� 1/4
����� ������, ������������� ���������� tcp_rmem.


3.3.3. tcp_app_win

��� ���������� ���������� ���������� ����, �������������
��� TCP-���� � �������� ������ ������. ���������, ��������
�������� �������� ������, �������� ��������� �������:

��� ����� �� ��������� — ��� ������ ��������
����������, ��� ������ ����� ������ ������ ����. ����������
���������� �������� 0. � ���� ������ �������������� ��
������������. �������� ��-��������� — 31. �� ��������� ���
����������, ���� �� �� ������� � ���, ��� �������.


3.3.4. tcp_dsack

��� ����� ���������� ��� ���������� �������� �����������
SACK-������� (�� ����. Selective ACKnowledgement —
���������� ������������� ������, ����. �����.). �������
����������� ������������� ������ ������� � �������,
����������� ���������� tcp_sack. ��������� �������� �����
����� � RFC 2883. ����� �������� ����������� �������� ��
��������� ��������, ����� ������� �������� ������,
���������� �����, ��� ����� ������ ��������� �� � ���
�����������. D-SACK — ��� ���������� ��������� SACK �
������������ ��� ����������� �����-����������� � ���, ���
����� ��� ������� ������ (�.�. �������������). ���
���������� ����-����������� ����� ������������ ���
������������� ������� �������� � �.�.. ��� �����
����������� 100%-��� �������� ������������� � �����������
������������ TCP, ���� � ��� ������� SACK �� �����������
�����-���� ������������� �������. �� ��� ����������� ������
������, � ������ — � ��� ���� �� ����� ��������� ��������
� ����.

���������� ����� ����� ��� ��������� — 1 (��������) � 0
(���������). �������� ��-��������� — 1 (��������). �, ����
����� ����������, ��������� ���� ���������� ����� ����� ������ ���� �������� ����������
tcp_sack
, ��������� tcp_dsack ����� ����� ������� �
���. � ����������� ������� �������� ����� ��������
���������� ����������.


3.3.5. tcp_ecn

���������� tcp_ecn �������� �� ������ Explicit
Congestion Notification (����� ����������� �
���������������) � TCP-�����������. ������������ ���
����������� � ������������� «������» �� ��������
� ��������� ����� ��� ����. ����� �������������� ���
��������� �����-����������� � ������������� �������
�������� �������� ������� ����� ���������� �������������
��� ����������. Explicit Congestion Notification (ECN)
�������� ������� � RFC 3168 — The Addition of Explicit
Congestion Notification (ECN) to IP
.
�������������� ���������� � ECN �� ������� � RFC 2884 — Performance Evaluation of
Explicit Congestion Notification (ECN) in IP
Networks
.

�������: ���� �������� �������� ��������� ��� ������
������������ ����������� � ���������������
�����-�����������, �������, � ���� �������, ����� �������
������ ������� ��� ������ ������� �������� �������� �� ���
���, ���� � ���� �� ���������� ��������� ECN-������.

Caution

� ��������� ��� ����������� �������������� �
�����������, ������� �� ���������� ������ �
������������� ������ ECN �, ���� ��� �� �������, ��
�� ������ ����������� � ����. ��� �������������
������� � ������������ ECN — ���������� ���������
��� �����. ���� ��� ���������� ��������
�������������, �� ������ ����������� �������� �
������� � ��������������� � ������������ ��� ��
��������� ���������. ��������� �������� �������� �
����� ������ ����������, ���������� �������� ����
������������, �� ������� � ���������� ������
������ ECN-under-Linux
Unofficial Vendor Support Page
.

���������� ����� ����� ��� ��������� — 0 (���������) �
1 (��������). �������� ��-��������� — 0 (���������).


3.3.6. tcp_fack

���������� tcp_fack ������������ �� ������� Forward
Acknowledgement (����������� �������������) � Linux.
Forward Acknowledgement — ��� ����������� ��������,
������� �������� ������ SACK, � ������������ ��� ��������
«�������».

������� ���� ��������� FACK ������� � ������������
����������� ������ ��������� ��������������
������������������ ��� �������� ����, ��� ��� ���������� ��
�������������� (���������) �������� ���� ��������. ���
��������� �������������� �������������� ������. ������,
���� �������� ���������� ����������������� � ������
���������������� ������ ������, ����� �� (��������)
������������� ����������� ��� ������� �����������
����������.

���������� �������� FACK ��� ���������� ������ �������
(Matthew Mathis) � ����������. ��������, �����������
��������, ����� ����� �� http://www.psc.edu/~mathis/.

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 1 (��������). ���
����� ������������ ������ �����, ����� �������� ����������
tcp_sack.


3.3.7. tcp_fin_timeout

���������� ������ ������������ ����� ���������� ������ �
��������� FIN-WAIT-2. ������������ � ��� �������, �����
������ ������� �� ��� ��� ���� �������� �� �������
���������� �� ����� �������. ������ ����� �������� � ������
������� 1.5 ��, ��� ����� �������� � ������������ �������
������ � ��������� �������.

���������� ��������� ����� �����. �������� ��-���������
— 60 ������. � ����� ����� 2.2 ��� �������� ���� ����� 180
��������, �� ���� ���������, ��������� ������ ���������
��������, ��������� � ��������� ������, �� web-��������,
�������, ��� �������, ����������� �������� ����������
�����������.

�� �������������� ����������� — ����������� � ��������
���������� tcp_max_orphans � tcp_orphan_retries.


3.3.8. tcp_keepalive_intvl

���������� ���������� �������� ��������
«����������������» ������. ��� ��������
����������� ��� �������� �������, ������� ������ ������
����� ��� ��� ���������� ����� ���������.

���������� ��������� ����� �����. �������� ��-���������
— 75 ������. ��� ���������� ������� ��������, �����
������������� ��� ��� ����������. �������� ����������
tcp_keepalive_probes � tcp_keepalive_intvl �����
�������������� ��� ����������� �������, ����� �������
���������� ����� ���������.

�� ���������� ��-��������� (9 ������� � ���������� 75
������) ��� ������ �������� 11 �����. ������� �����������
«����������������», � ���� �������, ��������
����� 2 ���� ����� ����, ��� ����� ������ ����������
����������� ��������� �����.


3.3.9. tcp_keepalive_probes

���������� ���������� ���������� ������� ��������
«����������������» ������, ��� ����� �������
������� � ������� ����������.

���������� ��������� ����� �����, ������� �� �������
������������� ������ 50-��. �������� ��-��������� — 9. ���
��������, ��� ����� ��������� 9 ������� ��������
����������, ����� ��������� � ���, ��� ����������
���������.


3.3.10. tcp_keepalive_time

���������� ���������� ��� ����� ������� ���������
����������, ���� ��� ����� �� ������������. ��������
���������� ����� ����� ������ ��� ��� �������, ������� ����
������� � ������ SO_KEEPALIVE.

���������� ��������� ����� ����� ������. ��������
��-��������� — 7200 ������, ��� 2 ����. �� ���������� ���
����� ��� �������������, ��������� ��� ����� �������� �
���������� ��������� �������.


3.3.11. tcp_max_orphans

���������� ������ ������������ �����
«�����������» (�� ��������� �� � ����� ���������)
�������. ���� ��� ����� ����� ���������, �� �����
���������� �����������, � � ��������� ������ �������
��������������.

��� ����������� ���������� ������������� ����
�������������� ���������� �������������� DoS-����. ������
�� �� ������ ���������� �� ��� ����������! �� �������������
��������� ��� �����. ������� ����� ����� �����������
���������� ����� ������, ������, ����� ���������� �����
�������� � ������������� ���������� ������ ��� � �������.
������ ��� ��������� ���� ������ — ����������
������������� ������� ������� �� ����� �����������
��������� �� ��������� � «�����������»
�������.

���������� ��������� ����� �����. �������� ��-���������
— 8192, ������ ��� ����� ������ ������� �� ������ ������ �
�������. ������ «�����������» �����
«�������» �������� 64 �� ������, ������� �� �����
���� �������� � ���� (swap).

Note

��� ������������� �������, ��������� � ����
������������ — � ��������� ������ ����� ��������
���������, �������� �����:

TCP: too many of orphaned
sockets

��� ����� ������� ������� � ����, �����
������������ �������� ���������� tcp_fin_timeout
��� tcp_orphans_retries.


3.3.12. tcp_max_syn_backlog

���������� ���������� ������������ ����� ��������
SYN-�������� � ������ �� ������� ��������� ��������,
������������ ������������ ����������, ������. ��� �����
�������� ������ �����, ����� �������� ����������
tcp_syncookies. ���� ������ ���������� ��������� ��������,
�� ����� ����������� ������� ��������� ���� ��������.

���������� ��������� ����� �����. �������� ��-���������
������� �� ���������� ������, ��������� � �������. ����
����� ������ ����� 128 ��, �� �������� ��-��������� �����
128, ���� ������, �� �������� ��-��������� ����� 1024.

Caution

���� �� ������������ ��� ���������� �� ��������
����� ��� 1024, �� ���� �� ������� ��������
�������� TCP_SYNQ_HSIZE � ����������� ����.
TCP_SYNQ_HSIZE ��������� � �����
linux/include/tcp.h. ��� �������� �������������� ��
�������:

TCP_SYNQ_HSIZE*16 <= tcp_max_syn_backlog


3.3.13. tcp_max_tw_buckets

������������ ����� �������, ����������� � ���������
TIME-WAIT ������������. ��� ���������� ����� ������ —
«������» ����� ����������� � ������� ��������� �
��������� ������. ���� ���� ���������� — ��������������
���������� �������������� DoS-����.

���������� ��������� ����� �����. �������� ��-���������
— 180000. �� ������ ������ ����� ����������, ��� ��� �����
�����, �� �� ����� ���� ��� �� ���. ���� � ��� ��������
��������� ������, ��������� � ���� ����������, ��
���������� ��������� ���.

Caution

��� �� ������� ��������� �������� ����
����������. ������ �����, ���� ������ ���������
��������� � ��������� ������, �� ������� ���������,
������, ��� ����� ����������� ����������� ������ �
�������.


3.3.14. tcp_mem

� ���� ���������� �������� 3 ��������, ������������
����� ������, ������� ����� ���� ����������� ������ TCP.
�������� ���������� � ��������� ������. ������ �����
�������� ������� �� ���������� � ������������ ����. ���
����������� i386 ������ ����� �������� ���������� 4��, ���
4096 ����. ���������, ����� ����� ���������� ����������,
����� ������ �������� ������ 16, 32 ��� ���� 64 ��. ��� ���
�������� ��-��������� �������������� �� ����� ��������.

������ ����� ������ ������ �����. ���� ����� ������,
���� TCP ������ ����� �� ����������� �� ���������� �������,
������������ ���������� TCP ��������.

����� ����� ������������ ������ ��������� �������
������� (�����), �� TCP �������� ����� ���������
«������������» ������, �������� ���������� �� ���
����� �������. ���� ������� ������������ �� ��� ���, ����
����� ����������� ������ �� ��������� ������� �������.

� ��������� ����� — ������������ ����� ������, �������
����� �������������� ��� ���� TCP. ���� ������������ �����
������ ��������� ����� ������, �� TCP ������ ��������
«������»������ � ���������� �� ��� ���, ����
����� ������������ ������ �� ����������.

Tip

��� ���������� ����� ��������� ���������
��������� ���������� ����������� ��
«�������» �������, ���� ������� �������
��������� ���������� tcp_mem, tcp_rmem � tcp_wmem.
�������, ���������� tcp_rmem �� ������� �����
������������ ��������, ��������� ����� ���� 2.4
����� ���������� ������� ��������� ���� ����������,
� ��� �� ������ ��� ������� ��������� �������.
�������������� ���������� �� ���� �� ������� �
����������� TCP Tuning
Guide
.


3.3.15. tcp_orphan_retries

���������� ������� ������� ���������� ����� ��� ��� ���
����� ��������� �������������. ���� �� ���������������
http-������, ������� ���������� ������� ��������, �� �����
�������� �� ���������� ����� ��������.

���������� ��������� ����� �����. �������� ��-���������
— 7, ��� �������������, ��������, �� 50 ������ �� 16
�����, � ����������� �� �������� Retransmission Timeout
(RTO — ������� ��� ��������� ��������. ����. �����.).
��������� �������� RTO �� ������� � ������� «3.7. Data
Communication» RFC 793 — Transmission Control
Protocol.

����� ����, ���������� �������� ����������
tcp_max_orphans.


3.3.16. tcp_reordering

������������ ���������� �������, ��������� � ������ ��
��-�������, ������ ��� ����� ������� ������������� � ���,
��� ����� ��� ������� ���-�� �� ��������. ����� ��������
����� �������������, �� ���� TCP ��������� ������� � �����
«slow start» (��������� �����), ��������� �����
������������� ��� ���� ������ ��-�� ��������������� ����.
����� ����, ���� TCP ��������� �� ����������� �������������
��������� FACK ��� ������ � ���� ������.

���������� ��������� ����� �����. �������� ��-���������
— 3. ��� ���������� ������� �������� � �� ������� ���
��������. ���� ���� �������� ���������, �� ��� �����
����������� �������� ������ ������� ���������� ��������,
���� ������ ����� �������������������.


3.3.17. tcp_retrans_collapse

��������/��������� �������� ������ ��������� TCP, �����
��������� ������� �������������� � ���������� ������������,
� ������� ���������� ����� TCP ����� ��� ������. ��� ��
�������� ���� �� ����������� �������� � ���������� ��������
���������. ������ ����������� � �������� ��������������
������� ��� ��������� ��������.

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 1 (��������).
�������� ������ ����� �� �������� �������������� � �������
������ ����, �� ��� ���� �������� �������� � ������������,
�������� ������ � ���������� ����� TCP. ������ ��� �����
���������� ���������, ������, ���� � ������ �������
���������� ��������� — ������ ����������� ���������
��.


3.3.18. tcp_retries1

������������ ���������� ������� ��������� ��������
������� �� �������������� ���������� ������, ��� ���������
�� ������ ����� �������� �������� ������, � ���������� ����
����� ���� ������ ������ ������� ��� �������� �����������
�������. ����������� �������� ����� ��������� ������������
� RFC ???? � ����� 3. ��� ����� �������� ���������
��-���������, ��� ������������� ��������� ������� �� 3
������ �� 8 �����, � ����������� �� �������� Retransmission
timeout (RTO). ��������� �������� RTO �� ������� � �������
«3.7. Data Communication» RFC 793 — Transmission
Control Protocol.

���������� ��������� ����� �����. �������� ��-���������
— 3. ��������� ���������� �������� ��������� �����
��������� �� 3 �� 100.


3.3.19. tcp_retries2

������������ ���������� ������� ��������� ��������
�������, �� ���� ��� ���������� ����� ���������
�����������. ��� ����������� ���������� � RFC 1122 � �����
100, �� ������ ��� ���������.

���������� ��������� ����� �����. �������� ��-���������
— 15, ��� ������������� �������� 13-30 ������� �
����������� �� �������� Retransmission timeout (RTO). ���
������� ������ ����������� ��������� ���� ��������.


3.3.20. tcp_rfc1337

���������� tcp_rfc1337 �������� ����������� �������
��������, ����������� � RFC 1337 — TIME-WAIT Assassination
Hazards in TCP
. �������� ������� �
«�����������» ����������� �������, ������� �����
������� ������ �� ����� ��������������� ���������� �
��������� ��� ��������� ��������. ������ —
«����������» �������� ������ � ������� ����� ����
�������� ��������� � ����� ����������, ��� �������� �
�������� �������� ������. ������ — ���������� ����� ����
������������������ � «����» � ACK-���� ��-��
«����������» ����������, ������� ��������� �����
���������� (����� ����� ����� ����� «����������»
��������� SYN-�������, ����. �����.). � ������, � ���������
�������� — «����������» ��������� �����
«����������» � ������� ��������� ���������� �
�������� ���������� ���.

�������� ����������� RFC ���������� ��� ���������
�������, ������, ���� �� ��� ������ ��� �������� ����
��������, ������ ������� �������� ������������ ��������� �
�������� TCP.

������������� ������� ������� � ���, ��� RST-������
������ ������ ��������������, ���� ����� ��������� �
��������� TIME_WAIT. ������ � ���������� ��������� Maximum
Segment Life (MSL — ������������ ����� ����� ��������)
������ 2 ���. ����� ������ ������ ��� ��� ��������,
��������� � RFC 1337.


3.3.21. tcp_rmem

���������� �������� ��� �����, ������� ������������ ���
���������� ��������� �������� �������.

������ ����� — ����������� ������ ��������� ������,
������� ���������� ��� ������� ������. ���� ������ ������
���������� ������, ���� ��� ����� ������� ��������� ��
�������. �������� ��-��������� — 4096 ����, ��� 4 ��. �
���������� ������� ���� Linux ��� �������� ���� 8192 ����.
��� ���������� ������� ������ � �� ������� ����������� ���,
�����, ��� «��������» ��������� �� ����, ��
������ ��������� � ����� ���������� ����������.

������ ����� — ������ ��������� ������ ��-���������,
������� ���������� ��� ������� ������. ��� ��������
����������� �������� ����������
/proc/sys/net/core/rmem_default, ������� ������������
������� �����������. �������� ��-��������� — 87380 ����,
��� 85 ��. ��������� � ����������� tcp_adv_win_scale �
tcp_app_win ��� ���������� ������������ ��� ������� �������
TCP-����. ��� �������� ������������ ��� ��������������
���������. ��� � � ������ � ������ ��������� — �� �������
��� ������ ����� �������� ���� ��������.

Tip

��� ���������� ����� ���� ��������� �������
������������������ �� «�������» �������,
���� ���������� ��������� ������������ ������ �
����������� tcp_mem � tcp_wmem. tcp_rmem �� �������
������������� �����, ��������� ���� ����� 2.4
���������� ������ ����������� �� �������������, �
��� �� tcp_mem � tcp_wmem ����� ���������
�������������. �������������� ����������, ��
��������� ����������, �� ������� � TCP Tuning
Guide
.

������, � ���������, ����� — ����������� ���������
������ ��������� ������, ������� ����� ���� �������� ���
������� ������. ���� �������� ������������� ����������
/proc/sys/net/core/rmem_max, ���� �������� � ipv4
����������� ������. ����� ���������� ����� ��������� — ���
������� ������� ��������� �� ��������
/proc/sys/net/core/rmem_max. �������� ��-��������� —
��������� �������� ������� ���������, �.�. — 87380 * 2
bytes, ��� 174760 ���� (170 ��). ��� ������� ���� ��������
�� ��������� � �������������.


3.3.22. tcp_sack

��������� Selective Acknowledgements (SACK — ����������
�������������), ��������� �������� �� ������� � RFC 2883 — An Extension to Selective
Acknowledgement (SACK) Option for TCP
RFC 2883 — An Extension to Selective
Acknowledgement (SACK) Option for TCP
.

���� ��� ���������� �������� (����������� 1), �� �
TCP-��������� ����� ��������������� SACK-���� ��� ��������
SYN-������, ������� ��� ����� ���������� �����, ��� ����
������� � ��������� ������������ SACK, �� ��� ���������
���� ����� �������� ACK-������� � ������������� ������
SACK. ���� ����� ��������� ������������ ������ ������� �
TCP-����. ��� �������� ������� �� ������������ �����������,
��������� ��������� ����������� ��������� �������� ����
���������, �� �������������� ����������, � �� �����
TCP-����, ��� ��� ��������� ����� ������� �����������. ����
����� ���� ������� TCP-���� ��� «������», ��
�������� ������� �� ������� �� ���� SACK-������������� �
������. �����������, ����� ���, �������� ��������
«������������» ���������. ���������� ������
����������� � TCP-���������, 40 ���� �� �������.
������������� ������� �������� — ��� ��� 32-������
����������� ����� �����, ����� ������� � ��������� �����
������������ ������������� 4-� ���������. ������, ���
�������, ��������� � ������ SACK ������������ �����
timestamp, ������� �������� 10 ���� � ������� � �����
������ ����� ���� ������������ �� ����� 3 ���������.

������������� �������� ��� �����, ���� �� ������
������������ ����������. ������, ���� �� ���������
1.5-�������� ������� � ������ �������, �� � ����� ������,
��� ���������� ��������� �������� ������, ������� ��� �����
���������. ������ ��� ����� �� �����, �� ����� �� ��������.
��� ������������ 100% �������� �������������, �.�. �� ��
������ ���������� ������� ������� ��� ���������� � �������,
������� ��� ����� �� ������������.

� ���������� ����� ���� �������� ��� ����� — 0
(���������) � 1 (��������). �������� ��-��������� —1
(��������).


3.3.23. tcp_stdurg

���������/��������� ������������ ��������� RFC 1122.
��������� ��-��������� ������������� ���������
������������� ����� URG — BSD 4.2, ���������� � RFC 793.
���� ��� ���������� ��������, �� �������� ���� ��� ������ �
���������� ������ ���������, ������ — � ������, �������
�������������� ��������� BSD 4.2. �� ��������������
����������� ����������� � RFC 1122 — Requirements for Internet
Hosts — Communication Layers
������ «4.2.2.4
Urgent Pointer: RFC 793 Section 3.1 explanation», ���
������� ������ �� RFC 793 — Transmission Control
Protocol
.

���������� ��������� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 0 (���������).


3.3.24. tcp_syn_retries

���������� ������� �������� SYN-������ ��� ������������
������ ����������.

���������� ��������� ����� �����, ������� �� ������
��������������� ������ ��� 255, ��������� ������ ���������
������� �������� ������������ �����. �� ������ �������
��������� �������� 30-40 ������. �������� ��-��������� —
5, ��� �������������, ��������, 180 ��������.


3.3.25. tcp_synack_retries

���������� ������� �������� SYN,ACK-������ � ����� ��
SYN-������. ������� ������� — ������������ ����� �������
���������� ��������� TCP-����������, �������������� ������
������.

���������� ��������� ����� �����, ������� �� ������
��������������� ������ ��� 255 �� ��� �� ��������, ��� � �
������ � ���������� tcp_syn_retries. �������� ��-���������
— 5.


3.3.26. tcp_syncookies

���������/��������� �������� ��� ���������� syncookies
����������� ����� � ������ ������������ ������� SYN-�������
��� ��������� ������. ����� � ������� ��������� �������
����� �������� �� ����������, �� ������� �����
������������� � ����� ����������� �������� syncookies �
����� �� ������ SYN-������.

��� ���������� ������������ ��� �������������� syn-flood
����. ���������� ����� ��������� ��� �������� — 0
(���������) � 1 (��������). �������� ��-��������� — 0
(���������).

��� ������� ����� �������� ������ � ��� ������, ����
���� ������� � ������ CONFIG_SYN_COOKIES. (����.
�����.)

Caution

� ������� ���� ����� ��������� �� ������ �������
� �����������, ��������� � syncookies. ����� �
������������ ��� ����������� ��� ���������� �������
� ����������. ������, � ��������� �������,
������������� ���� ����� ����� ������������
��������� ������, ��. ����.

����� tcp_syncookies �������������, ��� ��
�������� � ������� ��������� ����� ���������� �����
�������������� ��� ����� «�����», ��� ECN
� SACK. ���� �������� syncookies ���������� ���
��������� ���������, �� ��� �������
����������������� ��������, �������� �����
�������.

�� ������� ������������ ��� ����������� ��
�������� � ������� ���������. ���� � ���������
������ ��������� �������������� � syn flood ���
������ �������� ����������, �� ������ �����������
���������� ���������� tcp_max_syn_backlog,
tcp_synack_retries � tcp_abort_on_overflow.


3.3.27. tcp_timestamps

���������/��������� ������������� ��������� �����
(timestamps), � ������������ � RFC 1323. ���� �������, ��
��� ���������� TCP ������������ ��� ������� Round Trip
Measurement (����������� ������� ��������) ������ ��������,
������ ����� Retransmission timeout (RTO). ��� ����� ������
��������� �������� ������������� � ����������� �������, ���
��� ����� �������� �� ����������, �������� ���� ��
��������� � ���������������� ���� (�������� LAN ��� 10mb
��������). � ������ ���������������� ��������� (������
��������) — �� ��������� ���������� � ��� ���� �����, �
����� ���� �����, ���� �� �� ���������.

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 1 (��������).

����� ��������� ���������� �� ������� � ������ 4
��������� RFC 1323 — TCP Extensions for High
Performance
.


3.3.28. tcp_tw_recycle

���������/��������� ������� ���������� �������,
����������� � ��������� TIME-WAIT. ���� �� �� ������� �
����� ���������, �� ��� ����� �� ������� ���
����������.

���������� ��������� ����� ����� (� �� ��������� — ��
����� ����� � ����� ��������� �������� ������� ����
�������, ��� �������� ���������� �
linux/Documentation/ip-sysctl.txt �������� ������, ���� �
�� ��������). �������� ��-��������� — 0.

Caution

�� ��������� ��� ����������, ���� �� �� �������
� ����� ��������� ��� �� �������� ����� �� �������
��������� �� ����.


3.3.29. tcp_window_scaling

���������/��������� ��������������� TCP-����, ���
���������� � RFC 1323. � ���� ��������� ������� ���
������������ ��������������� TCP-���� ��� �������� �� Large
Fat Pipes (LFP — «�������» �����). ��� ��������
TCP-������� �� «�������» ������� ���������
������������ ������ ���������� ����������� ��-�� ����, ���
��� �� ��������� ��������� �� ����� �������� �������������
� ������ ����������� TCP-����. �������� �������� ������� �
���, ��� ���� �� ����� ����� ������ ������, ��� 2**16 ����
(65 ��). �������� ��������������� TCP-���� ��, ��� �����,
����� ��������� ��� ������ � ����� ������� ��������� ������
���������� �����������.

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 1 (��������).

�������������� ���������� �� ���� ���� �� ������� � RFC 1323 — TCP Extensions for High
Performance
.


3.3.30. tcp_wmem

���������� �������� ��� �����, ������� ������������ ���
���������� ��������� ������� ��������, ���������� ���
������� ������. ������ �� �������� ������������ ���
������������ ��������.

������ �������� — ����������� ������ ������ ��������
��� ������� ������. �������� ������������� ��������� �����
������������ ��� �������� ������. ������ ��� �������� �����
4096 ����.

������ �������� — ������ ����������� ������
��-���������. ��� ������� ��������� ������ ������ ��������
������ ����� �����������, ���������� ����� ����������� �
«����������» ������� ��������� �������� ������
������ ��� ������� ���������. ��� ����� ���� �������� �
������ ������� ��� ����� ������� ���������. ��������
��-��������� — 16384 ����, ��� 16 ��. ����� ����������
���������� ��������� ��� ��������. ���� ��������
������������� ���������� /proc/sys/net/core/wmem_default,
������� ������������ ������� ����������� �, ��� �������,
tcp_wmem ������ ���� ������ ���
/proc/sys/net/core/wmem_default.

������ �������� — ������������ ������ ������ ��������
��� ���������� ������. ��-��������� — 131072 ����, ��� 128
��. ��� ���������� �������� �������� � � �����������
������� ��� ���� �� �������� �������������� ���. ������,
���� ��� �������� ��� ����������� — ������� �
������������� ���������� /proc/sys/net/core/wmem_max,
������� ������ ���� ������ ������ ��� tcp_wmem.

Tip

��� ���������� ����� ���� ��������� �������
������������������ �� «�������» �������,
���� ���������� ��������� ������������ ������ �
����������� tcp_mem � tcp_rmem. tcp_wmem ����
���������� ������� ������������������ �� ���� ����
����������. ������ ��� ����, ��� �� ����������� ��
�������� �������� �������� � ����� �� ���������
�������� ����� 1 ��. �������������� ����������, ��
��������� ����������, �� ������� � TCP Tuning
Guide
.


3.4. ���������� ICMP

��� ���������� ��������� ���������� ��������� ICMP. ���
���������� ������ � �� ��������� �� ������ ��������
�����������, ������� ����� ���������� ��� ��������
TCP-����������. ������� ������� ��� �������� �� ������� ����
�� ��������� ���� ICMP-���������.


3.4.1.
icmp_echo_ignore_all

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 0 (���������).
���� � ���������� �������� 1, �� ���� ������ ���������� ���
ICMP Echo ������� � ����� ����� �� ������ ping-���� ����
������, ����� ��������� �� ������� � ����, ��� ���� �� ����
�� ���� ������. ������, � ������� �� ��� ����� ���� ����
����������� ������ �� ������ ���� �����. � ����� ������� —
���������� ������ ����������� ��������� ���� ����������� �
����, � ������ — ���������� ����� ����������, �������
���������� ICMP Echo ������� ������ �� � ����������� �����.
������ ��� ��� ������ — ���-�� �����, � ���-�� ������.


3.4.2. icmp_echo_ignore_broadcasts

��� ���������� ����� ������ �� ������ �
icmp_echo_ignore_all, ������ � ������ ������ �����
�������������� ICMP ���������, ������������ ��
����������������� ��� ��������� �����. ������ ��������,
������ ������� �������� ���� �������� — ������ �� smurf
����.

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 0 (���������).


3.4.3.
icmp_ignore_bogus_error_responses

��������� ��������������, ������� ����������, ���������
� RFC 1122, ���������� ��������� ������ � �����������������
���������. ������ ��� ������ ��������� � ��������� ������.
���� �� �� ������� �������������� ��, �� �������� ����
�������� � ��� ����� ��������� ��������� ����� ���������
������������ � ����� �������.

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 0 (���������).


3.4.4. icmp_ratelimit

������������ ������� ��������� ICMP-������� � �����,
��������� � icmp_ratemask (��. icmp_ratemask). ���
�������� �������� � «�����» � �������������
��������� �������� ����� ICMP-���������. ����� �������,
�������� 0 �������� ���������� �����������. ������ 1
«���» ����� 0.01 �������, ��� �������� 1 � ����
���������� ������������ �������� �������� �� ����� 100
������� � �������, � �������� 100 — �� ����� 1 ������� �
�������.

�������� ��-��������� — 100, ��� �������� �� ����� 1
ICMP ������� �� �������� � 100 «�����».


3.4.5. icmp_ratemask

����� ICMP �����, �� ������� ������������� �����������
�� ������� ��������� ���������� icmp_ratelimit. ������ ��
ICMP ����� ����������� ����� �����.

icmp_ratemask — ��� ������� �����, ��� ������ ICMP ���
����������� ����� �����. ������������ ����� �������������
��������� ICMP ���� � ��� ���������� ������� �� ������� �
������������ ����� netinet/ip_icmp.h (������ ��� /usr/include/netinet/ip_icmp.h). ��
�������������� ����������� ����������� � RFC 792 — Internet Control Message
Protocol
. ������������� ����� ������������
���:

��� n ��������� �������� ���� ����� ICMP, ������� ������
���� ����������.

��������: ��������� �������� ICMP Destination
Unreachable ���������. � /usr/include/netinet/ip_icmp.h �����
���� ������������� ����� 3. ���������� �������� 2**3, ���
����� 8. ������ ����� ��������� ��� ����� � ���������
������� �����. ��������, ��� ����� ��� ����� ����� 6160 (�
�������� ���� 0001100000010000), ����� �������������� �����
���������: 6160 + 8 = 6168 (� �������� ����
0001100000011000).

Caution

����� ����������� ����� �������� �������
��������� �������, ��� ������ ��� ��� �������,
����� �� �������� �������� �����! � �������, ���� �
��� ����� �������� ������ 256 � �� ��� ��������
����� 256, �� ��� �������� � ��������������� ICMP
Echo Request � ���������� 9-�� �������������� ����
ICMP.

�������� ��-��������� — 6168 (� �������� ����
0001100000011000), ��� ������������� ��������� �����������
�� ICMP Destination Unreachable, ICMP Source Quench, ICMP
Time Exceeded � ICMP Parameter Problem, ��� ICMP
Destination Unreachable = 3, ICMP Source Quench = 4, ICMP
Time Exceeded = 11 � ICMP Parameter Problem = 12. �����
�������, �������� ��-��������� ������������� ���������:

Note

������������� ����� «���������»
��������� ������������� ��� ����
«��������» ������ ICMP-���������,
������������� � ����� �� ���������� ICMP ����� �
�������� ������� ������. ������� ����� �����
���������� ������� ��������� ��������� �����
ICMP-���������.

Tip

�� ����� http://www.frozentux.net ��
������� ����� ��������� ��������� ratemask, �������
����� ��������� �������� ��� �������� ����� ���
���������� icmp_ratemasks ��� ��� ����������
������������ �����.


3.4.6. igmp_max_memberships

������������ ����� ����� �� ������ �����. ��������
��-��������� — 20 � ����� ���� �������� �� ����
�������������.

Fixme: NEED MORE DETAILS!!!


3.5. ���������� � ��������
conf/

������� /proc/sys/nrt/ipv4/conf �������� ���������
������������, ������� � ���� ������� �������� ��� ��������,
������� ����� ���� ��������. ���� �� ���������� �� ����������
�������� conf/, �� �������, ��� ����� ��������� ����������� �
�������, ���������������� ��������� ������������ � �������
������� �����������, ��������: eth0, tr0 ��� lo. ����� ����, ����� �� ��
������� �������� all � default. ���������� �������� conf/
�������� �������� ���:

root@firewall:/proc/sys/net/ipv4/conf# ls -l
total 0
dr-xr-xr-x    2 root     root            0 May  1 20:04 all/
dr-xr-xr-x    2 root     root            0 May  1 20:04 default/
dr-xr-xr-x    2 root     root            0 May  1 20:04 eth0/
dr-xr-xr-x    2 root     root            0 May  1 20:04 eth1/
dr-xr-xr-x    2 root     root            0 May  1 20:04 eth2/
dr-xr-xr-x    2 root     root            0 May  1 20:04 eth3/
dr-xr-xr-x    2 root     root            0 May  1 20:04 lo/
root@firewall:/proc/sys/net/ipv4/conf#
  

� ������ ������, � ������� ������� 4 ��������� �������
���������� (eth0-3) � ���� ��������� (lo) ���������.
����������� � ����� UNIX-�������� �� ������������ ���������
lo, ��������� �� �������� ��������� ������ �������
����������.


3.5.1. �������� ����� conf/DEV/, conf/all/ �
conf/default/

������� /conf/DEV/, ��� ��� DEV �������
�������� �������� ���� ��� ����� ����������, ��������
��������� ��� ����������� �������� ����������. ��������� ��
�������� conf/all/ ����������� �� ���� ������� �����������.

� ������� ������� conf/default/ �������� ��������
��-���������. ��� �� ������ �� ��������� ������������
�����������, �� ������������ ��� �������������� ���������
����� ��������������� ���������.


3.5.2. accept_redirects

���������� ��������� ������� ICMP-��������� �
�������������. ��������� ICMP Redirect … ������������ ���
����������� ��������������� ��� ������ � �������������
������� �������� �������� ������� � ��������� �����,
������� (�������) ����� ���� ������� ��� �����
��������.

���������� ����� ����� ��� �������� — 0 (��������� —
��������� � ������������� ������������) � 1 (�������� —
��������� � ������������� �����������). ��������
��-��������� — 1 (��������), ������ � ����������� ��
��������� ��� �����, ��������� ��� ������ �����������. �
����������� ����������� ������� ������������� �
������������� �����������, ������� ����� ������� ���
���������� �����������, ���� ������� �� �� 100% �� �������
� ��������.


3.5.3. accept_source_route

���������� ���������/��������� «������������� ��
���������». ������������� �� ��������� ������
�����������. �������������� ���������� �� ���� ���� ��
������� ���������� �� ip-param.txt.

���������� ����� ����� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 1 (��������).


3.5.4. arp_filter

��������/��������� ���������� IP-������ � ARP-�������.
���� ��� ����� ��������, �� ����� ����� ������������ �����
��� ���������, ����� ������� �������� ������. � ��������,
���� �� �� �����, ���� �� ������ �������� ����� ��� ��
���������, ����� ������� ��� ������� ������, ������, �
��������� �������, ��� ����� ����� �������� ������.

������ ��������� ���� ����� ���������� ������ � ���
������, ���� �� ����� ����� ������������ ����������
�������������� �������� ����� �������� ������������.
�������� ��-��������� — 0 (���������), ��������� ��� �����
���� ������� ������� � ����������� ���������� ���������
IP-���������. ����� IP-������ ��������������� ��� ���� �
���������� ����������, � ������ ����������, ������ �� ��
������� ������������� ��� ��������� ������ ��������,
������� ������ �������� ������ �� ������� ��� �����������
�� ���� �� ����� ��������� ��� ������� ���� ��������.

Tip

�������������� ���������� �� ������ �������� ��
������� � Guide to IP Layer
Network Administration with Linux
.


3.5.5. bootp_relay

���������� ���������/��������� ���������� ������� �
���������� �������� 0.b.c.d. ����� BOOTP relay ������
�������������� ��� ������ �� ���������� �����.

���������� ����� ����� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 0 (���������).

Caution

��������� ���������� bootp_relay ��� ��
�����������. ���� �� ������� ���������� ����
���������� — ������� ������! � ���� ����� ������
�������� � ������� � �������� ������������� netdev mailinglist.


3.5.6. forwarding

��������/��������� ������� ����������� (��������
���������� �������) ����� �������� ������������. ����������
conf/DEV/forwarding �����
�������������� ��� ���������/���������� ������� �����������
��� ��������� �����������. ���������� ����� ����� ���
�������� — 0 (���������) � 1 (��������). ��-��������� ���
���������� conf/DEV/forwarding ���������
�������� ������ ipv4/ip_forward ���, ���� ���
���������� ��������, �� � ��� ���������� conf/DEV/forwarding ����� ��������,
���� �� ���������, �� � ���������� conf/DEV/forwarding ��������
���������.


3.5.7. log_martians

���������� ��������/��������� ������� ��������������
���� �������, ������� �������� ������������ (�����������)
������ (��� ���������� martians — «�����������»
������). ��� ������������ ��������, � ������ ������,
������� �������� ����� ������, ������� ����������� �
������� �������������.

Caution

� ��������� ��������� ��� ����� ��������
�������� �������������� ����������, �� �� ������
��������, ��� ��� ���������� �� ��� �������� ���
����� ���� �� ��������. ��������� ���������,
������������ ������ � ��������� �������, �����
����: ������������� �������������; ������
�������������; ����������� �� �����������������
���������, ��� �������������� � Forwarding Information
Base
(FIB).

���������� ����� ����� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 0 (���������).


3.5.8. mc_forwarding

��������/��������� ��������� ������������� ���������
�������� ��� ��������� ����������. ����� ����, ����� �����
��������� ������������� ��������� ��������, ����������
������� ���� � ���������� ������ CONFIG_MROUTE.
������������� � ������� ������ ������� �����,
�������������� ��������� �������������. ��� �� ������
�������� � FTP-����� AT&T Research.. ���� ����� ���������
�������� DVMRP (�� ����. Distance Vector Multicast Routing
Protocol — �������� ������������� ��������� �������� ����
«������-����������»). ��� ���� �����
������������� ��������� �������� �������� �� ����� PIMd. ��� ����������
«������������» ��������� PIM (�� ����. Protocol
Independent Multicast — �������� ������������� ���������
��������, ����������� �� ������������� ���������
�������������), ��� PIM-SM. ��� �� �� ������� ������ ��
������ ���������� ���������� PIM-DM (Protocol Independent
Multicast-Dense Mode — �������� ������������� ���������
��������, ����������� �� ������������� ���������
�������������, «������������» ������) � PIM-SM
(Protocol Independant Multicast-Sparse Mode — ��������
������������� ��������� ��������, ����������� ��
������������� ��������� �������������,
«������������» ������). �������������� ����������
�� ��������� ��������� �� ������� � Multicast HOWTO.

��������� ��������� ������������ � ��� �������, �����
���������� ��������� �������� ���������� ����� � ����������
������� ����������. ��������, WEB-��������� ����������
�������� �������, ��� �� ��������, � ���� ��������� �������
������ ������� ������� � ����������������? ���� ��� ����
���������� ��������. ���� ������� ��������� ��������
��������� ����� ������ (����� ������ ����� ����� ��������,
��� ��� ���� ����� ������ �� ������� ���������� �����������
������), ���� ������������ ��������� ��������. � ����
������ ����������� ������� ���� ����������� � ���������
������� ����������, �� ���� ����������� ����� ����
����������� ����� ������������� ������ ��
«���������» ��������� �� ����������� �
�����������.

���������� ����� ����� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 0 (���������).
�������� �������� — ��� ������� ������������� �������� ���
�����, ���� �� ������� ���� �������� ��������� ������. ���
���������� ������ ���� �� ����������� ��������������
��������� ������ ����� ���� �������.


3.5.9. proxy_arp

��������/��������� ������������� arp-�������� ���
��������� ����������. ARP-������ ��������� ��������������
�������� �� ARP ������� � ���� ����, � �� ����� ���
������������� ���� ��������� � ������ ����. � ������� �����
�������� ���������� «�����» �����������, �������
�������� ARP ������, ����� ���� �� ������, ���
������������� �������� ������ ����������, ����� ��� �
���������������� ���� ���������� ��������� «�� ������
�������» ��������������.

������������� ��������� � ���� ��������������� ������
����� ����������, ������������ ������ �� ������� �����.

���������� ����� ����� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 0 (���������).
�������������� ���������� �� ������� � Proxy-ARP mini HOWTO.


3.5.10. rp_filter

��������/��������� reverse path filter («��������
��������� ������» — ���� ��� ������� ������� �������
�������, �� ��� �� ������� �������� ������� �� ������.
����. �����.) ��� ��������� ����������. ����� ����
���������� ���������� ����� — ��� ��� ��������� � ���
�������� �������� �� ������������ ���������� ������ � �����
�������� ������������� � ����� �������� ��������� ��������,
���� �������� ����� ������������ �������� ������ ����� ���
�� ����� ���������.

Caution

���� �� ����������� ����������� �������������
��� ��� ���� �������, �� ��� ������� �������
���������� � ���������� ���� ����������, ���������
��� ����� ��������� �������� ������ �������.
��������, � ������, ����� �������� ������ ����
����� ���� �������������, � ��������� — �����
������. ���, WEB-������, ������������ ����� ����
������� ��������� � �������� �������, � �����
������ — � ��������� (� ������, ����� �������
rp_filter), ����� ������ «������»
�������� ������, ��������� �������� �������, �
������� �������������, ����� ����� ������
���������.

���������� ����� ����� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 0 (���������). ������
� ��������� ������������� ��-��������� ��� ����������
���������� � ��������� �������� �� ����� ��������. �������,
���� � ��� ��� ���������� ��������, � ��� ���� �� ���������
— ����������� ��������� ������� � �������� rc.d.

Tip

����� ��������� ���������� �� ���� ���������� ��
������� � RFC 1812 — Requirements for IP
Version 4 Routers
�� ��������� 46-49
(������ 4.2.2.11), �������� 55 (������ 4.3.2.7) �
�������� 90 (������ 5.3.3.3). ���� �� �������
����������� ���������� �������������, �� ���
����������� �������� ������� ���� ��������.


3.5.11. secure_redirects

��������/��������� ����� ���������� �������������. ����
���������� ���������, �� ����� ����������� ����� ���������
ICMP Redirect … �� ������ ����� �� ������ �����. ����
���������� ��������, �� ��������� � ������������� �����
�������������� ������ �� ��� ������ (gateways), �������
������� � ������ ������ ��-���������. � ������� ���� �����
����� �������� ����������� ������ �������������, �������
����� ���� ������������ ��� ��������� �������.

���������� ����� ����� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 1 (��������). ��������
�������� — �������� ���� ���������� ���������� ����������
shared_media, ��� ���, ���� �� ��������� secure_redirects,
�� ���������� �������� � shared_media.


3.5.12. send_redirects

��������/��������� ������ ICMP Redirect … ������
������. ��� ����� ����������� ������ ���� ��������, ����
���� ��������� � ���� �������������� ������ ����. ���
������� ICMP-��������� � ������������� ������������ � ���
������, ����� ���������� �������� ����� � ���, ��� ��
������ �������� � ������� � ������ ��������.

���������� ����� ����� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 1 (��������). ����
��������� �� ��������� � ���� ��������������, �� ���
���������� ����� ���������.


3.5.13. shared_media

��������/��������� ������� ����, ��� ���������� ����
�������� ��������� ���������� ���������� ��������,
��������, ����� �� ����� ���������� ������ ������������
��������� �������� � ���������� �������� �������. ����
������� ������������ ����� ��� �������� ������� �
������������� ������ ICMP-��������� � �������������.

���������� ����� ����� ��� �������� — 0 (���������) � 1
(��������). �������� ��-��������� — 0 (���������). ���
���������� ����������� �������� ����������
secure_redirects.


3.7. ���������� Netfilter

��� ����������, ������������� �
/proc/sys/net/ipv4/netfilter/ ������� � �����������������
netfilter � iptables. ��� ���������� ���� ��� �� ��������
������ ��������� ����, �� ��������������, ��� ��� �����
�������� � ���� � ��������� �������. ���� �� ������� �����
��� ��������� � ����, �� ��� ���������� ���������� ����
�������� tcp-window-tracking, ������� ������ � ������ ������
iptables patch-o-matic. ��������� ������ ����������� ��������
make patch-o-matic
KERNEL_DIR=/usr/src/linux
�� ��������, ����
�������������� ������ ���� ��������� ����� patch-o-matic.

������ ��������� ����������� � ��������� �����������
������� ����� � �������� ������, � ����� ������������ ����.
������ ��, � ���������� ������������, ��� ���������� �������
�����, ����� «�� ����» ��������� �����������
�������� ������� (netfilter) � ������������� ����������.

� ���� ������� ����� ��������������� ����������, �������
���������� �������� ����� ���������� ���� � ������������
������������. ��� �������� ����������, ������� ���������
���������� ���������� �����������, ���������� �
«�����» (��� ����������� i386 — 1 «���»
= 1/100 ���.).


3.7.1. ip_ct_generic_timeout

���������� �������� ����� �������� ��� ��� �������,
����� ������������ �� � ��������� ���������� ��� ���������,
��� �������� ������� ���� ����������� ����� ��������. ���
������ ������, ������� ����� ���������� � ��� �������� ��
����� ���� ��������� ��������, ��������������� ��������
�������� �� ���� ����������.

���������� ��������� ����� �����. �������� ��-���������
— 600 ������, ��� 10 �����. ���� ��� �������� � �����
������ �������� ������������ ������� — ����������
���������� ����������� ��� �� ��� ���, ���� ���������� ��
������ ���������� �����������.


3.7.2. ip_ct_icmp_timeout

���������� �������� ����� �������� ��� ICMP-�������,
�.�. ��� ��� ������� Echo request � Echo reply, Timestamp
request � Timestamp reply, Information request �
Information reply � ������� Address mask request � Address
mask reply. ������� ������� ��������������, ��� �����
��������� ICMP-�������, ICMP-����� ������ ������ � �������
���������� �������.

��� �������, ICMP-������� ��������� ���������� ������, �
�������� ���������� ������, ������� �������� �������� ���
ICMP-������� ��������� ���� — �������� 30 ������. ����
�������� ������ ����������, ���� �� �������� �� �����
������������ �����������.


3.7.3. ip_ct_tcp_be_liberal

��� ���������� �������� �� ��������� �������������
TCP-���������� �� ��������� � �������, ��������� ���
�������� TCP-����. ���� ���������� ���������, �� ���� �����
������� ����� ������������� ������� INVALID. ����
���������� �������� — �� �������� ������������� ������
����� �����������, ���������� ���������� ���� RST-������,
������� ��-�������� ����� ������������� ������� INVALID,
���� ��� ������ �� ��������� TCP-����. ��������� ������� —
��������� ��� ����� � �������� �� ������ � ���������
�������.

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 0 (���������).


3.7.4. ip_ct_tcp_log_invalid_scale

��������/��������� �������������� ������� � ���������
��������� �������� TCP-����. ��������������� ���� — ���
������������� �����������, ��������� � �����������
����������� TCP. ��� �������� ������� � RFC 1323 — TCP Extensions for High
Performance
. ���� ������� ���� ��� �������
���������, �� ����� ����� ����� ������� � ������.

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 1 (��������).
������, ���� � ��� ��������� �������� ��� �������������� �
���������, �������� ����� ������� ���������� TCP �, ���
���������, ���������� ���������� ������� ����������������,
�� ������ ��������� ��� �����.


3.7.5. ip_ct_tcp_log_out_of_window

��������/��������� �������������� �������, ��������� ���
�������� TCP-����. ������ ��� ����� ������������ ���������
� ��������� ���� ���������� ip_ct_tcp_be_liberal. ���
������, ��������� ��� TCP-����, � ����������� �� ��������
���������� ip_ct_tcp_be_liberal, ����� ���������� �
��������� ������, ���� ����������
ip_ct_tcp_log_out_of_window ����� ��������.

���������� ����� ��������� ��� �������� — 0 (���������)
� 1 (��������). �������� ��-��������� — 1 (��������).
������, ���� � ��������� ������ ��������� ������� �����
�������� ��������������, � �� �� � ��������� �������������
������, ����������� ��� ���������, �� ������ ��������� ���
�����.


3.7.6. ip_ct_tcp_timeout_close

���������� �������� ����� �������� ��� ��������� CLOSE,
��� ��� ���������� � RFC 793 (����������, ��� � ������
�������� ����� ���� ����� �� ��������� CLOSE, � ���������
CLOSING, ��������� ��������� CLOSE � RFC 793 ��
������������, ����. �����.). ����� ������ ����������
FIN-����� �������, ����� �������� FIN-����� �� ������� �
�������� ������������� �������� — FIN/ACK-�����, ��
���������� ����������� � ��������� CLOSE (��. ����. �����.
����). ����� ����������� ��������������� FIN/ACK-������ ��
�������, ���������� ����������� � ��������� TIME_WAIT.
(����������� ����� �������� ���������� «�������������
�������� ����������», �.�. ����� �������� ����������
������������ ������������ � ����� ������. ����. �����)

���������� ��������� ����� �����. �������� ��-���������
— 1000 «�����», ��� 10 ������. ��� ����������
������� ��������, ������, ���� �� ����� ��������, ���
���������� � ���� ��������� ���������� �� ���������
��������, �� ��� ������� ����������� ����������� ����
�������� �� ��� ���, ���� ��� �������� �� ��������.


3.7.7. ip_ct_tcp_timeout_close_wait

���������� �������� ����� �������� ��� ���������
CLOSE-WAIT, ������� ��� �� ���������� � RFC 793. ����������
����������� � ��� ��������� �����, ����� �� ������� �������
FIN-����� � � ����� ��������� FIN/ACK-�����. ��� ���������
������ �� ��� ���, ���� ������� �� ����� ������� FIN-�����
�� ������� �������, ����� �������� ���������� �������� �
��������� LAST-ACK.

�������� ��-��������� — 43200 ������, ��� 12 �����.
������, ��� �������� ���������� 60 ������, �� ����
������������ ��-�� ��������� �������� ���������� ��������
���������� �� ��������. ������ ����� ������� ������
���������� ��� ������ ���������� �� ��������� CLOSE-WAIT,
�� ���� � ��� ��������� �������� � ������������� �������
������������� ��-�� �������� ���������� ����������,
����������� � ��������� CLOSE-WAIT, �� ��� ���������� ����
��������� ����� ��� � �������, ���� ��������� ���� ��������
�� ��������� �����.


3.7.8.
ip_ct_tcp_timeout_established

���������� �������� ����� �������� ��� ����������,
����������� � ��������� ESTABLISHED. ��� ����������,
������� ������������ �������� ��������� ������������
����������, � �� ������� �� ���� �������� �� ������
FIN-������, ��������� � ��������� ESTABLISHED. �������
������� — ��� ����� ��� ����� ������� ���������
TCP-����������.

��������� ���� �� ��� ������ ������, ����� �������������
���������� ���� ��������� �� ��������, ��� ����� �������
����������� ������� — 432000 ������, ��� 5 �����.

Caution

��� �� ������� ��������� ���� ��������, ����
���� � ��� ����������� ������� ����� ��������
����������. ���� � ��� ��������� �������� ��-��
�����, �� ��� ����� ������������ ��� �������
ip_conntrack_init � ����� ip_conntrack_core.c, �
������� ������ �������� ����������� �� ����������
������� � ������� �������������. ����� �������
������ �������� ���������� ����, ��� ��� ������� ��
����� ���� ��������� � ���� (swap-memory).


3.7.9. ip_ct_tcp_timeout_fin_wait

���������� �������� ����� �������� ��� ���������
FIN-WAIT-1 � FIN-WAIT-2, ��������� � RFC 793. ���������
FIN-WAIT-1 ��������������� ����� ���� ��� ������� �����
������� FIN-�����, � ��������� FIN-WAIT-2 ����� ���������
FIN/ACK-������ �� �������. ���� �� ������� FIN-�����
�������� ������, ��� FIN/ACK-����� (��������
«�������������� �������� ����������» ����.
�����.), �� ������ ��������� FIN-WAIT-2 ���������������
��������� CLOSING.

�������� ��-��������� — 120 ������, ��� 2 ������. ���
�������� ���������� ��� ����������� �������, �� ����� ����
��������� ���������, ���� ���������� ����������� ��
�������� ��-�� �������� �� �����������. �����������, ���� �
��� ��������� �������� � ������������� �������
�������������, �� ��� �������� ����� ����������� ���������,
�� �� ���������, ����� �� ��������� �������� ������
��������� �������� ���������� � ����� ������.


3.7.10. ip_ct_tcp_timeout_last_ack

���������� �������� ����� �������� ��� ���������
LAST-ACK. ��� ��������� ��������������� ����� ����, ���
������ �������� FIN-����� ������� ����� ���������
FIN-������ �� ������� � �������� ��� FIN/ACK-������. ���
��������� ��������������� ����� CLOSE-WAIT ���������, �����
��������� �������� ��������������� FIN/ACK-������, �����
���� ������ � ������� ������������� ������������, �
��������������� ��������� CLOSED.

�������� ��-��������� — 30 ������. ����� ������� �����
��� ���������� ��� ����, ����� �������� ��������������
FIN/ACK-�����, ������, � ��������� �������, ��� ����� � ��
�������. � ���� �������� ������ ����������� ���������
��������� ��� ��������. ���� � ��� ��������� �������� �
������������� ������� �������������, �� ��� �������� �����
����������� ���������, �� �� ���������, ����� �� ��������
��������� �������� ���������� �� ��������.


3.7.11. ip_ct_tcp_timeout_listen

���������� �������� ����� �������� ��� ��������� LISTEN.
��������� LISTEN — ��� ��������� ��������� ���� �������,
�������� RFC 793, ������� ������� ������������ ����������.
������������ ������ �� ����� �� ���� ���������, ���������
�� �� ������ ������� ������������� ��� ���������� ������
���� �������. ��� �� ����� ��� ���������� ���� ������� ���
���������� ������������ � RFC 793, � �������� � �� ����
������ ������, ��������� � �������� ������� �������������
netfilter.

�������� ��-��������� — 120 ������, ��� 2 ������. ���
�������� ����� ���� ��������� �� ����, ���� �� ������� ���
�����������, ������ ��� ����� ������� �� ����� ������
�������� ��������� �������������. � ������ �������,
��������� ��� ���������� ������� �� ������������, �� ��
����� ������� ������ ������ �������� ��-���������.


3.7.12. ip_ct_tcp_timeout_none

��� ���������� ������������ � ������� �����������
��������� ������� ������� � ������������ �������, �����
������������ ����������� � ������� �� ������ — � ������
��������� ������� ����������. ��������: ���������� �������
�� «�����» ��������� � ����� ��������� ���������
����������, ���� �� «������» ��� �������. �����
����� ������������ �������� ������ �����, �� ����������
������������� ������ NONE. ����� ����� ������������
�������� ���������� — � ������ ��������� ������� �������
���� �����, � ������������ � RFC 793. � ����������� ��
���������� TCP-������, ����� ����� ���� ������� � ���������
SYN-SENT, ESTABLISHED, TIME-WAIT ��� CLOSING.

�������� ����������� ����, ����� ����������, ���
���������� ����������� ������� �� ��������� � ���������
NONE ���, ���� ���� ����� ������ — ��� ��������� ������
����� � ����� �������� ���������� �������. ����� ������ —
��� ������� ������������� ��� ���� �������� �������� ����
����������, ��������� ��� ����������� �� ������������,
������ ��� � ����������� �������, ����������� ������� ��
��������� ���������� ��� ������ �� ����� ���������.

�������� ��-��������� — 1800 ������, ��� 30 �����.


3.7.13. ip_ct_tcp_timeout_syn_recv

��� ���������� ���������� ����� �������� ��� ���������
SYN-RECEIVED (���������� ��� �� ��� SYN-RCVD ��� SYN-RECV),
�������� RFC 793. ��� ��������� ��������� ����� ��
���������� LISTEN ��� SYN-SENT ����� ����, ��� ������
������ ����� SYN � ������� �� ���� SYN/ACK-�������. ���
��������� ������������ ��������� ESTABLISHED, �������, �
���� �������, ��������� ����� ���������, ������������
��������� ������������ ����������, ACK-������.

�������� ��-��������� — 60 ������, ��� 1 ������. ���
���������� ������� ��������, ������, ���� �� ���������
������������� � ��������� ��������� �������� ���������
SYN-RECV ��� SYN-SENT, �� ������ ����������� ���������
��������� ��� ��������. � ���������� ����������� ����������
���� ����������, ��������� ��� ����� �� �������� �� �����
�������� ��� ������� ������������ ����������.


3.7.14. ip_ct_tcp_timeout_syn_sent

��� ���������� ���������� ����� �������� ��� ���������
SYN-SENT. ��� ��������� ��������������� ����� ����, ���
������ �������� SYN-����� � �������� � �������� ���������
SYN/ACK-������. ��������� SYN-SENT ������������ ���������
SYN-RCVD ��� ESTABLISHED, ������� ��������� ����� ������
������ SYN/ACK.

�������� ��-��������� — 120 ������, ��� 2 ������. ���
���������� ������� ��������, ������, ���� �� �������������
� ����������, ���������� � ����������� �������� ���������
SYN-SENT, �� ����� ����������� ��������� ���� ��������. �
���������� ����������� ���������� ���� ����������,
��������� ��� ����� �� �������� �� ����� �������� ���
������� ������������ ����������.


3.7.15. ip_ct_tcp_timeout_time_wait

��� ���������� ���������� ����� �������� ��� ���������
TIME-WAIT, �������� RFC 793. ��� ��������� �� ���������
��������� � TCP-�����������. ����� �������� ���������� �
����� ������, � ������ � ������ ��������� � ���������
TIME-WAIT ��� ����, ����� ���� ����� �� �����������
«����������» �������. «����������»
������ ����� ��������� � ���������� ��������� �������
����������� ������� �� ����, �.�. � �������� ����� ������
�������� �� � ��� ������� � ����� ��� ���� ����������. ��
��������� ����� �������� ������ � ������� �������������,
��������������� ��������� ����������, ������������ �
����������� ����������� � ��������� CLOSED. (����� ��� ��
������� � ����� ����� «����������� ����������� �
��������� CLOSED», �� ����� ���� ��� ��������������
����������, � ������� ��������� ����������� ���������� �
����� �����������, ����� ������ — ��� ���������������,
������������ ��, ���� ��� �� ����� ����! ����. �����.)

�������� ��-��������� — 120 ������, ��� 2 ������. ��
������������� �������� ��� ��������. ������, ���
������������� �����, ��� ����� � ������ ����������
������������, ��� ����� ����� ���������� �������
����������� �������, ��� �������� ����� ��������� �������
���������, ��� ����� �������� � ������ �����������
����������. � ���� ������ ��� ����������� �����������
��������� ����� �������� TIME-WAIT. ���� � ��� ������� ��
��������� ��������� ���� �������, �� ����� �������
��������� ���� ��������, ����� ������� �������������
������� ������������� �� ����� �������.


3.7.16. ip_ct_udp_timeout

��� ���������� ���������� ����� �������� �����������
���������� ��������� UDP-�������. ����� �������� ������ UDP
�����, �� �� �������� ������ NEW, � ��� ������ �����
������������ ������� �������� ����� — UDP-����������
������������� ������ ESTABLISHED, �� ������� ����������
�����������. ����� ����, ��� ����� ���������� �������
����-������� ��������� UDP-�������, �� ��� ����, � �������
�������������, ��������������� ���� ASSURED (���������
���������� ����. �����.) � ������� ���������
�����������.

�������� ��-��������� — 30 ������. ���� �� �����������
UDP �������� ��� �������� ��������� ������ ������,
��������� ����� ���������� ��������� �������, �� ������
����� ��� �������� ��������� ��� ��������. � ����������
����������� ���������� �������� � �������, ����� ��������
����� ����������� �������� ������ �� ��������� UDP,
����������� «����������» �������� ������ — ���
����� �������� � ���������� ������� ������������� ���������
��������.


3.7.17. ip_ct_udp_timeout_stream

��� ���������� ���������� ����� �������� ��� UDP-������,
����������� ������� ASSURED (��. ����). ���� ������� ������
������������� UDP-�����������, ����� ������� �������
�������� �������� �����, ��������� ����� ������� �������
���� ��������� ������� ��� ICQ. �������� ���� ����������
������ ������ ���� ������, ��� ip_ct_udp_timeout, ���������
���� ����� ���� � UDP-�������, �� ������� ����������
������� ���������� ������, ����� ���� � �� �������������
����������.

�������� ��-��������� — 180 ������, ��� 3 ������. ����
� ��� ��������� ��������, ��������� � ���������� �����
�������� — ���������� ������� ��������� ���. �� �������
��������� ���� �������, ��������� ��� ����� �������� �
������ ������ ������� �� ��������. � ���������, ���
��������� UDP �� ����� ���� ��������� ������ �����
���������, ������� ������������ �� ����� ������ �����
��������� ��� UDP-�������.


3.8. Route-����������

������� route/ ��������, ������� �������, ����������,
��������� � ��������������. ���� ���������� ������������
���������� ������������ ���������, ������ — ���������
���������� ����������� ������ «������ ������» �
���� ���������.


3.8.1. error_burst

���������� ������������ � ���� � error_cost ��� �����������
���������� ������������ ��������� ICMP <Destination>
Unreachable. ��� ���������� ����� � ���� ����� ��������
������� «���������» �������� ���������, � ��
����� ��� error_cost ����������
«����» ������ ���������. ����� error_burst
«������������», �� �������� ��������� ICMP
<Destination> Unreachable ������������.

Note

��������� ICMP <Destination> Unreachable
������ ���������� �����, ����� ����������
���������� ���������� ������� �������� ������.
����� ����� ���� ��� �������:

  1. ���������� ��������� �������� �����.

  2. �� �������� ������� � ��������� ��������
    ���� ��� �����.

  3. ���� ������ ������� �������� ������� ������
    �������������.

� ���� ���� ������� ������� ����������
���������� ��������� ICMP <Destination>
Unreachable, ���� ��� ������� ������:

  1. ICMP Host Unreachable — ����� ����,
    ����������� � ��� �� ����, ��� � ��� ������ —
    ���������� (�.�. �� �������� �� ARP-�������.
    ����. �����.).

  2. ICMP Network Unreachable — ����� � �������
    ������������� ������� ��� �� ������ ��������,
    �� �������� ����� ��� �� ���� ���������
    ������.

  3. ICMP Communication Administratively
    Prohibited By Filtering — ����� ����� �� �����
    ���� ����������� ��-�� ������� ������
    ������������� ���� ����������� ��������.

�������� ��-��������� — 500. �������� ��������
��-��������� ���������� error_cost (100) ���
������������� 5-�� ���������� ICMP Destination Unreachables
� �������.


3.8.2. error_cost

����� ��������� �������� ��. ���� error_burst. ��������
����� ���� ���������� — «����» ������ ���������
ICMP Destination Unreachable.

�������� ��-��������� — 100, ��� ������������� ��������
�� ����� 5-�� ��������� ICMP Destination Unreachable �� 1
������� (���� ������ ����������� � ������ ��������
��-��������� ���������� error_burst).


3.8.3. flush

��� ���������� ����� ������ � �������������. ��� ��
�������� ������� �������� ������, ������� ������� ���������
��� ���������� �� ���� ������� �����������. ������ �����
���������� � ��� ���������� (���� ����� ����������, ������
����� ���� ����������� ������, ���� �� ��������� �������
root) �������� � ������� ���� ���������. ����������� ���
��������� �� ������ � /proc/net/rt_cache.


���������� A. ������� ���������

A.1. «����»

�� �����������: ������� ���� ��������� �� �����
�������������� ������, ��� «���», �� ������� �
������ �� ���� ���������. ���� �� ������� ���������� �����
������ — ������, ��������! 8-))

«����» — ��� ������� �������, ������������
����� Linux. ��� ������� ���������� �� ��������� HZ,
����������� ������� �� ������� � /usr/include/asm/param.h.
�������� ���� ��������� �������� ��� ������ ����������
��������. ��� ��������, ��� ����������� i386 ����
«���» ����� 1/100 �������, � ��� ��������� Alpha —
1/1024 �������. ������ ������ ������������ ����������
�������� � ���������� «�����», �������������� � 1
�������, �������� ����.

������� A-1. ���������� «�����» �
������� ��� ��������� ���������� ��������

����������� «����» � ������� ����������
Alpha 1024 ��-����� ������ AlphaServer 1200, 4000
� 4100 ����� 1024 «����» � �������, ����
��������� ������ CONFIG_ALPHA_RAWHIDE. ����
CONFIG_ALPHA_RAWHIDE �� ���������, �� � ��������
��������� HZ ��������������� ����� 1200. ����
���-������ ������ ������� ���-�� ������������ ��
������� ������ — ������ (������ ������� �����������,
����. �����.)
ARM 100
CRIS 100
i386 100
ia64 1024 ���� ��������� ������
CONFIG_IA64_HP_SIM, �� ����� HZ = 32, ��������� ���
����������� ������������ ����������� IA64, � �����
�������� ������ �������� �����������.
m68k 100
MIPS 100 ����� ��� ����� ��������� �
include/asm/param.h, ��������� ��� ��������
����������� �������� ������� ������� � ������� ��
������������ ����������.
MIPS64 100
PA-RISC 100
PPC 100
PPC-64 100 ����� ���� — ����� �������� ������
������������� � ���, ��� ����������� ��� �������� —
��������� � include/asm/param.h.
S390 100
S390X 100
SH 100
Sparc 100
Sparc64 100


���������� B. ������

����� ���������� ������ ������ �� �������, ������� �
����������� � �������� ������ ��� ������������. ����� ������ �
�� ������� � ������ �������������, ����� — �� ������������.
���� �� ������ ���������� ���� ������ �� �������������� �������
— �������� ���, ����� � ���� �� �������� �� � ���� ������.

  • RFC 791 — Internet Protocol — ��������,
    ����������� �������� IP. ���� �������� �������� ���������
    ��������� DoD Standard Internet Protocol, ����������� J.
    Postel.

  • RFC 792 — Internet Control Message
    Protocol — ������ �������� � ��������� ICMP. ��� ��
    ����� �����-���� ���������� �� ���� ���������, �� � ������
    ������� ��� ������� ��������� ����. �����: J. Postel.

  • RFC 793 — Transmission Control Protocol
    — �������� ��������, ��������������� �������� ��� ���������
    TCP, ������� � 1981 ����. ������ ����������� ��������, ��
    ������������� � ��������� ����, ��� ������ ��������
    ����������� ��������� ����� ���������. ���������� ���
    ���������� � ������������ ������� (���, ����. �����.).
    �����: J. Postel.

  • RFC 959 — File Transfer Protocol —
    ��������, ����������� �������� FTP. ������: J. Postel � J.
    Reynolds.

  • RFC 1072 — TCP Extensions for Long-Delay
    Paths — � ���� ��������� ����������� ������� �������,
    ��������� � ���������� � ��������, �������� �����������
    ������� «����� ��������» ��� ������ �� �����
    «�������» ������� � ��� ����� ��������� ���������
    ������������� ������� TCP-������������������� ����� �����
    �������. ���� RFC �������� ���������� ������� RFC 1323, ��
    � ������ ��� �����, ������ ��� �� �������� �������
    ���������� ������ ����������. ������: V. Jacobson � R.
    Braden.

  • RFC 1122 — Requirements for Internet Hosts
    — Communication Layers — ����� ���������� ���������� �
    ����� ���� Internet. ������ � IETF, ��� ��������� R.
    Braden.

  • RFC 1123 — Requirements for Internet Hosts
    — Application and Support — ���������� � ����������
    ����������� ������ ��� ���� ����� Internet. ��� ���������
    R. Braden.

  • RFC 1323 — TCP Extensions for High
    Performance — ��������� �������� RFC 1072, � �������
    ����������� ����. ������: V. Jacobson, R. Braden � D.
    Borman.

  • RFC 1337 — TIME-WAIT Assassination Hazards
    in TCP — ����������� ��������� ��������� ���������
    ������ TCP-���������� � ������ ��� ������� ���� �������.
    �����: R. Braden.

  • RFC 1812 — Requirements for IP Version 4
    Routers — ����������� ����������, ������������� �� ����
    IPv4 ���������������. ��� ���������� ��������� ����
    �������, ���� �� ����������� ��������� �������������. ����
    RFC ���������� �� ���������� RFC 1716. �������� F.
    Baker.

  • RFC 2018 — TCP Selective Acknowledgement
    Options — ����������� ���������� � TCP — SACK, ���
    Selective Acknowledgement (���������� �������������).
    ������: M. Mathis, J. Mahdavi, S. Floyd � A. Romanow.

  • RFC 2883 — An Extension to Selective
    Acknowledgement (SACK) Option for TCP — ���������������
    ���������� ���������� SACK � TCP. ������: S. Floyd, J.
    Mahdavi, M. Mathis � M. Podolsky.

  • RFC 2884 — Performance Evaluation of
    Explicit Congestion Notification (ECN) in IP Networks —
    ������ ������ ���������� ECN � IP-�����. ��� �������������
    �������������� RFC � �� �������� ������� �������������
    ���������� �� ���������� ECN. ������: J. Hadi Salim � U.
    Ahmed.

  • RFC 3168 — The Addition of Explicit
    Congestion Notification (ECN) to IP — ���� ��������
    ���������, �� ����������� ������ — ��� ������
    �������������� ���������� ECN � �� ��� ����� ����
    ����������� � ���������� TCP � IP. ������: K. Ramakrishnan,
    S. Floyd � D. Black.

  • Guide to IP Layer Network Administration
    with Linux — �������� �����������, �������������� �
    ���, ��� �������� IP � Linux � ��� ��� ����������������.
    ����������� �������������� � ����� ��������� IP. ��������
    �������� ��������������� �������� ��������� ARP, �������
    ����������� ������ ������������.

  • ECN-under-Linux Unofficial Vendor Support
    Page — ���������� ���������, ���������� ���������� ��
    ��������� ECN.

  • ECN: Executive Summary — ��������� ��
    Dax Kelson, ������������ � ������ �������� �������������
    ���� (Linux kernel mailing list), ������������, ��� 8%
    ����� Internet ���������� ��� ��������, ��-��
    ��������������� � ����������� ECN. ��� �������� ����������
    2000 ����� (10 �������� 2000 �.), ��� ��� ��������, ���
    ���������, �� ����������� ����, ����������.

  • TCP Tuning Guide — ����������� ���������
    �������� ����������� TCP, � ����� ���������
    ������������������. �������� ������� ������� �� DIDC (Data
    Intensive Distributed Computing group) �� Lawrence Berkeley
    Labs., ����� ������: Brian L. Tierney. ����������� ��
    ���������� ����� ������������, ��������� ���� � ����������
    �����.

  • services.txt — ������ ����� /etc/services. ���� ������ ���� ��
    ������������ Slackware 8.0.

  • protocols.txt — ������ ����� /etc/protocols. ����� ����������
    ������������� ����� ������� �������� � �� ������. ����
    ������ ���� �� ������������ Slackware 8.0.

  • ip-sysctl.txt — ������������
    ������������ �� �������� ip-sysctl ���� Linux. ���� ����
    ��� ���� �� ������������, �������������� ���� 2.4.14.

  • ip_dynaddr.txt — ����� ����������
    ���������� �� ����� ip_dynaddr, ��������� ����� ���������
    sysctl. ���� ���� ��� ���� �� ������������, ��������������
    ���� 2.4.14. ���������� ��� ������� JuanJo Ciarlante.

  • ip-param.txt — ����� ����������
    ���������� � ����� IP-���������� � ���������� ������ ��
    ��������������� RFC.

  • netdev mailinglist — ������ �������� ���
    ������������� ������� ���������� Linux.


���������� C. ����������

Version�1.0.4�(21�May�2003)
http://ipsysctl-tutorial.frozentux.net
By:�Oskar�Andreasson

Version�1.0.3�(26�Apr�2003)
http://ipsysctl-tutorial.frozentux.net
By:�Oskar�Andreasson
Contributors:�Don�Cohen,�Martin�A.�Brown�and�Brian�Tierney.

Version�1.0.2�(19�Dec�2002)
http://ipsysctl-tutorial.frozentux.net
By:�Oskar�Andreasson
Contributors:�Alan�Cox,�Michael�T.�Babcock,�Don�Cohen�and�several�others.

Version�1.0.1�(23�Oct�2002)
http://ipsysctl-tutorial.frozentux.net
By:�Oskar�Andreasson
Contributors:�William�Stearns,�Don�Gould,�Mattias�Webj�rn�Eriksson�and

Michael�Bussmann.

Version�1.0.0�(8�Oct�2002)
http://ipsysctl-tutorial.frozentux.net
By:�Oskar�Andreasson
Contributors:�Jozsef�Kadlecsik,�Nivedita�Singhvi,�JuanJo�Ciarlanti�and�

Alexey�Kuznetsov


���������� D. GNU Free Documentation
License

Version 1.1, March 2000

Copyright (C) 2000 Free Software Foundation, Inc. 59
Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone
is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


0. PREAMBLE

The purpose of this License is to make a manual, textbook,
or other written document «free» in the sense of
freedom: to assure everyone the effective freedom to copy and
redistribute it, with or without modifying it, either
commercially or noncommercially. Secondarily, this License
preserves for the author and publisher a way to get credit
for their work, while not being considered responsible for
modifications made by others.

This License is a kind of «copyleft», which
means that derivative works of the document must themselves
be free in the same sense. It complements the GNU General
Public License, which is a copyleft license designed for free
software.

We have designed this License in order to use it for
manuals for free software, because free software needs free
documentation: a free program should come with manuals
providing the same freedoms that the software does. But this
License is not limited to software manuals; it can be used
for any textual work, regardless of subject matter or whether
it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or
reference.


1. APPLICABILITY AND
DEFINITIONS

This License applies to any manual or other work that
contains a notice placed by the copyright holder saying it
can be distributed under the terms of this License. The
«Document», below, refers to any such manual or
work. Any member of the public is a licensee, and is
addressed as «you».

A «Modified Version» of the Document means any
work containing the Document or a portion of it, either
copied verbatim, or with modifications and/or translated into
another language.

A «Secondary Section» is a named appendix or a
front-matter section of the Document that deals exclusively
with the relationship of the publishers or authors of the
Document to the Document’s overall subject (or to related
matters) and contains nothing that could fall directly within
that overall subject. (For example, if the Document is in
part a textbook of mathematics, a Secondary Section may not
explain any mathematics.) The relationship could be a matter
of historical connection with the subject or with related
matters, or of legal, commercial, philosophical, ethical or
political position regarding them.

The «Invariant Sections» are certain Secondary
Sections whose titles are designated, as being those of
Invariant Sections, in the notice that says that the Document
is released under this License.

The «Cover Texts» are certain short passages of
text that are listed, as Front-Cover Texts or Back-Cover
Texts, in the notice that says that the Document is released
under this License.

A «Transparent» copy of the Document means a
machine-readable copy, represented in a format whose
specification is available to the general public, whose
contents can be viewed and edited directly and
straightforwardly with generic text editors or (for images
composed of pixels) generic paint programs or (for drawings)
some widely available drawing editor, and that is suitable
for input to text formatters or for automatic translation to
a variety of formats suitable for input to text formatters. A
copy made in an otherwise Transparent file format whose
markup has been designed to thwart or discourage subsequent
modification by readers is not Transparent. A copy that is
not «Transparent» is called «Opaque».

Examples of suitable formats for Transparent copies
include plain ASCII without markup, Texinfo input format,
LaTeX input format, SGML or XML using a publicly available
DTD, and standard-conforming simple HTML designed for human
modification. Opaque formats include PostScript, PDF,
proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD
and/or processing tools are not generally available, and the
machine-generated HTML produced by some word processors for
output purposes only.

The «Title Page» means, for a printed book, the
title page itself, plus such following pages as are needed to
hold, legibly, the material this License requires to appear
in the title page. For works in formats which do not have any
title page as such, «Title Page» means the text
near the most prominent appearance of the work’s title,
preceding the beginning of the body of the text.


2. VERBATIM COPYING

You may copy and distribute the Document in any medium,
either commercially or noncommercially, provided that this
License, the copyright notices, and the license notice saying
this License applies to the Document are reproduced in all
copies, and that you add no other conditions whatsoever to
those of this License. You may not use technical measures to
obstruct or control the reading or further copying of the
copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a
large enough number of copies you must also follow the
conditions in section 3.

You may also lend copies, under the same conditions stated
above, and you may publicly display copies.


3. COPYING IN QUANTITY

If you publish printed copies of the Document numbering
more than 100, and the Document’s license notice requires
Cover Texts, you must enclose the copies in covers that
carry, clearly and legibly, all these Cover Texts:
Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly
identify you as the publisher of these copies. The front
cover must present the full title with all words of the title
equally prominent and visible. You may add other material on
the covers in addition. Copying with changes limited to the
covers, as long as they preserve the title of the Document
and satisfy these conditions, can be treated as verbatim
copying in other respects.

If the required texts for either cover are too voluminous
to fit legibly, you should put the first ones listed (as many
as fit reasonably) on the actual cover, and continue the rest
onto adjacent pages.

If you publish or distribute Opaque copies of the Document
numbering more than 100, you must either include a
machine-readable Transparent copy along with each Opaque
copy, or state in or with each Opaque copy a
publicly-accessible computer-network location containing a
complete Transparent copy of the Document, free of added
material, which the general network-using public has access
to download anonymously at no charge using public-standard
network protocols. If you use the latter option, you must
take reasonably prudent steps, when you begin distribution of
Opaque copies in quantity, to ensure that this Transparent
copy will remain thus accessible at the stated location until
at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of
that edition to the public.

It is requested, but not required, that you contact the
authors of the Document well before redistributing any large
number of copies, to give them a chance to provide you with
an updated version of the Document.


4. MODIFICATIONS

You may copy and distribute a Modified Version of the
Document under the conditions of sections 2 and 3 above,
provided that you release the Modified Version under
precisely this License, with the Modified Version filling the
role of the Document, thus licensing distribution and
modification of the Modified Version to whoever possesses a
copy of it. In addition, you must do these things in the
Modified Version:

  1. Use in the Title Page (and on the covers, if any) a
    title distinct from that of the Document, and from those
    of previous versions (which should, if there were any, be
    listed in the History section of the Document). You may
    use the same title as a previous version if the original
    publisher of that version gives permission.

  2. List on the Title Page, as authors, one or more
    persons or entities responsible for authorship of the
    modifications in the Modified Version, together with at
    least five of the principal authors of the Document (all
    of its principal authors, if it has less than five).

  3. State on the Title page the name of the publisher of
    the Modified Version, as the publisher.

  4. Preserve all the copyright notices of the
    Document.

  5. Add an appropriate copyright notice for your
    modifications adjacent to the other copyright
    notices.

  6. Include, immediately after the copyright notices, a
    license notice giving the public permission to use the
    Modified Version under the terms of this License, in the
    form shown in the Addendum below.

  7. Preserve in that license notice the full lists of
    Invariant Sections and required Cover Texts given in the
    Document’s license notice.

  8. Include an unaltered copy of this License.

  9. Preserve the section entitled «History», and
    its title, and add to it an item stating at least the
    title, year, new authors, and publisher of the Modified
    Version as given on the Title Page. If there is no
    section entitled «History» in the Document,
    create one stating the title, year, authors, and
    publisher of the Document as given on its Title Page,
    then add an item describing the Modified Version as
    stated in the previous sentence.

  10. Preserve the network location, if any, given in the
    Document for public access to a Transparent copy of the
    Document, and likewise the network locations given in the
    Document for previous versions it was based on. These may
    be placed in the «History» section. You may
    omit a network location for a work that was published at
    least four years before the Document itself, or if the
    original publisher of the version it refers to gives
    permission.

  11. In any section entitled «Acknowledgements»
    or «Dedications», preserve the section’s
    title, and preserve in the section all the substance and
    tone of each of the contributor acknowledgements and/or
    dedications given therein.

  12. Preserve all the Invariant Sections of the Document,
    unaltered in their text and in their titles. Section
    numbers or the equivalent are not considered part of the
    section titles.

  13. Delete any section entitled «Endorsements».
    Such a section may not be included in the Modified
    Version.

  14. Do not retitle any existing section as
    «Endorsements» or to conflict in title with any
    Invariant Section.

If the Modified Version includes new front-matter sections
or appendices that qualify as Secondary Sections and contain
no material copied from the Document, you may at your option
designate some or all of these sections as invariant. To do
this, add their titles to the list of Invariant Sections in
the Modified Version’s license notice. These titles must
be distinct from any other section titles.

You may add a section entitled «Endorsements»,
provided it contains nothing but endorsements of your
Modified Version by various parties—for example, statements
of peer review or that the text has been approved by an
organization as the authoritative definition of a
standard.

You may add a passage of up to five words as a Front-Cover
Text, and a passage of up to 25 words as a Back-Cover Text,
to the end of the list of Cover Texts in the Modified
Version. Only one passage of Front-Cover Text and one of
Back-Cover Text may be added by (or through arrangements made
by) any one entity. If the Document already includes a cover
text for the same cover, previously added by you or by
arrangement made by the same entity you are acting on behalf
of, you may not add another; but you may replace the old one,
on explicit permission from the previous publisher that added
the old one.

The author(s) and publisher(s) of the Document do not by
this License give permission to use their names for publicity
for or to assert or imply endorsement of any Modified
Version.


5. COMBINING DOCUMENTS

You may combine the Document with other documents released
under this License, under the terms defined in section 4
above for modified versions, provided that you include in the
combination all of the Invariant Sections of all of the
original documents, unmodified, and list them all as
Invariant Sections of your combined work in its license
notice.

The combined work need only contain one copy of this
License, and multiple identical Invariant Sections may be
replaced with a single copy. If there are multiple Invariant
Sections with the same name but different contents, make the
title of each such section unique by adding at the end of it,
in parentheses, the name of the original author or publisher
of that section if known, or else a unique number. Make the
same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined
work.

In the combination, you must combine any sections entitled
«History» in the various original documents,
forming one section entitled «History»; likewise
combine any sections entitled «Acknowledgements»,
and any sections entitled «Dedications». You must
delete all sections entitled «Endorsements.»


6. COLLECTIONS OF
DOCUMENTS

You may make a collection consisting of the Document and
other documents released under this License, and replace the
individual copies of this License in the various documents
with a single copy that is included in the collection,
provided that you follow the rules of this License for
verbatim copying of each of the documents in all other
respects.

You may extract a single document from such a collection,
and distribute it individually under this License, provided
you insert a copy of this License into the extracted
document, and follow this License in all other respects
regarding verbatim copying of that document.


7. AGGREGATION WITH INDEPENDENT
WORKS

A compilation of the Document or its derivatives with
other separate and independent documents or works, in or on a
volume of a storage or distribution medium, does not as a
whole count as a Modified Version of the Document, provided
no compilation copyright is claimed for the compilation. Such
a compilation is called an «aggregate», and this
License does not apply to the other self-contained works thus
compiled with the Document, on account of their being thus
compiled, if they are not themselves derivative works of the
Document.

If the Cover Text requirement of section 3 is applicable
to these copies of the Document, then if the Document is less
than one quarter of the entire aggregate, the Document’s
Cover Texts may be placed on covers that surround only the
Document within the aggregate. Otherwise they must appear on
covers around the whole aggregate.


8. TRANSLATION

Translation is considered a kind of modification, so you
may distribute translations of the Document under the terms
of section 4. Replacing Invariant Sections with translations
requires special permission from their copyright holders, but
you may include translations of some or all Invariant
Sections in addition to the original versions of these
Invariant Sections. You may include a translation of this
License provided that you also include the original English
version of this License. In case of a disagreement between
the translation and the original English version of this
License, the original English version will prevail.


9. TERMINATION

You may not copy, modify, sublicense, or distribute the
Document except as expressly provided for under this License.
Any other attempt to copy, modify, sublicense or distribute
the Document is void, and will automatically terminate your
rights under this License. However, parties who have received
copies, or rights, from you under this License will not have
their licenses terminated so long as such parties remain in
full compliance.


10. FUTURE REVISIONS OF THIS
LICENSE

The Free Software Foundation may publish new, revised
versions of the GNU Free Documentation License from time to
time. Such new versions will be similar in spirit to the
present version, but may differ in detail to address new
problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing
version number. If the Document specifies that a particular
numbered version of this License «or any later
version» applies to it, you have the option of following
the terms and conditions either of that specified version or
of any later version that has been published (not as a draft)
by the Free Software Foundation. If the Document does not
specify a version number of this License, you may choose any
version ever published (not as a draft) by the Free Software
Foundation.


How to use this License for your
documents

To use this License in a document you have written,
include a copy of the License in the document and put the
following copyright and license notices just after the title
page:

Copyright (c) YEAR YOUR NAME. Permission is granted to
copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software
Foundation; with the Invariant Sections being LIST THEIR
TITLES, with the Front-Cover Texts being LIST, and with the
Back-Cover Texts being LIST. A copy of the license is
included in the section entitled «GNU Free
Documentation License».

If you have no Invariant Sections, write «with no
Invariant Sections» instead of saying which ones are
invariant. If you have no Front-Cover Texts, write «no
Front-Cover Texts» instead of «Front-Cover Texts
being LIST»; likewise for Back-Cover Texts.

If your document contains nontrivial examples of program
code, we recommend releasing these examples in parallel under
your choice of free software license, such as the GNU General
Public License, to permit their use in free software.


���������� E. GNU General Public License

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59
Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone
is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


0. Preamble

The licenses for most software are designed to take away
your freedom to share and change it. By contrast, the GNU
General Public License is intended to guarantee your freedom
to share and change free software—to make sure the software
is free for all its users. This General Public License
applies to most of the Free Software Foundation’s
software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is
covered by the GNU Library General Public License instead.)
You can apply it to your programs, too.

When we speak of free software, we are referring to
freedom, not price. Our General Public Licenses are designed
to make sure that you have the freedom to distribute copies
of free software (and charge for this service if you wish),
that you receive source code or can get it if you want it,
that you can change the software or use pieces of it in new
free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that
forbid anyone to deny you these rights or to ask you to
surrender the rights. These restrictions translate to certain
responsibilities for you if you distribute copies of the
software, or if you modify it.

For example, if you distribute copies of such a program,
whether gratis or for a fee, you must give the recipients all
the rights that you have. You must make sure that they, too,
receive or can get the source code. And you must show them
these terms so they know their rights.

We protect your rights with two steps: (1) copyright the
software, and (2) offer you this license which gives you
legal permission to copy, distribute and/or modify the
software.

Also, for each author’s protection and ours, we want
to make certain that everyone understands that there is no
warranty for this free software. If the software is modified
by someone else and passed on, we want its recipients to know
that what they have is not the original, so that any problems
introduced by others will not reflect on the original
authors’ reputations.

Finally, any free program is threatened constantly by
software patents. We wish to avoid the danger that
redistributors of a free program will individually obtain
patent licenses, in effect making the program proprietary. To
prevent this, we have made it clear that any patent must be
licensed for everyone’s free use or not licensed at
all.

The precise terms and conditions for copying, distribution
and modification follow.


1. TERMS AND CONDITIONS FOR
COPYING, DISTRIBUTION AND MODIFICATION

  1. This License applies to any program or other work
    which contains a notice placed by the copyright holder
    saying it may be distributed under the terms of this
    General Public License. The «Program», below,
    refers to any such program or work, and a «work
    based on the Program» means either the Program or
    any derivative work under copyright law: that is to say,
    a work containing the Program or a portion of it, either
    verbatim or with modifications and/or translated into
    another language. (Hereinafter, translation is included
    without limitation in the term «modification».)
    Each licensee is addressed as «you».

    Activities other than copying, distribution and
    modification are not covered by this License; they are
    outside its scope. The act of running the Program is not
    restricted, and the output from the Program is covered
    only if its contents constitute a work based on the
    Program (independent of having been made by running the
    Program). Whether that is true depends on what the
    Program does.

  2. You may copy and distribute verbatim copies of the
    Program’s source code as you receive it, in any
    medium, provided that you conspicuously and appropriately
    publish on each copy an appropriate copyright notice and
    disclaimer of warranty; keep intact all the notices that
    refer to this License and to the absence of any warranty;
    and give any other recipients of the Program a copy of
    this License along with the Program.

    You may charge a fee for the physical act of
    transferring a copy, and you may at your option offer
    warranty protection in exchange for a fee.

  3. You may modify your copy or copies of the Program or
    any portion of it, thus forming a work based on the
    Program, and copy and distribute such modifications or
    work under the terms of Section 1 above, provided that
    you also meet all of these conditions:

    1. You must cause the modified files to carry
      prominent notices stating that you changed the files
      and the date of any change.

    2. You must cause any work that you distribute or
      publish, that in whole or in part contains or is
      derived from the Program or any part thereof, to be
      licensed as a whole at no charge to all third parties
      under the terms of this License.

    3. If the modified program normally reads commands
      interactively when run, you must cause it, when
      started running for such interactive use in the most
      ordinary way, to print or display an announcement
      including an appropriate copyright notice and a
      notice that there is no warranty (or else, saying
      that you provide a warranty) and that users may
      redistribute the program under these conditions, and
      telling the user how to view a copy of this License.
      (Exception: if the Program itself is interactive but
      does not normally print such an announcement, your
      work based on the Program is not required to print an
      announcement.)

    These requirements apply to the modified work as a
    whole. If identifiable sections of that work are not
    derived from the Program, and can be reasonably
    considered independent and separate works in themselves,
    then this License, and its terms, do not apply to those
    sections when you distribute them as separate works. But
    when you distribute the same sections as part of a whole
    which is a work based on the Program, the distribution of
    the whole must be on the terms of this License, whose
    permissions for other licensees extend to the entire
    whole, and thus to each and every part regardless of who
    wrote it.

    Thus, it is not the intent of this section to claim
    rights or contest your rights to work written entirely by
    you; rather, the intent is to exercise the right to
    control the distribution of derivative or collective
    works based on the Program.

    In addition, mere aggregation of another work not
    based on the Program with the Program (or with a work
    based on the Program) on a volume of a storage or
    distribution medium does not bring the other work under
    the scope of this License.

  4. You may copy and distribute the Program (or a work
    based on it, under Section 2) in object code or
    executable form under the terms of Sections 1 and 2 above
    provided that you also do one of the following:

    1. Accompany it with the complete corresponding
      machine-readable source code, which must be
      distributed under the terms of Sections 1 and 2 above
      on a medium customarily used for software
      interchange; or,

    2. Accompany it with a written offer, valid for at
      least three years, to give any third party, for a
      charge no more than your cost of physically
      performing source distribution, a complete
      machine-readable copy of the corresponding source
      code, to be distributed under the terms of Sections 1
      and 2 above on a medium customarily used for software
      interchange; or,

    3. Accompany it with the information you received as
      to the offer to distribute corresponding source code.
      (This alternative is allowed only for noncommercial
      distribution and only if you received the program in
      object code or executable form with such an offer, in
      accord with Subsection b above.)

    The source code for a work means the preferred form of
    the work for making modifications to it. For an
    executable work, complete source code means all the
    source code for all modules it contains, plus any
    associated interface definition files, plus the scripts
    used to control compilation and installation of the
    executable. However, as a special exception, the source
    code distributed need not include anything that is
    normally distributed (in either source or binary form)
    with the major components (compiler, kernel, and so on)
    of the operating system on which the executable runs,
    unless that component itself accompanies the
    executable.

    If distribution of executable or object code is made
    by offering access to copy from a designated place, then
    offering equivalent access to copy the source code from
    the same place counts as distribution of the source code,
    even though third parties are not compelled to copy the
    source along with the object code.

  5. You may not copy, modify, sublicense, or distribute
    the Program except as expressly provided under this
    License. Any attempt otherwise to copy, modify,
    sublicense or distribute the Program is void, and will
    automatically terminate your rights under this License.
    However, parties who have received copies, or rights,
    from you under this License will not have their licenses
    terminated so long as such parties remain in full
    compliance.

  6. You are not required to accept this License, since you
    have not signed it. However, nothing else grants you
    permission to modify or distribute the Program or its
    derivative works. These actions are prohibited by law if
    you do not accept this License. Therefore, by modifying
    or distributing the Program (or any work based on the
    Program), you indicate your acceptance of this License to
    do so, and all its terms and conditions for copying,
    distributing or modifying the Program or works based on
    it.

  7. Each time you redistribute the Program (or any work
    based on the Program), the recipient automatically
    receives a license from the original licensor to copy,
    distribute or modify the Program subject to these terms
    and conditions. You may not impose any further
    restrictions on the recipients’ exercise of the
    rights granted herein. You are not responsible for
    enforcing compliance by third parties to this
    License.

  8. If, as a consequence of a court judgment or allegation
    of patent infringement or for any other reason (not
    limited to patent issues), conditions are imposed on you
    (whether by court order, agreement or otherwise) that
    contradict the conditions of this License, they do not
    excuse you from the conditions of this License. If you
    cannot distribute so as to satisfy simultaneously your
    obligations under this License and any other pertinent
    obligations, then as a consequence you may not distribute
    the Program at all. For example, if a patent license
    would not permit royalty-free redistribution of the
    Program by all those who receive copies directly or
    indirectly through you, then the only way you could
    satisfy both it and this License would be to refrain
    entirely from distribution of the Program.

    If any portion of this section is held invalid or
    unenforceable under any particular circumstance, the
    balance of the section is intended to apply and the
    section as a whole is intended to apply in other
    circumstances.

    It is not the purpose of this section to induce you to
    infringe any patents or other property right claims or to
    contest validity of any such claims; this section has the
    sole purpose of protecting the integrity of the free
    software distribution system, which is implemented by
    public license practices. Many people have made generous
    contributions to the wide range of software distributed
    through that system in reliance on consistent application
    of that system; it is up to the author/donor to decide if
    he or she is willing to distribute software through any
    other system and a licensee cannot impose that
    choice.

    This section is intended to make thoroughly clear what
    is believed to be a consequence of the rest of this
    License.

    If the distribution and/or use of the Program is
    restricted in certain countries either by patents or by
    copyrighted interfaces, the original copyright holder who
    places the Program under this License may add an explicit
    geographical distribution limitation excluding those
    countries, so that distribution is permitted only in or
    among countries not thus excluded. In such case, this
    License incorporates the limitation as if written in the
    body of this License.

  9. The Free Software Foundation may publish revised
    and/or new versions of the General Public License from
    time to time. Such new versions will be similar in spirit
    to the present version, but may differ in detail to
    address new problems or concerns.

    Each version is given a distinguishing version number.
    If the Program specifies a version number of this License
    which applies to it and «any later version»,
    you have the option of following the terms and conditions
    either of that version or of any later version published
    by the Free Software Foundation. If the Program does not
    specify a version number of this License, you may choose
    any version ever published by the Free Software
    Foundation.

  10. If you wish to incorporate parts of the Program into
    other free programs whose distribution conditions are
    different, write to the author to ask for permission. For
    software which is copyrighted by the Free Software
    Foundation, write to the Free Software Foundation; we
    sometimes make exceptions for this. Our decision will be
    guided by the two goals of preserving the free status of
    all derivatives of our free software and of promoting the
    sharing and reuse of software generally.

  11. NO WARRANTY

    BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE
    IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED
    BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN
    WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
    PROVIDE THE PROGRAM «AS IS» WITHOUT WARRANTY OF
    ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO
    THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
    SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST
    OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
    AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY
    OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
    PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
    INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
    CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY
    TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
    DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
    SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
    PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
    HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY
    OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS


2. How to Apply These Terms to Your New
Programs

If you develop a new program, and you want it to be of the
greatest possible use to the public, the best way to achieve
this is to make it free software which everyone can
redistribute and change under these terms.

To do so, attach the following notices to the program. It
is safest to attach them to the start of each source file to
most effectively convey the exclusion of warranty; and each
file should have at least the «copyright» line and
a pointer to where the full notice is found.

<one�line�to�give�the�program’s�name�and�a�brief�idea�of�what�it�does.>

Copyright�(C)�<year>��<name�of�author>
����

This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any
later version.

This program is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more
details.

You should have received a copy of the GNU General
Public License along with this program; if not, write to
the Free Software Foundation, Inc., 59 Temple Place, Suite
330, Boston, MA 02111-1307 USA

Also add information on how to contact you by electronic
and paper mail.

If the program is interactive, make it output a short
notice like this when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of
author Gnomovision comes with ABSOLUTELY NO WARRANTY; for
details type `show w’. This is free software, and you
are welcome to redistribute it under certain conditions;
type `show c’ for details.

The hypothetical commands `show w’ and `show c’
should show the appropriate parts of the General Public
License. Of course, the commands you use may be called
something other than `show w’ and `show c’; they
could even be mouse-clicks or menu items—whatever suits your
program.

You should also get your employer (if you work as a
programmer) or your school, if any, to sign a «copyright
disclaimer» for the program, if necessary. Here is a
sample; alter the names:

Yoyodyne,�Inc.,�hereby�disclaims�all�copyright�interest�in�the�program

`Gnomovision’�(which�makes�passes�at�compilers)�written�by�James�Hacker.

��

<signature�of�Ty�Coon>,�1�April�1989
Ty�Coon,�President�of�Vice
��

This General Public License does not permit incorporating
your program into proprietary programs. If your program is a
subroutine library, you may consider it more useful to permit
linking proprietary applications with the library. If this is
what you want to do, use the GNU Library General Public
License instead of this License.

Оригинал — http://nikitushkin.wordpress.com/2011/02/12/описание-параметров-ядра-sysctl-для-управл/

Часть данного поста является перепостингом с: http://www.opennet.ru/base/sys/sysctl_linux.txt.html
Часть является моими рекомендациями и моими дополнениями, которые являются результатом обобщения моих практических наработок в управлении сетевой подсистемой Linux.

net.ipv4.conf.default.forwarding=0

Данный параметр включает форвардинг (проброс) пакетов с одного интерфейса на другой. Для рабочих станций, не являющихся маршрутизаторами, рекомендуется отключить данную опцию (выставить в 0).

net.ipv4.conf.all.rp_filter = 1

Позволяет осуществлять фильтрацию пакетов по адресу назначения (проверка адреса получателя). Рекомендуется ключить данную проверку (1).

net.ipv4.conf.default.rp_filter=1

Осуществляет фильтрацию входящих пакетов, которые были отправлены одним интерфейсом, а приняты другим. Рекомендуется включить данную опцию (1).

net.ipv4.conf.all.accept_source_route = 0

Проверка маршрута от источника до получателя. Рекомендуется отключить данную опцию (0).

net.ipv4.tcp_syncookies=1

Разрешене или запрещение передачи syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета. Рекомендуется включить данную опцию (1).

net.ipv4.ip_default_ttl = 128

Устанавливает Time To Live – время жизни пакета в сети. При прохождении каждого маршрутизатора данное значение уменьшается на еденицу. Вполне достаточным является значение 64. Но для меня более привычным является значение 128.

net.ipv4.ip_local_port_range = 32768 61000

Данный параметр указывает диапазон используемых портов клиентскими приложениями, т. е. начало и конец диапазона. Диапазон ограничивается наличием памяти на хосте, чем больший объем памяти имеется у хоста, тем больший диапазон портов можно задать, но на современных системах с гигабайтами памяти это уже не имеет значения, т. к. ограничения начинаются при наличии менее 256 мегабайт памяти на хосте (уменьшаем диапазон используемых адресов при недостатке памяти).

net.ipv4.ip_no_pmtu_disc = 1

Отключение автоопределения значения MTU для данного сегмента сети. При проблемах с соединениями рекомендуется выставить данную опцию в 1.

net.ipv4.ip_nonlocal_bind = 0

Включение данной опции дает возможность хосту выступать от имени другого хоста в сети, что может быть полезно для снифинга, например.

net.ipv4.ipfrag_low_thresh = 196608

Переменная задает максимальный объем памяти, выделяемый под очередь фрагментированных пакетов. Когда длина очереди достигает этого порога, то обработчик фрагментов будет отвергать все фрагментированные пакеты до
тех пор, пока длина очереди не уменьшится до значения переменной ipfrag_low_thresh.

net.ipv4.ipfrag_time = 30

Эта переменная определяет максимальное время хранения фрагментов в секундах.

net.ipv4.inet_peer_gc_maxtime = 120

Переменная inet_peer_gc_maxtime определяет частоту сборки мусора при незначительном объеме данных.

net.ipv4.inet_peer_gc_mintime = 10

Переменная inet_peer_gc_maxtime определяет частоту сборки мусора при незначительном объеме данных. Эта переменная имеет то же предназначение, что и inet_peer_gc_mintime, только выбор, какой переменной пользоваться,
производится в зависимости от величины нагрузки на систему. Переменная принимает целое число, измеряемое в тиках. Значение по-умолчанию 120 тиков, чего вполне достаточно для большинства серверов и рабочих станций.

net.ipv4.inet_peer_maxttl = 600

Это максимальное время хранения записей. При незначительных нагрузках на систему неиспользуемые записи будут удаляться через данный промежуток времени.

net.ipv4.inet_peer_minttl = 120

Переменная определяет минимальное время хранения данных в inet peer storage. Это время должно быть достаточно большим, чтобы перекрыть время сборки фрагментов на противоположной стороне. Минимальное время хранения является гарантией того, что размер пула будет меньше чем величина inet_peer_threshold.

net.ipv4.inet_peer_threshold = 65664

Переменная определяет минимальное время хранения данных в inet peer storage. Это время должно быть достаточно большим, чтобы перекрыть время сборки фрагментов на противоположной стороне. Минимальное время хранения
является гарантией того, что размер пула будет меньше чем величина inet_peer_threshold.

net.ipv4.tcp_abort_on_overflow = 1

Эта переменная заставляет ядро отвергать новые соединения, если их поступает такое количество, что система не в состоянии справиться с таким потоком. Рекомендую выставить данную переменную в 1 для защиты от DDoS, как крайнюю меру.

net.ipv4.tcp_adv_win_scale = 2

Эта переменная влияет на вычисление объема памяти в буфере сокета, выделяемой под размер TCP-окна и под буфер приложения. Значение по-умолчанию 2, т.е. под буфер приложения отводится 1/4 часть объема, определяемого переменной tcp_rmem.

net.ipv4.tcp_app_win = 31

Эта переменная определяет количество байт, резервируемых под TCP-окно в приемном буфере сокета. Исключение составляет значение 0. В этом случае резервирование не производится. Значение по-умолчанию 31. Не изменяйте эту переменную, если вы не уверены в том, что делаете.

net.ipv4.tcp_dsack = 1

Эта опция необходима для выполнения передачи дублирующих SACK-пакетов (от англ. Selective ACKnowledgement Выборочное Подтверждение Приема, прим. перев.). Техника выборочного подтверждения кратко описана в
разделе, посвященном переменной tcp_sack. Детальное описание можно найти в RFC 2883.

net.ipv4.tcp_ecn = 1

Переменная tcp_ecn отвечает за работу Explicit Congestion Notification (Явное Уведомление о Перегруженности) в TCP-соединениях. Используется для уведомления о возникновении затора на маршруте к заданному хосту или
сети. Может использоваться для извещения хоста-отправителя о необходимости снизить скорость передачи пакетов через конкретный маршрутизатор или брандмауэр. Explicit Congestion Notification (ECN) детально описано в RFC 3168 – The Addition of Explicit Congestion Notification (ECN) to IP. Дополнительную информацию о ECN вы найдете в
RFC 2884 – Performance Evaluation of Explicit Congestion Notification (ECN) in IP Networks. Для полноценной работы данной опции необходимо включить модуль dccp протокола (modprobe dccp), а также установить максимальный размер окна: net.dccp.default.seq_window=10000.Выключено по-умолчанию (для максимальной совместимости). Для улучшения производительности сетевого стека рекомендую включить данную опцию (1).

net.ipv4.tcp_fack = 1

Переменная tcp_fack ответственна за систему Forward Acknowledgement (Упреждающее Подтверждение) в Linux. Forward Acknowledgement это специальный алгоритм, который работает поверх SACK, и предназначен для
контроля заторов. Главная идея алгоритма FACK состоит в отслеживании наибольшего номера выборочно подтвержденной последовательности как признака того, что все предыдущие не подтвержденные (выборочно) сегменты были потеряны. Это позволяет оптимизировать восстановление потерь. Однако, этот алгоритм становится неработоспособным в случае неупорядоченного потока данных, тогда он (алгоритм) автоматически отключается для данного конкретного соединения. Эта опция используется только тогда, когда включена переменная tcp_sack. Рекомендую включить данную опцию (1).

net.ipv4.tcp_fin_timeout = 30

Переменная задает максимальное время пребывания сокета в состоянии FIN-WAIT-2. Используется в тех случаях, когда другая сторона по тем или иным причинам не закрыла соединение со своей стороны. Каждый сокет занимает в памяти порядка 1.5 Кб, что может привести к значительным утечкам памяти в некоторых случаях. Переменная принимает целое число в секундах. Рекоммендую выставить данную переменную в 30, для высоконагруженных серверов данное значение можно сократить ещё больше.

net.ipv4.tcp_keepalive_intvl = 15

Переменная определяет интервал проверки жизнеспособность сокета. Это значение учитывается при подсчете времени, которое должно пройти перед тем как соединение будет разорвано. Переменная принимает целое число.
Значение по-умолчанию 75 секунд. Это достаточно высокое значение, чтобы рассматривать его как нормальное. Значения переменных tcp_keepalive_probes и tcp_keepalive_intvl могут использоваться для определения времени, через которое соединение будет разорвано. Со значениями по-умолчанию (9 попыток с интервалом 75 секунд) это займет примерно 11 минут. Попытки определения жизнеспособности, в свою очередь, начнутся через 2 часа после того, как через данное соединение проследовал последний пакет. Рекомендую данный парметр выставить в 15. Выставлять более низкие значения можно только в самых крайних случаях, например, при DoS и DDoS атаках.

net.ipv4.tcp_keepalive_probes = 3

Переменная определяет количество попыток проверки жизнеспособности прежде, чем будет принято решении о разрыве соединения. Значение по-умолчанию 9. Это означает, что будет выполнено 9 попыток проверки соединения, чтобы убедиться в том, что соединение разорвано. Рекомендую выставить данный параметр в 3.

net.ipv4.tcp_keepalive_time = 7200

Переменная определяет как часто следует проверять соединение, если оно давно не используется. Значение переменной имеет смысл только для тех сокетов, которые были созданы с флагом SO_KEEPALIVE. Переменная
принимает целое число секунд. Значение по-умолчанию 7200 секунд, или 2 часа. Не уменьшайте это число без необходимости, поскольку это может привести к увеличению излишнего трафика.

net.ipv4.tcp_max_orphans = 65536

Переменная задает максимальное число осиротевших (не связанных ни с одним процессом) сокетов. Если это число будет превышено, то такие соединения разрываются, а в системный журнал пишется предупреждение. Это ограничение существует исключительно ради предотвращения простейших разновидностей DoS-атак. Вообще вы не должны полагаться на эту переменную! Не рекомендуется уменьшать это число. Сетевая среда может потребовать увеличение этого порога, однако, такое увеличение может привести к необходимости увеличения объема ОЗУ в системе. Прежде чем поднимать этот предел попробуйте перенастроить сетевые сервисы на более агрессивное поведение по отношению к осиротевшим сокетам. Переменная принимает целое число. Значение по-умолчанию 8192, однако оно очень сильно зависит от объема памяти в системе. Каждый осиротевший сокет съедает примерно 64 Кб памяти, которая не может быть сброшена в своп (swap). При возникновении проблем, связанных с этим ограничением в системный журнал будет записано сообщение, подобное этому: TCP: too many of orphaned sockets Это может служить поводом к тому, чтобы пересмотреть значения переменных tcp_fin_timeout или tcp_orphans_retries.

net.ipv4.tcp_max_syn_backlog = 1024

Переменная определяет максимальное время хранения SYN-запросов в памяти до момента получения третьего, завершающего установление соединения, пакета. Эта опция работает только тогда, когда включена переменная
tcp_syncookies. Если сервер испытывает серьезные нагрузки, то можно попробовать немного увеличить этот параметр. Переменная принимает целое число. Значение по-умолчанию зависит от количества памяти, имеющейся в
системе. Если объем памяти менее 128 Мб, то значение по-умолчанию равно 128, если больше, то значение по-умолчанию равно 1024. Если вы увеличиваете эту переменную до величины более чем 1024, то было бы
неплохо изменить величину TCP_SYNQ_HSIZE и пересобрать ядро. TCP_SYNQ_HSIZE находится в файле linux/include/tcp.h. Эта величина рассчитывается по формуле: TCP_SYNQ_HSIZE*16 tcp_max_syn_backlog.

net.ipv4.tcp_max_tw_buckets = 18000

Максимальное число сокетов, находящихся в состоянии TIME-WAIT одновременно. При превышении этого порога лишний сокет разрушается и пишется сообщение в системный журнал. Цель этой переменной предотвращение простейших разновидностей DoS-атак. Переменная принимает целое число. Значение по-умолчанию 180000. На первый взгляд может показаться, что это очень много, но на самом деле это не так. Если у вас начинают возникать ошибки, связанные с этим параметром, то попробуйте увеличить его. Вам не следует уменьшать значение этой переменной. Вместо этого, если начали поступать сообщения в системный журнал, ее следует увеличить, однако, это может потребовать наращивания памяти в системе. Рекомендую установить данное значение в 18000 для рабочих станций, не являющихся серверами.

net.ipv4.tcp_mem = 196608 262144 393216

В этой переменной задаются 3 значения, определяющие объем памяти, который может быть использован стеком TCP. Значения измеряются в страницах памяти. Размер одной страницы зависит от аппаратуры и конфигурации ядра. Для архитектуры i386 размер одной страницы составляет 4Кб, или 4096 байт. Некоторые, более новые аппаратные реализации, имеют размер страницы равный 16, 32 или даже 64 Кб. Все три значения по-умолчанию рассчитываются во время загрузки. Первое число задает нижний порог. Ниже этого порога, стек TCP вообще никак не беспокоится об
управлении памятью, используемой различными TCP сокетами. Когда объем используемой памяти достигает второго предела (числа), то TCP начинает более энергично расталкивать память, стремясь освободить ее как можно быстрее. Этот процесс продолжается до тех пор, пока объем использумой памяти не достигнет нижнего предела. И последнее число максимальный объем памяти, который может использоваться для нужд TCP. Если используемый объем памяти достигнет этого порога, то TCP просто начинает терятьпакеты и соединения до тех пор, пока объем спользуемой памяти не уменьшится. Эта переменная может позволить несколько увеличить пропускную способность на толстых каналах, если должным образом настроить переменные tcp_mem, tcp_rmem и tcp_wmem. Впрочем, переменная tcp_rmem не требует особо пристального внимания, поскольку серия ядер 2.4 имеет достаточно хорошие настройки этой переменний, а вот на другие две следует взглянуть поближе. Дополнительную информацию об этом вы найдете в руководстве TCP Tuning Guide.

net.ipv4.tcp_orphan_retries = 0

Количество попыток закрыть соединение перед тем как оно будет разорвано принудительно. Если вы администрируете http-сервер, который испытывает большие нагрузки, то стоит подумать об уменьшении этого значения. Переменная принимает целое число. Значение по-умолчанию 7, что соответствует, примерно, от 50 секунд до 16 минут, в зависимости от величины Retransmission Timeout (RTO Таймаут для Повторной Передачи. прим. перев.). Детальное описание RTO вы найдете в разделе 3.7. Data Communication RFC 793 – Transmission Control Protocol. Кроме того, посмотрите описание переменной tcp_max_orphans.

net.ipv4.tcp_reordering = 3

Максимальное количество пакетов, пришедших в потоке не по-порядку, прежде чем будет сделано предположение о том, что пакет был потерян где-то на маршруте. Когда делается такое предположение, то стек TCP переходит обратно в режим slow start (медленный старт), поскольку пакет действительно мог быть утерян из-за перегруженности сети. Кроме того, стек TCP откажется от дальнейшего использования алгоритма FACK при обмене с этим хостом. Переменная принимает целое число. Значение по-умолчанию 3. Это достаточно хорошее значение и не следует его
изменять. Если этот параметр уменьшить, то это может значительно ухудшить работу сетевой подсистемы особенно, если пакеты часто переупорядочиваются.

net.ipv4.tcp_retrans_collapse = 1

Включает/выключает эмуляцию ошибки протокола TCP, делая возможным сетевое взаимодействие с некоторыми устройствами, в которых реализация стека TCP имеет эту ошибку. Без ее эмуляции было бы невозможным работать
с отдельными моделями принтеров. Ошибка заключается в отправке полноразмерных пакетов при повторной передаче. Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Эмуляция ошибки никак не повредит взаимодействию с другими узлами сети, но при этом позволит общаться с устройствами, имеющими ошибку в реализации стека TCP. Вообще эта опция совершенно безопасна, однако, если в журнал пишутся непонятные сообщения можете попробовать отключить ее.

net.ipv4.tcp_retries1 = 3

Максимальное количество попыток повторной передачи пакетов по установленному соединению прежде, чем сообщение об ошибке будет передано сетевому уровню, в результате чего может быть выбран другой маршрут для
отправки последующих пакетов. Минимальное значение этого параметра определяется в RFC и равно 3. Это число является значением по-умолчанию, что соответствует интервалу времени от 3 секунд до 8 минут, в зависимости от величины Retransmission timeout (RTO). Детальное описание RTO вы найдете в разделе 3.7. Data Communication RFC 793 – Transmission Control Protocol. Переменная принимает целое число. Значение по-умолчанию 3. Стандарты определяют диапазон изменения этого параметра от 3 до 100. Рекомендую не менять данное значение, тем более его уменьшать.

net.ipv4.tcp_retries2 = 5

Максимальное количество попыток повторной передачи пакетов, до того как соединение будет считаться разорванным. Это ограничение определено в RFC 1122 и равно 100, но обычно его уменьшают. Переменная принимает целое число. Значение по-умолчанию 15, что соответствует примерно 13-30 минутам в зависимости от величины Retransmission timeout (RTO). При желании можете попробовать уменьшить этот параметр. Рекомендую уменьшить значение данного параметра до 5.

net.ipv4.tcp_rfc1337 = 0

Переменная tcp_rfc1337 является реализацией решения проблемы, описываемой в RFC 1337 – TIME-WAIT Assassination Hazards in TCP. Проблема связана с устаревшими дубликатами пакетов, которые могут вносить помехи во вновь устанавливаемые соединения и порождать три различные проблемы. Первая устаревший дубликат пакета с данными может быть ошибочно воспринят в новом соединении, что приведет к передаче неверных данных. Вторая соединение может быть десинхронизировано и уйти в ACK-цикл из-за устаревших дубликатов, которые порождают новые соединения (здесь автор имеет ввиду устаревшие дубликаты SYN-пакетов, прим. перев.). И третья, и последняя проблема устаревшие дубликаты могут проникнуть в недавно созданное соединение и ошибочно уничтожить его. Согласно упомянутому RFC существуют три возможных решения, однако, одно из них решает эту проблему лишь частично, второе требует внесения значительных изменений в протокол TCP. Окончательное решение состоит в том, что RST-пакеты должны просто игнорироваться, пока сокет находится в состоянии TIME_WAIT. Вместе с установкой параметра Maximum Segment Life (MSL максимальное время жизни сегмента) равным 2 мин. такой подход решает все три проблемы, описанные в RFC 1337.

net.ipv4.tcp_rmem = 4096 87380 4194304

Переменная содержит три числа, которые используются при управлении размерами приемных буферов. Первое число минимальный размер приемного буфера, который выделяется для каждого сокета. Этот размер буфера
выделяется всегда, даже при очень высоких нагрузках на систему. Значение по-умолчанию 4096 байт, или 4 Кб. В предыдущих версиях ядра Linux это значение было 8192 байт. Это достаточно большой размер и не следует
увеличивать его, иначе, при взрывных нагрузках на сеть, вы можете столкнуть с очень серьезными проблемами. Второе число размер приемного буфера по-умолчанию, который выделяется для каждого сокета. Это значение
перекрывает значение переменной /proc/sys/net/core/rmem_default, которая используется другими протоколами. Значение по-умолчанию 87380 байт, или 85 Кб. Совместно с переменными tcp_adv_win_scale и tcp_app_win эта
переменная используется при расчете размера TCP-окна. Это значение используется при незначительных нагрузках. Как и в случае с первым значением не следует без особой нужды изменять этот параметр. Эта переменная может дать некоторый прирост производительности на толстых каналах, если достаточно корректно используется вместе с переменными tcp_mem и tcp_wmem. tcp_rmem не требует вмешательства извне, поскольку ядра серии 2.4 достаточно хорошо настраивают ее автоматически, а вот на tcp_mem и tcp_wmem можно взглянуть попристальнее. Дополнительную информацию, по настройке переменных, вы найдете в TCP Tuning Guide. Третье, и последнее, число максимально возможный размер приемного буфера, который может быть размещен для каждого сокета. Этот параметр перекрывается переменной /proc/sys/net/core/rmem_max, если значение в ipv4 оказывается больше. Перед изменением этого параметра вам следует сначала взглянуть на значение /proc/sys/net/core/rmem_max. Значение
по-умолчанию удвоенное значение второго параметра, т.е. 87380 * 2 bytes, или 174760 байт (170 Кб). Как правило этот параметр не нуждается в корректировке.

net.ipv4.tcp_sack = 1

Разрешает Selective Acknowledgements (SACK Выборочное Подтверждение), детальное описание вы найдете в RFC 2883 – An Extension to Selective Acknowledgement (SACK) Option for TCP и RFC 2883 – An Extension to Selective Acknowledgement (SACK) Option for TCP. Если эта переменная включена (установлена 1), то в TCP-заголовке будет устанавливаться SACK-флаг при передаче SYN-пакета, сообщая тем самым удаленному хосту, что наша система в состоянии обрабатывать SACK, на что удаленный хост может ответить ACK-пакетом с установленным флагом SACK. Этот режим выборочно подтверждает каждый сегмент в TCP-окне. Это особенно полезно на неустойчивых соединениях, поскольку позволяет производить повторную передачу лишь отдельных, не подтвержденных фрагментов, а не всего TCP-окна, как это диктуется более старыми стандартами. Если какой либо сегмент TCP-окна был утерян, то приемная сторона не пришлет на него SACK-подтверждение о приеме. Отправитель, поняв это, повторит передачу потерявшихся сегментов. Избыточные данные сохраняются в TCP-заголовке, 40 байт на сегмент. Подтверждение каждого сегмента это два 32-битных беззнаковых целых числа, таким образом в заголовке может разместиться подтверждение 4-х сегментов. Однако, как правило, совместно с опцией SACK используется опция timestamp, которая занимает 10 байт и поэтому в одном пакете может быть подтверждено не более 3 сегментов. Рекомендуется включать эту опцию, если вы имеете неустойчивые соединения. Однако, если вы соединены 1.5-метровым кабелем с другой машиной, то в таком случае, для достижения наивысшей скорости обмена, следует эту опцию отключить. Обычно эта опция не нужна, но лучше ее включить. Она обеспечивает 100% обратную совместимость, т.е. вы не должны испытывать никаких проблем при соединении с хостами, которые эту опцию не поддерживают. В переменную могут быть записаны два числа 0 (выключено) и 1 (включено). Значение
по-умолчанию 1 (включено).

net.ipv4.tcp_syn_retries = 2

Количество попыток передачи SYN-пакета при установлении нового соединения. Переменная принимает целое число, которое не должно устанавливаться больше чем 255, поскольку каждая повторная попытка отнимает значительное время. На каждую попытку отводится примерно 30-40 секунд. Значение по-умолчанию 5, что соответствует, примерно, 180 секундам. Рекомендую снизить данное значение до 2-х, т. к. качество линий связи в настоящий момент достаточно неплохое и число потерянных пакетов очень мизерно.

net.ipv4.tcp_synack_retries = 2

Количество попыток передачи SYN,ACK-пакета в ответ на SYN-запрос. Другими словами максимальное число попыток установить пассивное TCP-соединение, инициированное другим хостом. Переменная принимает целое
число, которое не должно устанавливаться больше чем 255 по тем же причинам, что и в случае с переменной tcp_syn_retries. Значение по-умолчанию 5. Безопасно снизить значение до 2.

net.ipv4.tcp_timestamps = 1

Разрешает/запрещает использование временных меток (timestamps), в соответствии с RFC 1323. Если коротко, то это расширение TCP используется для расчета Round Trip Measurement (определение времени возврата) лучшим способом, нежели метод Retransmission timeout (RTO). Эта опция должна сохранять обратную совместимость в большинстве случаев, так что лучше оставить ее включенной, особенно если вы работаете в высокоскоростной сети (например LAN или 10mb Интернет). В случае низкоскоростного оединения (скажем модемное) вы прекрасно обойдетесь и без этой опции, и будет даже лучше, если вы ее отключите. Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Более подробную информацию вы найдете в секции 4 документа RFC 1323 – TCP Extensions for High Performance.

net.ipv4.tcp_tw_recycle = 0

Разрешает/запрещает быструю утилизацию сокетов, находящихся в состоянии TIME-WAIT. Если вы не уверены в своих действиях, то вам лучше не трогать эту переменную. Переменная принимает целое число (а не булевское из
моего опыта и моего понимания исходных текстов ядра следует, что описание переменной в linux/Documentation/ip-sysctl.txt содержит ошибку, если я не ошибаюсь). Значение по-умолчанию 0. Не изменяйте эту переменную, если вы не уверены в своих действиях или не получили совет от опытных экспертов по ядру.

net.ipv4.tcp_window_scaling = 1

Разрешает/запрещает масштабирование TCP-окна, как определено в RFC 1323. В этом документе описано как производится масштабирование TCP-окна при передаче по Large Fat Pipes (LFP толстый канал). При передаче
TCP-пакетов по толстым каналам возникают существенные потери пропускной способности из-за того, что они не загружены полностью во время ожидания подтверждения о приеме предыдущего TCP-окна. Основная проблема состоит в том, что окно не может иметь размер больше, чем 216 байт (65 Кб). Разрешая масштабирование TCP-окна мы, тем самым, можем увеличить его размер и таким образом уменьшить потери пропускной способности.
Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Дополнительную информацию по этой теме вы найдете в RFC 1323 – TCP Extensions for High Performance.

net.ipv4.tcp_wmem = 4096 16384 4194304

Переменная содержит три числа, которые используются при управлении размерами буферов передачи, выделяемых для каждого сокета. Каждое из значений используется при определенных условиях. Первое значение минимальный размер буфера передачи для каждого сокета. Системой гарантируется выделение этого пространства при открытии сокета. Обычно это значение равно 4096 байт. Второе значение размер передающего буфера по-умолчанию. При попытке увеличить размер буфера передачи больше этого ограничения, приложение может столкнуться с нежеланием системы выделения большего объема памяти при тяжелых нагрузках. Это может даже привести к потере пакетов при очень высоких нагрузках. Значение по-умолчанию 16384 байт, или 16 Кб. Будет неразумным попытаться увеличить это значение. Этот параметр перекрывается переменной /proc/sys/net/core/wmem_default,
которая используется другими протоколами и, как правило, tcp_wmem должна быть меньше чем /proc/sys/net/core/wmem_default. Третье значение максимальный размер буфера передачи для отдельного сокета. По-умолчанию
131072 байт, или 128 Кб. Это достаточно разумное значение и в большинстве случаев вам едва ли придется корректировать его. Однако, если вам придется его увеличивать помните о существовании переменной
/proc/sys/net/core/wmem_max, которая должна быть всегда больше чем tcp_wmem. Эта переменная может дать некоторый прирост производительности на толстых каналах, если достаточно корректно используется вместе с
переменными tcp_mem и tcp_rmem. tcp_wmem дает наибольший прирост производительности из этих трех переменных. Замечу при этом, что вы практически не получите никакого выигрыша в сетях со скоростью передачи
менее 1 Гб. Дополнительную информацию, по настройке переменных, вы найдете в TCP Tuning Guide.

net.ipv4.icmp_echo_ignore_broadcasts = 1

Эта переменная очень близка по смыслу к icmp_echo_ignore_all, только в данном случае будут игнорироваться ICMP сообщения, отправленные на широковещательный или групповой адрес. Вполне очевидно, почему полезно
включить этот параметр защита от smurf атак. Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено).

net.ipv4.icmp_ignore_bogus_error_responses = 1

Отдельные маршрутизаторы, вопреки стандартам, описанным в RFC 1122, отправляют фиктивные ответы в широковещательном диапазоне. Обычно эти ошибки заносятся в системный журнал. Если вы не желаете регистрировать их, то включите этот параметр и тем самым сбережете некоторый объем дискового пространства в своей системе. Переменная может принимать два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0
(выключено).

net.ipv4.icmp_ratelimit = 250

Максимальная частота генерации ICMP-пакетов с типом, указанным в icmp_ratemask (см. icmp_ratemask). Это значение задается в тиках и устанавливает временной интервал между ICMP-посылками. Таким образом,
значение 0 означает отсутствие ограничений. Обычно 1 тик равен 0.01 секунды, так значение 1 в этой переменной ограничивает скорость передачи не более 100 посылок в секунду, а значение 100 не более 1 посылки в секунду. Значение по-умолчанию 100, что означает не более 1 ICMP посылки за интервал в 100 тиков.

net.ipv4.icmp_ratemask = 6168

Маска ICMP типов, на которые накладывается ограничение по частоте генерации переменной icmp_ratelimit. Каждый из ICMP типов маскируется своим битом. icmp_ratemask это битовая маска, где каждый ICMP тип представлен своим битом. Соответствие между символическим названием ICMP типа и его порядковым номером вы найдете в заголовочном файле netinet/ip_icmp.h (обычно это /usr/include/netinet/ip_icmp.h). За дополнительной информацией обращайтесь к RFC 792 – Internet Control Message Protocol. Математически маска определяется так: где n принимает
значения всех типов ICMP, которые должны быть ограничены. Например: Ограничим передачу ICMP Destination Unreachable сообщений. В /usr/include/netinet/ip_icmp.h этому типу соответствует число 3. Подсчитаем значение 23, что равно 8. Теперь нужно прибавить это число к имеющейся битовой маске. Допустим, что маска уже равна числу 6160 (в двоичном виде 0001100000010000), тогда результирующая маска получится: 6160 + 8 = 6168 (в двоичном виде 0001100000011000). Перед добавлением маски подобным образом убедитесь сначала, что нужный вам бит сброшен,
иначе вы получите неверную маску! К примеру, если у вас маска является числом 256 и вы еще добавите число 256, то это приведет к размаскированию ICMP Echo Request и маскировке 9-го отсутствующего типа ICMP. Значение по-умолчанию 6168 (в двоичном виде 0001100000011000), что подразумевает наложение ограничений на ICMP Destination Unreachable, ICMP Source Quench, ICMP Time Exceeded и ICMP Parameter Problem, где ICMP Destination Unreachable = 3, ICMP Source Quench = 4, ICMP Time Exceeded = 11 и ICMP Parameter Problem = 12. Таким образом, значение по-умолчанию соответствует выражению: Злоумышленник может заставить некоторый маршрутизатор или хост затопить жертву ICMP-посылками, передаваемыми в ответ на поддельный ICMP пакет с обратным адресом
жертвы. Поэтому очень важно ограничить частоту генерации отдельных видов ICMP-сообщений. На сайте http://www.frozentux.net вы сможете найти небольшую программу ratemask, которая может оказаться полезной при
создании маски для переменной icmp_ratemasks или для дешифрации существующей маски.

net.ipv4.igmp_max_memberships = 20

Максимальное число групп на каждый сокет. Значение по-умолчанию 20 и может быть изменено по мере необходимости.

net.ipv4.conf.all.accept_redirects = 0

Переменная управляет приемом ICMP-сообщений о переадресации. Сообщения ICMP Redirect используются для уведомления маршрутизаторов или хостов о существовании лучшего маршрута движения пакетов к заданному хосту,
который (маршрут) может быть быстрее или менее загружен. Переменная может иметь два значения 0 (выключено сообщения о переадресации игнорируются) и 1 (включено сообщения о переадресации принимаются). Значение по-умолчанию 1 (включено), однако я посоветовал бы отключать эту опцию, поскольку она далеко небезопасна. В подавляющем большинстве случаев необходимость в переадресации отсутствует, поэтому лучше держать эту переменную выключенной, если конечно вы на 100% не уверены в обратном.

net.ipv4.conf.all.accept_source_route = 0

Переменная разрешает/запрещает маршрутизацию от источника. Маршрутизация от источника весьма небезопасна. Дополнительную информацию по этой темы вы сможете почерпнуть из ip-param.txt. Переменная может иметь два
значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено).

net.ipv4.conf.all.arp_filter = 1

Включает/выключает связывание IP-адреса с ARP-адресом. Если эта опция включена, то ответ будет передаваться через тот интерфейс, через который поступил запрос. В принципе, было бы не плохо, если бы ответы исходили
через тот же интерфейс, через который был получен запрос, однако, в отдельных случаях, это может стать причиной ошибок. Обычно включение этой опции необходимо только в том случае, если на вашем хосте производится управление распределением нагрузки между сетевыми интерфейсами. Значение по-умолчанию 0 (выключено), поскольку эта опция идет немного вразрез с современным пониманием принципов IP-адресации. Ранее IP-адреса рассматривались как путь к некоторому устройству, в смысле аппаратуры, теперь же их следует рассматривать как отдельную службу доставки, которая должна выдавать ответы на запросы вне зависимости от того на какой интерфейс эти запросы были получены. Дополнительную информацию по данной тематике вы найдете в Guide to IP
Layer Network Administration with Linux. Я бы включил данную переменуую (1), для защиты от некоторых типов arp атак.

net.ipv4.conf.all.bootp_relay = 0

Переменная разрешает/запрещает форвардинг пакетов с исходящими адресами 0.b.c.d. Демон BOOTP relay должен перенаправлять эти пакеты на корректный адрес. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Обработка переменной bootp_relay еще не реализована. Если вы желаете предложить свою реализацию милости просим! С этой целью можете вступить в контакт с командой разработчиков netdev mailinglist.

net.ipv4.conf.all.log_martians = 1

Переменная включает/выключает функцию журналирования всех пакетов, которые содержат неправильные (невозможные) адреса (так называемые martians марсианские пакеты). Под невозможными адресами, в данном
случае, следует понимать такие адреса, которые отсутствуют в таблице маршрутизации. В некоторых ситуациях эта опция позволит получить дополнительную информацию, но вы должны понимать, что эта информация не так подробна как можно было бы подумать. Основными причинами, порождающими записи в системном журнале, могут быть: невозможность переадресации; плохая классификация; ограничения на широковещательные сообщения, или несоответствия в Forwarding Information Base (FIB). Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Лучше включить данную переменную (1) для журналирования таких событий.

net.ipv4.conf.all.mc_forwarding = 0

Включает/выключает поддержку маршрутизации групповых рассылок для заданного интерфейса. Кроме того, чтобы иметь поддержку маршрутизации групповых рассылок, необходимо собрать ядро с включенной опцией CONFIG_MROUTE. Дополнительно в системе должен иметься демон, осуществляющий групповую маршрутизацию. Его вы можете получить с FTP-сайта AT&T Research.. Этот демон реализует протокол DVMRP (от англ. Distance Vector Multicast Routing Protocol протокол маршрутизации групповых рассылок типа вектор-расстояние). Еще один демон маршрутизации групповых рассылок доступен на сайте PIMd. Это реализация разреженного протокола PIM (от англ. Protocol Independent Multicast протокол маршрутизации групповых рассылок, независимый от используемого протокола маршрутизации), или PIM-SM. Там же вы найдете ссылки на другие реализации протоколов PIM-DM (Protocol Independent Multicast-Dense Mode протокол маршрутизации групповых рассылок, независимый от используемого протокола маршрутизации, уплотненного режима) и PIM-SM (Protocol Independant Multicast-Sparse Mode протокол маршрутизации групповых рассылок, независимый от используемого протокола маршрутизации,
разреженного режима). Дополнительную информацию по групповой адресации вы найдете в Multicast HOWTO. Групповая адресация используется в тех случаях, когда необходимо выполнить доставку информации сразу к
нескольким пунктам назначения. Например, WEB-страничка передается отдельно каждому, кто ее запросил, а если несколько человек решили принять участие в видеоконференции? Есть два пути реализации доставки. Либо каждому участнику отдавать отдельный поток данных (тогда трафик будет таким огромным, что для него может просто не хватить пропускной способности канала), либо использовать групповую рассылку. В этом случае отправитель создает одну дейтаграмму с групповым адресом назначения, по мере продвижения через сеть дейтаграмма будет дублироваться только на развилках маршрутов от отправителя к получателям. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Обратите внимание нет никакой необходимости включать эту опцию, если вы желаете лишь получать групповые пакеты. Она необходима только если вы собираетесь перенаправлять групповой трафик через вашу систему.

net.ipv4.conf.all.proxy_arp = 0

Включает/выключает проксирование arp-запросов для заданного интерфейса. ARP-прокси позволяет маршрутизатору отвечать на ARP запросы в одну сеть, в то время как запрашиваемый хост находится в другой сети. С помощью
этого средства происходит обман отправителя, который отправил ARP запрос, после чего он думает, что маршрутизатор является хостом назначения, тогда как в действительности хост назначения находится на другой стороне маршрутизатора. Маршрутизатор выступает в роли уполномоченного агента хоста назначения, перекладывая пакеты от другого хоста. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Дополнительную информацию вы найдете в Proxy-ARP mini HOWTO.

net.ipv4.conf.all.rp_filter = 1

Включает/выключает reverse path filter (проверка обратного адреса хотя это слишком вольный перевод термина, но мне он кажется наиболее близким по смыслу. прим. перев.) для заданного интерфейса. Смысл этой переменной
достаточно прост все что поступает к нам проходит проверку на соответствие исходящего адреса с нашей таблицей маршрутизации и такая проверка считается успешной, если принятый пакет предполагает передачу ответа через тот же самый интерфейс. Если вы используете расширенную маршрутизацию тем или иным образом, то вам следует всерьез задуматься о выключении этой переменной, поскольку она может послужить причиной потери пакетов. Например, в случае, когда входящий трафик идет через один маршрутизатор, а исходящий через другой. Так, WEB-сервер, подключенный через один сетевой интерфейс к входному роутеру, а через другой к выходному (в случае, когда включен rp_filter), будет просто терять входящий трафик, поскольку обратный маршрут, в таблице
маршрутизации, задан через другой интерфейс. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Однако в некоторых дистрибутивах по-умолчанию эта
переменная включается в стартовых скриптах на этапе загрузки. Поэтому, если у вас эта переменная включена, а вам надо ее выключить просмотрите стартовые скрипты в каталоге rc.d. Более детальную информацию об этой
переменной вы найдете в RFC 1812 – Requirements for IP Version 4 Routers на страницах 46-49 (секция 4.2.2.11), странице 55 (секция 4.3.2.7) и странице 90 (секция 5.3.3.3). Если вы всерьез занимаетесь проблемами маршрутизации, то вам определенно придется изучить этот документ.

net.ipv4.conf.all.secure_redirects = 0

Включает/выключает режим безопасной переадресации. Если переменная выключена, то будут приниматься любые сообщения ICMP Redirect от любого хоста из любого места. Если переменная включена, то сообщения о переадресации будут восприниматься только от тех шлюзов (gateways), которые имеются в списке шлюзов по-умолчанию. С помощью этой опции можно избежать большинства ложных переадресаций, которые могут быть
использованы для перехвата трафика. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Обратите внимание действие этой переменной отменяется переменной
shared_media, так что, если вы включаете secure_redirects, то необходимо включить и shared_media. Лучше отключить данную опцию.

net.ipv4.conf.all.send_redirects = 0

Включает/выключает выдачу ICMP Redirect другим хостам. Эта опция обязательно должна быть включена, если хост выступает в роли маршрутизатора любого рода. Как правило ICMP-сообщения о переадресации отправляются в том случае, когда необходимо сообщить хосту о том, что он должен вступить в контакт с другим сервером. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 1 (включено). Если компьютер не выступает в роли маршрутизатора, то эту переменную можно отключить.

net.ipv4.conf.all.shared_media = 0

Включает/выключает признак того, что физическая сеть является носителем нескольких логических подсетей, например, когда на одном физическом кабеле организовано несколько подсетей с различными сетевыми масками.
Этот признак используется ядром при принятии решения о необходимости выдачи ICMP-сообщений о переадресации. Переменная может иметь два значения 0 (выключено) и 1 (включено). Значение по-умолчанию 0 (выключено). Эта переменная перекрывает действие переменной secure_redirects.

net.ipv4.route.error_burst = 1250

Переменная используется в паре с error_cost для ограничения количества генерируемых сообщений ICMP Unreachable. Эта переменная несет в себе смысл верхнего предела стоимости передачи сообщений, в то
время как error_cost обозначает цену одного сообщения. Когда error_burst опустошается, то передача сообщений ICMP Unreachable прекращается. Сообщения ICMP Unreachable обычно отсылаются тогда, когда невозможно определить дальнейший маршрут движения пакета. Этому могут быть три причины: 1. Невозможно выполнить передачу хосту. 2. Не известен маршрут к заданному сегменту сети или хосту. 3.Если данный маршрут запрещен набором правил маршрутизации. В этих трех случаях сетевая подсистема генерирует сообщение ICMP Unreachable, свое для каждого случая: 1. ICMP Host Unreachable когда хост, находящийся в той же сети, что и наш роутер недоступен (т.е. не отвечает на ARP-запросы. прим. перев.). 2. ICMP Network Unreachable
когда в таблице маршрутизации роутера нет ни одного маршрута, по которому пакет мог бы быть отправлен дальше. 3. ICMP Communication Administratively Prohibited By Filtering когда пакет не может быть переправлен из-за наличия правил маршрутизации явно запрещающих передачу. Значение по-умолчанию 500. Учитывая значение по-умолчанию
переменной error_cost (100) это соответствует 5-ти сообщениям ICMP Destination Unreachables в секунду.

net.ipv4.route.error_cost = 250

Более подробное описание см. выше error_burst. Основной смысл этой переменной цена одного сообщения ICMP Destination Unreachable. Значение по-умолчанию 100, что подразумевает передачу не более 5-ти сообщений ICMP Destination Unreachable за 1 секунду (если расчет производить с учетом значения по-умолчанию переменной error_burst).

net.ipv4.ipfrag_high_thresh = 262144

Переменная задает максимальный объем памяти, выделяемый под очередь фрагментированных пакетов. Когда длина очереди достигает этого порога, то обработчик фрагментов будет отвергать все фрагментированные пакеты до
тех пор, пока длина очереди не уменьшится до значения переменной ipfrag_low_thresh. Это означает, что все отвергнутые фрагментированные пакеты должны быть повторно переданы узлом-отправителем. Пакеты
фрагментируются в том случае, если их размер слишком велик, чтобы быть переданными по данному каналу. Узел-отправитель, в этом случае, режет пакеты на более мелкие части и затем передает их одну за другой. На
узле-получателе эти фрагменты опять собираются в полноценный пакет. Примечательно, что идея фрагментации пакетов, сама по себе, вещь замечательная, но, к сожалению, может быть использована в весьма неблаговидных целях. Переменная содержит целое число в диапазоне 0 .. 2147483647 и означает верхний порог длины очереди фрагментов в байтах. Значение по-умолчанию 262144 байт, или 256 Кб. Этого количества, как правило, вполне достаточно даже для самых крайних случаев.

net.ipv4.conf.all.arp_announce = 2

Определяет каким образом будет аносироваться (объявляться) привязка IP адресов к ARP адресу на интерфейсе (при использовании нескольких IP адресов на одном интерфейсе). Может принимать целые значения: 0 – будет использоваться любой доступный интерфейс и любой доступный адрес, 1 – исключение локальных адресов из ARP анонса, которые не принадлежат подсети получателя , 2 – если не найден IP адрес подсети получателя, то выбирается первый попавшийся адрес и интерфейс, с которого возможна посылка ARP запроса в заданную подсеть. Рекомендую использовать значение 2.

net.ipv4.conf.all.arp_ignore = 2

Целочисленная переменная arp_ignore определяет режим передачи откликов на полученные запросы ARP, относящиеся к локальным IP-адресам: 0 (по умолчанию) – отклики выдаются для любого локального адреса IP, связанного с любым интерфейсом; 1 – отклики выдаются только в тех случаях, когда интересующий адрес IP связан с принявшим запрос интерфейсом; 2 – отклики выдаются только в тех случаях, когда интересующий адрес IP связан с принявшим запрос интерфейсом и этот адрес находится в той же подсети, из которой поступил запрос; 3 – отклики выдаются только на запросы для глобальных и канальных адресов; 4-7 – зарезервированы; 8 – отклики не выдаются ни для каких локальных интерфейсов. Используется большее из 2 значений в файлах /proc/sys/net/ipv4/conf/{all,interface}/arp_ignore. Рекомендую использовать значение 2 для данного параметра.

net.ipv4.neigh.default.mcast_solicit=3

Определяет максимальное количество попыток посылки multicast запросов для определения разрешения сетевого адреса.

net.ipv4.conf.all.app_solicit=2

Определяет максимальное количество попыток посылки ARP запросов прежде, чем будут применены мультикаст попытки разрешения сетевого адреса (см. mcast_solicit).

net.ipv4.ipfrag_secret_interval = 21423

Секретный интервал фрагментации пакетов. Целочисленное значение от 1 до 65535. Рекомендую приложить к данному параметру функцию random и скриптом вставить в cron с некоторым интервалом. ;-)

net.ipv4.netfilter.ip_conntrack_checksum = 1

Проверка контрольных сумм приинимаемых пакетов, модуль ip_conntrack должен быть предварительно загружен. Рекомендуемое значение 1.

net.ipv6.conf.all.disable_ipv6 = 1

Запрещаем использование стека IPv6.

net.ipv4.netfilter.nf_conntrack_acct = 1

Отбрасываем (игнорируем) все странные пакеты.

net.ipv4.route.flush = 1

Очистка кеша маршрутов.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies

You can file an issue about it and ask that it be added.


Table of Contents

  • Network stack

    • IPv6 redirects
    • IPv6 router advertisements
    • IPv6 support automatic loading
    • Source-routed packets
    • Ignore bogus ICMP error responses
    • Accepting ICMP redirects
    • Use reverse path filtering
    • Accepting secure redirects
    • TCP Syncookies
    • Log Martian packets
    • ICMP broadcast echo requests
    • IP forwarding
    • Sending ICMP redirects
    • Keep sockets in FIN-WAIT-2 state
    • Keepalive packets to keep an connection alive

Network stack

IPv6 redirects

Rationale

An illicit ICMP redirect message could result in a man-in-the-middle attack.

Solution

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv6.conf.all.accept_redirects = 0

C2S/CIS: CCE-80183-7 (Medium)

By default
# Add to /etc/sysctl.d/network-stack.conf
net.ipv6.conf.default.accept_redirects = 0

C2S/CIS: CCE-80181-1 (Unknown)

Useful resources

IPv6 router advertisements

Rationale

An illicit router advertisement message could result in a man-in-the-middle attack.

Solution

By default
# Add to /etc/sysctl.d/network-stack.conf
net.ipv6.conf.default.accept_ra = 0

C2S/CIS: CCE-80181-1 (Unknown)

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv6.conf.all.accept_ra = 0

C2S/CIS: CCE-80180-3 (Unknown)

Useful resources

IPv6 support automatic loading

Rationale

Any unnecessary network stacks — including IPv6 — should be disabled, to reduce the vulnerability to exploitation.

Solution

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv6.conf.all.disable_ipv6 = 1

C2S/CIS: CCE-80175-3 (Medium)

Useful resources

Source-routed packets

Rationale

Source-routed packets allow the source of the packet to suggest routers forward the packet along a different path than configured on the router, which can be used to bypass network security measures.

Solution

By default
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.default.accept_source_route = 0

C2S/CIS: CCE-80162-1 (Medium)

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.all.accept_source_route = 0

C2S/CIS: CCE-27434-0 (Medium)

Useful resources

Ignore bogus ICMP error responses

Rationale

Ignoring bogus ICMP error responses reduces log size, although some activity would not be logged.

Solution

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.icmp_ignore_bogus_error_responses = 1

C2S/CIS: CCE-80166-2 (Unknown)

Useful resources

Accepting ICMP redirects

Rationale

ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages modify the host’s route table and are unauthenticated.

Solution

By default
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.default.accept_redirects = 0

C2S/CIS: CCE-80158-9 (Medium)

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.all.accept_redirects = 0

C2S/CIS: CCE-80163-9 (Medium)

Useful resources

Use reverse path filtering

Rationale

Enabling reverse path filtering drops packets with source addresses that should not have been able to be received on the interface they were received on.

Solution

By default
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.default.rp_filter = 1

C2S/CIS: CCE-80168-8 (Medium)

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.all.rp_filter = 1

C2S/CIS: CCE-80167-0 (Medium)

Useful resources

Accepting secure redirects

Rationale

Accepting «secure» ICMP redirects (from those gateways listed as default gateways) has few legitimate uses. It should be disabled unless it is absolutely required.

Solution

By default
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.default.secure_redirects = 0

C2S/CIS: CCE-80164-7 (Medium)

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.all.secure_redirects = 0

C2S/CIS: CCE-80159-7 (Medium)

Useful resources

TCP Syncookies

Rationale

A TCP SYN flood attack can cause a denial of service by filling a system’s TCP connection table with connections in the SYN_RCVD state.

This feature is activated when a flood condition is detected, and enables the system to continue servicing valid connection requests.

Solution

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.tcp_syncookies = 1

C2S/CIS: CCE-27495-1 (Medium)

Useful resources

Log Martian packets

Rationale

The presence of «martian» packets (which have impossible addresses) as well as spoofed packets, source-routed packets, and redirects could be a sign of nefarious network activity. Logging these packets enables this activity to be detected.

Solution

By default
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.default.log_martians = 1

C2S/CIS: CCE-80161-3 (Unknown)

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.all.log_martians = 1

C2S/CIS: CCE-80160-5 (Unknown)

Useful resources

ICMP broadcast echo requests

Rationale

Responding to broadcast (ICMP) echoes facilitates network mapping and provides a vector for amplification attacks.

Ignoring ICMP echo requests (pings) sent to broadcast or multicast addresses makes the system slightly more difficult to enumerate on the network.

Solution

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.icmp_echo_ignore_broadcasts = 1

C2S/CIS: CCE-80165-4 (Unknown)

Useful resources

IP forwarding

Rationale

Routing protocol daemons are typically used on routers to exchange network topology information with other routers. If this capability is used when not required, system network information may be unnecessarily transmitted across the network.

Solution

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.ip_forward = 0

C2S/CIS: CCE-80157-1 (Medium)

Useful resources

Sending ICMP redirects

Rationale

ICMP redirect messages are used by routers to inform hosts that a more direct route exists for a particular destination. These messages contain information from the system’s route table possibly revealing portions of the network topology.

Solution

By default
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.default.send_redirects = 0

C2S/CIS: CCE-80156-3 (Medium)

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.conf.all.send_redirects = 0

C2S/CIS: CCE-80156-3 (Medium)

Useful resources

Keep sockets in FIN-WAIT-2 state

Not available from C2S/CIS standard.

Rationale

The connection is being kept around so that any delayed packets can be matched to the connection and handled appropriately.

Decreasing this value can avoid some DDoS attacks or other problems (e.g. memory consuming) that arose from getting huge amounts of connections.

Solution

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.tcp_fin_timeout = 30

Sysctl Documentation

Comments

If you set too large value to tcp_fin_timeout, the system may become out of port, file-descripter and memory. If you set too small value, the system may leak delayed packets.

Useful resources

Keepalive packets to keep an connection alive

Not available from C2S/CIS standard.

Rationale

TCP keepalive keeps the connection open in case an error has happened. This kernel feature ensures that a TCP connection will be kept active by simulating traffic on it so it is not marked by the communication layer as inactive.

Solution

On all interfaces
# Add to /etc/sysctl.d/network-stack.conf
net.ipv4.tcp_keepalive_time = 180
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 3

Sysctl Documentation

Comments

Remember that keepalive support, even if configured in the kernel, is not the default behavior in Linux. Programs must request keepalive control for their sockets using the setsockopt interface.

High values can be especially harmful for expensive connections such as database connections.

Useful resources

  • Custom Configuration of TCP Socket Keep-Alive Timeouts

sysctl — в BSD и Linux — программа, предназначенная для управления отдельными параметрами ядра, безопасности, сетевой подсистемы. Позволяет определять и задавать такие параметры как размер сегмента разделяемой памяти, ограничение на число запущенных процессов, а также включать функции наподобие маршрутизации.

Имеет конфигурационный файл /etc/sysctl.conf, в котором переопределяются необходимые параметры.

Для начала сделаем его бэкап следующей командой:

#cp /etc/sysctl.conf   /etc/sysctl.conf.back

Открываем файл для редактирования:

 #mcgedit /etc/sysctl.conf

выполним

 $ sysctl -a

И увидим возможные параметры. Список может быть достаточно большим:

kernel.sched_min_granularity_ns = 8000000
kernel.sched_latency_ns = 40000000
kernel.sched_wakeup_granularity_ns = 10000000
kernel.sched_shares_ratelimit = 500000
kernel.sched_shares_thresh = 4
kernel.sched_child_runs_first = 1
kernel.sched_features = 113916
...много строк пропущено...

Значение sysctl загружаются во время загрузки системы из файла /etc/sysctl.conf.
В этом файле могут быть пустые строчки, комментарии (строки, начинающиеся на символ «#» или точку с запятой), а также строки в формате «переменная=значение».
Если вы хотите применить его в любой момент времени, вы можете сделать это с помощью команды sysctl -p.

настройка sysctl под веб-сервер Apache — усилим безопасность и увеличим производительность.

###################################

Вот опции, что необходимо добавить в конец /etc/sysctl.conf

net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_max_orphans = 65536
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_mem = 50576   64768   98152
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_syncookies = 0
net.ipv4.netfilter.ip_conntrack_max = 16777216
net.netfilter.nf_conntrack_max = 16777216
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_congestion_control = htcp
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.route.flush = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rfc1337 = 1
net.ipv4.ip_forward = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 1000
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
fs.inotify.max_user_watches = 16777216

А теперь о каждой опции более детально.

net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0

Не принимать и не отправлять ICMP-пакеты перенаправления. ICMP-перенаправления могут быть использованы злоумышленником для изменения таблиц маршрутизации. Целесообразно выставить в «0″. Единица имеет смысл только для хостов, использующихся в качестве маршрутизаторов.

net.ipv4.tcp_max_orphans = 65536

Целочисленное значение параметра tcp_max_orphans определяет максимальное число допустимых в системе сокетов TCP, не связанных каким-либо идентификатором пользовательского файла (user file handle). При достижении порогового значения “осиротевшие” (orphan) соединения незамедлительно сбрасываются с выдачей предупреждения. Этот порог помогает предотвращать только простые атаки DoS. Не следует уменьшать пороговое значение (скорее увеличить его в соответствии с требованиями системы – например, после добавления памяти. Каждое orphan-соединение поглощает около 64 Кбайт несбрасываемой на диск (unswappable) памяти.

net.ipv4.tcp_fin_timeout = 10

Параметр tcp_fin_timeout определяет время сохранения сокета в состоянии FIN-WAIT-2 после его закрытия локальной стороной. Партнер может не закрыть это соединение никогда, поэтому следует закрыть его по своей инициативе по истечении тайм-аута. По умолчанию тайм-аут составляет 60 секунд. В ядрах серии 2.2 обычно использовалось значение 180 секунд и вы можете сохранить это значение, но не следует забывать, что на загруженных WEB-серверах вы рискуете израсходовать много памяти на сохранение полуразорванных мертвых соединений. Сокеты в состоянии FIN-WAIT-2менее опасны, нежели FIN-WAIT-1, поскольку поглощают не более 1,5 Кбайт памяти, но они могут существовать дольше.

net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5

tcp_keepalive_time Переменная определяет как часто следует проверять соединение, если оно давно не используется. Значение переменной имеет смысл только для тех сокетов, которые были созданы с флагом SO_KEEPALIVE. Целочисленная переменная tcp_keepalive_intvl определяет интервал передачи проб. Произведение tcp_keepalive_probes * tcp_keepalive_intvl определяет время, по истечении которого соединение будет разорвано при отсутствии откликов. По умолчанию установлен интервал 75 секунд, т.е., время разрыва соединения при отсутствии откликов составит приблизительно 11 минут.

net.ipv4.tcp_max_syn_backlog = 4096

Целочисленное значение в файле tcp_max_syn_backlog определяет максимальное число запоминаемых запросов на соединение, для которых не было получено подтверждения от подключающегося клиента. Если на сервере возникают перегрузки, можно попытаться увеличить это значение.

Вы также можете увеличить время перезарядки розеток, избегая большого количества из них, проживающих в TIME_WAIT состояния, добавив эти значения/etc/sysctl.conf :

# Позволяет быстро утилизации TIME_WAIT сокеты.
# (Использовать с осторожностью в соответствии с документацией ядра!)
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_synack_retries = 1

Целочисленное значение (1 байт) tcp_synack_retries определяет число попыток повтора передачи пакетов SYNACK для пассивных соединений TCP. Число попыток не должно превышать 255. Значение 5 соответствует приблизительно 180 секундам на выполнение попыток организации соединения.

net.ipv4.tcp_mem = 50576   64768   98152

Векторная (минимум, режим нагрузки, максимум) переменная в файле tcp_memcодержит общие настройки потребления памяти для протокола TCP. Эта переменная измеряется в страницах (обычно 4Кб), а не байтах.

Минимум: пока общий размер памяти для структур протокола TCP менее этого количества страниц, операционная система ничего не делает.

Режим нагрузки: как только количество страниц памяти, выделенное для работы протокола TCP, достигает этого значения, активируется режим работы под нагрузкой, при котором операционная система старается ограничивать выделение памяти. Этот режим сохраняется до тех пор, пока потребление памяти опять не достигнет минимального уровня.

Максимум: максимальное количество страниц памяти, разрешенное для всех TCP сокетов.

net.ipv4.tcp_rmem = 4096 87380 16777216

Векторная (минимум, по умолчанию, максимум) переменная в файле 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 этот параметр не имеет значения.

net.ipv4.tcp_wmem = 4096 65536 16777216

Векторная переменная в файле 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 этот параметр не имеет значения.

net.ipv4.tcp_orphan_retries = 0

Целочисленной значение tcp_orphan_retries определяет число неудачных попыток, после которого уничтожается соединение TCP, закрытое на локальной стороне. По умолчанию используется значение 7, соответствующее приблизительно периоду от 50 секунд до 16минут в зависимости от RTO. На сильно загруженных WEB-серверах имеет смысл уменьшить значение этого параметра, поскольку закрытые соединения могут поглощать достаточно много ресурсов.

net.ipv4.tcp_syncookies = 0

Согласно [urlspan]рекомендациям разработчиков ядра[/urlspan], этот режим лучше отключить.

net.ipv4.netfilter.ip_conntrack_max = 16777216

Максимальное количество соединений для работы механизма connection tracking(используется, например, iptables). При слишком маленьких значениях ядро начинает отвергать входящие подключения с соответствующей записью в системном логе.

net.ipv4.tcp_timestamps = 1

Разрешает [urlspan]временные метки протокола TCP[/urlspan]. Их наличие позволяет управлять работой протокола в условиях серьезных нагрузок (см. tcp_congestion_control).

net.ipv4.tcp_sack = 1

Разрешить [urlspan]выборочные подтверждения протокола TCP[/urlspan]. Опция необходима для эффективного использования всей доступной пропускной способности некоторых сетей.

net.ipv4.tcp_congestion_control = htcp

[urlspan]Протокол[/urlspan], используемый для управления нагрузкой в сетях TCP. bic и cubicреализации, используемые по умолчанию, содержат баги в большинстве версий ядра RedHat и ее клонов. Рекомендуется использовать htcp.

net.ipv4.tcp_no_metrics_save = 1

Не сохранять результаты измерений TCP соединения в кеше при его закрытии. В некоторых случаях помогает повысить производительность.

net.ipv4.route.flush = 1

Актуально для ядер 2.4. По странной причине в ядрах 2.4, если в рамках TCP сессии произошел повтор передачи с уменьшенным размером окна, все соединения с данным хостом в следующие 10 минут будут иметь именно этот уменьшенный размер окна. Данная настройка позволяет этого избежать.

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

Активируем защиту от [urlspan]IP-спуфинга[/urlspan].

net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

Запрещаем маршрутизацию от источника.

net.ipv4.ip_local_port_range = 1024 65535

Увеличиваем диапазон локальных портов, доступных для установки исходящих подключений

net.ipv4.tcp_tw_reuse = 1

Разрешаем повторное использование TIME-WAIT сокетов в случаях, если протокол считает это безопасным.

net.ipv4.tcp_window_scaling = 1

Разрешаем динамическое изменение размера окна TCP стека

net.ipv4.tcp_rfc1337 = 1

Защищаемся от [urlspan]TIME_WAIT атак[/urlspan].

net.ipv4.ip_forward = 0

Запрещаем переадресацию пакетов, поскольку мы не роутер.

net.ipv4.icmp_echo_ignore_broadcasts = 1

Не отвечаем на ICMP ECHO запросы, переданные широковещательными пакетами

net.ipv4.icmp_echo_ignore_all = 1

Можно вообще не отвечать на ICMP ECHO запросы (сервер не будет пинговаться)

net.ipv4.icmp_ignore_bogus_error_responses = 1

Не отвечаем на ошибочно сформированные сообщения

net.core.somaxconn = 65535

Максимальное число открытых сокетов, ждущих соединения. Имеет смысл увеличить значение по умолчанию.

net.core.netdev_max_backlog = 1000

Параметр определяет максимальное количество пакетов в очереди на обработку, если интерфейс получает пакеты быстрее, чем ядро может их обработать.

net.core.rmem_default = 65536

Размер буфера приема данных по умолчанию для всех соединений.

net.core.wmem_default = 65536

Размер буфера передачи данных по умолчанию для всех соединений (по 16 Мб каждый сокет).

net.core.rmem_max = 16777216

Максимальный размер буфера приема данных для всех соединений (по 16 Мб каждый сокет).

net.core.wmem_max = 16777216

Максимальный размер буфера передачи данных для всех соединений (по 16 Мб каждый сокет).

P.S. Количество соединений обычно можно подсчитать с помощью

 wc -l /proc/net/ip_conntrack

####################################

## Включаем защиту от IP спуфинга, и проверку маршрута от источника

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

## Отключаем маршрутизацию TCP пакетов от источника
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

##Рекомендуется увеличить размер backlog до 1000 или выше (для 10Gb линка можно поставить 30000)
net.core.netdev_max_backlog = 10000
##Увеличиваем число входящих соединений, которые могут стоять в очереди, прежде чем будут отброшены
net.core.somaxconn = 262144
##Переменная определяет максимальное время хранения SYN-запросов в памяти до момента получения третьего, завершающего установление соединения, пакета
net.ipv4.tcp_max_syn_backlog = 1024
##Максимальное число сокетов, находящихся в состоянии TIME-WAIT одновременно. При превышении этого порога «лишний» сокет разрушается и пишется сообщение в системный журнал. Цель этой переменной – предотвращение простейших разновидностей DoS-атак.
net.ipv4.tcp_max_tw_buckets = 720000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_probes = 7
net.ipv4.tcp_keepalive_intvl = 30

##Размер буферов по умолчанию для приема и отправки данных через сокеты
net.core.wmem_default = 4194394
net.core.rmem_default = 8388608

##Увеличиваем максимальный размер памяти отводимой для TCP буферов
net.core.wmem_max = 33554432
net.core.rmem_max = 33554432

##буфер для TCP и UDP соединений (min, default, max bytes)
net.ipv4.tcp_rmem = 4096 8388608 16777216
net.ipv4.tcp_wmem = 4096 4194394 16777216

##Отключаем перенаправление пакетов с одного сетевого интерфейса на другой.
net.ipv4.ip_forward = 0
##Фильтр обратного пути, защита от спуфинга (подмены адресов)
net.ipv4.conf.default.rp_filter = 1
##Защита от TCP SYN Cookie
net.ipv4.tcp_syncookies = 1
##Управление Максимальным размером сообщений в байтах
kernel.msgmnb = 65536
##Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
##Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
##Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

Также не забываем про семафоры в системе:

$ ipcs -l

—— Пределы семафоров ——–

максимальное количество массивов = 128<
максимум семафоров на массив = 250
максимум семафоров на всю систему = 32000
максимум операций на вызов семафора = 32
максимальное значение семафора = 32767

Значения в sysctl:

$ sysctl kernel.sem
 kernel.sem = 250 32000 32 128
 kernel.shmmni = 4096
 vm.vfs_cache_pressure = 50

### Улучшение управления Системная память ###

# Увеличить размер дескрипторов файлов и кэша индексных дескрипторов

fs.file-макс = 2097152

# У меньше замену

vm.swappiness = 10
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2

### общей сети Параметры безопасности ###

# Для предотвращения [urlspan]SYN-атак[/urlspan] добавляем:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_synack_backlog = 2048

# Количество раз SYNACKs для пассивного соединения TCP.

net.ipv4.tcp_synack_retries = 2

# Разрешены местный диапазон портов

net.ipv4.ip_local_port_range = 2000 65535

# Защита от TCP TIME-WAIT

net.ipv4.tcp_rfc1337 = 1

• Уменьшите значение времени по умолчанию для tcp_fin_timeout связи

net.ipv4.tcp_fin_timeout = 15

• Уменьшите значение времени по умолчанию для соединения, чтобы сохранить живым

net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15

### ТЮНИНГ производительность сети ###

# По умолчанию буфер приема сокета

net.core.rmem_default = 31457280

# Максимальная Socket Receive Buffer

net.core.rmem_max = 12582912

# По умолчанию Разъем Отправить буфер

net.core.wmem_default = 31457280

# Максимальная Разъем Отправить буфер

net.core.wmem_max = 12582912

# Увеличение количество входящих соединений

net.core.somaxconn = 65536

# Увеличение числа входящих подключений отставания

net.core.netdev_max_backlog = 65536

# Увеличение максимального количества буферов памяти вариант

net.core.optmem_max = 25165824

# Увеличить максимальный общий буфер-космической ALLOCATABLE
# Это измеряется в единицах страниц (4096 байт)

net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144

# Увеличить пространство ALLOCATABLE чтения буфера

net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.udp_rmem_min = 16384

# Увеличьте записи буфера пространство ALLOCATABLE

net.ipv4.tcp_wmem = 8192 65536 16777216
net.ipv4.udp_wmem_min = 16384

# Увеличение размера TCP-времени ожидания ведра бассейн, чтобы предотвратить простые атаки DOS

net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1

****************************************************

Функция Назначение
net.ipv4.conf.default.forwarding=1 Включение форвардинга пакетов. Иными словами, необходимо разрешить ядру операционной системы осущетсвлять проброс трафика с одного интерфейса на другой.
fs.file-max = 64000 Максимальное значение открытых файлов. Что бы его узнать, выполните команду cat /proc/sys/fs/file-max
net.ipv4.conf.all.rp_filter = 1 Эта переменная сообщает ядру о необходимости фильтрации пакетов по их исходящему адресу.
kernel.sysrq = 0 Отключается комбинация клавиш sysrq, которая используется при крахе системы.
net.ipv4.conf.default.rp_filter=1 Фильтр обратного пути, защита от спуфинга (подмен адресов)
net.ipv4.conf.all.accept_source_route = 0 Маршрутизация от источника (source routing) позволяет отправителю определить путь, по которому пакет должен пройти по сети Internet, чтобы достигнуть пункта назначения. Это очень удобно для изучения и отладки работы сети, но нарушитель получает возможность подмены адресов компьютеров локальной сети. 0 означает, что маршрутизация отключена, 1 — наоборот.
net.ipv4.tcp_syncookies=1 Разрешает/запрещает передачу так называемых syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета. Когда в систему поступает слишком много запросов на соединение, то очередь может переполниться и тогда запускается передача syncookies в ответ на каждый SYN-запрос. Эта переменная используется для предотвращения syn-flood атак. Переменная может принимать два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено). Эта функция будет работать только в том случае, если ядро собрано с опцией CONFIG_SYN_COOKIES. (прим. перев.) В прошлом было много дискуссий по поводу проблем и недостатков, связанных с syncookies. Лично я рассматриваю эту возможность как достаточно удобную и безопасную. Однако, в некоторых случаях, использование этой опции может представлять некоторую угрозу, см. ниже. Опция tcp_syncookies подразумевает, что на системах с высокой нагрузкой новые соединения будут устаналиваться без таких «фишек», как ECN и SACK. Если передача syncookies срабатывет при невысоких нагрузках, то вам следует подкорректировать параметр, задающий длину очереди. Не следует использовать эту возможность на системах с высокой нагрузкой. Если в системный журнал поступают предупреждения о syn flood для вполне законных соединений, то можете попробовать подстроить переменные tcp_max_syn_backlog, tcp_synack_retries и tcp_abort_on_overflow.
net.ipv4.ip_default_ttl = 64 Устанавливает значение по-умолчанию для величины Time To Live исходящих пакетов. Это число определяет продолжительность «жизни» пакета в Internet. Каждый раз, когда пакет попадает на очередной роутер, брандмауэр и т.п., величина TTL пакета уменьшается на 1. Значение по-умолчанию – 64. Это достаточно приемлемое значение. Очень трудно представить себе ситуацию, когда это число оказалось бы недостаточным. Переменная принимает целое число без знака в диапазоне от 0 до 255 включительно, однако, значение 255 слишком велико, а если поставить 0 – то вы вообще лишитесь выхода в сеть. Число 64 достаточно хорошее, если вы не пытаетесь установить соединение с компьютером, отстоящим от вас на значительном растоянии, измеряемом в «переходах» (hops). Тогда этой вличины TTL может и не хватить. Однако, я в своей практике еще не встречался с компьютерами, отстоящими от меня более чем на 30 «переходов» (hops) и я не думаю, что вам придется увеличивать значение этой переменной. Увеличение TTL пакета до 255 может иметь свои негативные последствия. Если представить себе, что где-то произошел сбой в 2-х маршрутизаторах и пакет «зациклился» между ними, тогда пакет начнет «бегать» туда-сюда между маршрутизаторами, поглощая пропускную способность канала, до тех пор, пока TTL пакета не истечет. Как правило, величину TTL не устанавливают больше 100.
net.ipv4.ip_dynaddr = 0 Переменная используется для разрешения некоторых проблем, связанных с динамической адресацией. Позволяет демону diald одновременно устанавливать соединение и изменять исходящий адрес в пакетах (и сокетах для локальных процессов). Эта возможность была реализованв для поддержки TCP по коммутируемым соединениям и соединениям с маскарадингом (masqueradig). Эта опция позволяет «маскарадить» исходящий адрес пакета при изменении динамического IP-адреса.В переменную можно записать одно из 3-х значений: 0, 1 или 2. (0 – опция выключена, это значение по-умолчанию. 1 – опция включена.) Любое другое значение, отличающееся от 0 и 1 подразумевает включение этой опции в «многословном» (verbose) режиме, что приводит к записи в системный журнал отладочных сообщений. Что происходит, если изменяется адрес исходящего интерфейса при включенной опции ip_dynaddr: Исходящий адрес пакета и сокета изменяется ПРИ ПОВТОРНОЙ ПЕРЕДАЧЕ, когда он находится в состоянии SYN_SENT. Это касается локальных процессов. Для транзитных пакетов – исходящий адрес пакета изменяется на выходе, когда внутренний хост выполняет ПОВТОРНУЮ ПЕРЕДАЧУ, пока не будет принят внешний пакет. Эта опция особенно полезна для случаев автодозвона, когда в момент установления связи исходящий адрес еще не известен. Любой запрос на соединение заставляет diald «поднять» исходящий интерфейс, после чего пакеты отправляются через него. Это означает, что нет необходимости сначала выдавать запрос который «поднимет» исходящий интерфейс, а затем выдавать «реальный» запрос на соединение, вместо этого мы просто устанавливаем соединение.
net.ipv4.ip_local_port_range = 32768 61000 Содержит два целых числа, которые определяют диапазон локальных портов, которые используются в клиентских соединениях, т.е. для исходящих соединений, которые связывают нашу систему с некоторым узлом сети, где мы выступаем в качестве клиента. Первое число задает нижнюю границу диапазона, второе – верхнюю. Значения по-умолчанию зависят от имеющегося объема ОЗУ. Если установлено более чем 128 Мб, то нижняя граница будет 32768, а верхняя – 61000. При меньшем объеме ОЗУ нижняя граница будет 1024 а верхняя – 4999 или даже меньше. Этот диапазон определяет количество активных соединений, которые могут быть запущены одновременно, с другой системой, которая не поддерживает TCP-расширение timestamp. Диапазона 1024—4999 вполне достаточно для установки до 2000 соединений в секунду с системами, не поддерживающими timestamp. Проще говоря, этого вполне достаточно для большинства применений.
net.ipv4.ip_no_pmtu_disc = 0 Переменная ip_no_pmtu_disc запрещает поиск PMTU (от англ. Path Maximum Transfer Unit – Максимальный Размер Пакета для выбранного Пути). Для большинства случаев лучше установить в эту переменную значение FALSE, или 0 (т.е. система будет пытаться определить максимальный размер пакета, при котором не потребуется выполнять их фрагментацию, для передачи на заданный хост). Но иногда, в отдельных случаях, такое поведение системы может приводить к «срывам» соединений. Если у вас возникают такие проблемы, то вам следует попробовать отключить эту опцию (т.е. записать в переменную число 1) и установить нужное значение MTU. Хочу обратить ваше внимание на то, что MTU и PMTU – это не одно и то же! MTU – (от англ. Maximum Transfer Unit – максимальный размер пакета) определяет максимальный размер пакета для наших сетевых интерфейсов, но не для сетевых интерфейсов на другом конце. PMTU – опция, которая заставляет систему вычислять максимальный размер пакета, при котором не потребуется фрагментация пакетов, для маршрута к заданному хосту, включая все промежуточные переходы. Значение по-умолчанию – FALSE (0), т.е. функция определения разрешена. Если записать число 1 в эту переменную, то функция определения PMTU будет запрещена. Переменная ip_no_pmtu_disc может принимать значение 0 или 1.
net.ipv4.ip_nonlocal_bind = 0 Установка этой переменной позволяет отдельным локальным процессам выступать от имени внешнего (чужого) IP адреса. Это может оказаться полезным в некоторых случаях, когда необходимо «прослушивать» внешние (чужие) IP адреса, например – сниффинг чужого траффика. Однако, эта опция может оказывать отрицательное влияние на работоспособность отдельных приложений. Эта переменная может иметь два значения – 0 или 1. Если установлено значение 0, то опция отключена, 1 – включена. Значение по-умолчанию – 0.
net.ipv4.ipfrag_low_thresh = 196608 Переменная задает максимальный объем памяти, выделяемый под очередь фрагментированных пакетов. Когда длина очереди достигает этого порога, то обработчик фрагментов будет отвергать все фрагментированные пакеты до тех пор, пока длина очереди не уменьшится до значения переменной ipfrag_low_thresh. Это означает, что все отвергнутые фрагментированные пакеты должны быть повторно переданы узлом-отправителем. Пакеты фрагментируются в том случае, если их размер слишком велик, чтобы быть переданными по данному каналу. Узел-отправитель, в этом случае, «режет» пакеты на более мелкие части и затем передает их одну за другой. На узле-получателе эти фрагменты опять собираются в полноценный пакет. Примечательно, что идея фрагментации пакетов, сама по себе, вещь замечательная, но, к сожалению, может быть использована в весьма неблаговидных целях. Переменная содержит целое число в диапазоне 0 … 2147483647 и означает верхний порог длины очереди фрагментов в байтах. Значение по-умолчанию – 262144 байт, или 256 Кб. Этого количества, как правило, вполне достаточно даже для самых крайних случаев.
net.ipv4.ipfrag_time = 30 Эта переменная определяет максимальное время «хранения» фрагментов в секундах. Это относится только к тем фрагментам, которые пока невозможно собрать, поскольку собранные пакеты к этому сроку скорее всего уже будут переданы дальше (на следующий уровень или в сеть). Переменная принимает целое значение и определяет предельное время хранения фрагментов в секундах. Если записать туда число 5, то это будет означать 5 секунд.
net.ipv4.inet_peer_gc_maxtime = 120 Переменная inet_peer_gc_maxtime определяет частоту «сборки мусора» при незначительном объеме данных. Эта переменная имеет то же предназначение, что и inet_peer_gc_mintime, только выбор, какой переменной пользоваться, производится в зависимости от величины нагрузки на систему. Переменная принимает целое число, измеряемое в «тиках». Значение по-умолчанию – 120 «тиков», чего вполне достаточно для большинства серверов и рабочих станций.
net.ipv4.inet_peer_gc_mintime = 10 Переменная inet_peer_gc_maxtime определяет частоту «сборки мусора» при незначительном объеме данных. Эта переменная имеет то же предназначение, что и inet_peer_gc_mintime, только выбор, какой переменной пользоваться, производится в зависимости от величины нагрузки на систему. Переменная принимает целое число, измеряемое в «тиках». Значение по-умолчанию – 120 «тиков», чего вполне достаточно для большинства серверов и рабочих станций.
net.ipv4.inet_peer_maxttl = 600 Это максимальное время хранения записей. При незначительных нагрузках на систему неиспользуемые записи будут удаляться через данный промежуток времени.
net.ipv4.inet_peer_minttl = 120 Переменная определяет минимальное время хранения данных в «inet peer storage». Это время должно быть достаточно большим, чтобы перекрыть время сборки фрагментов на противоположной стороне. Минимальное время хранения является гарантией того, что размер пула будет меньше чем величина inet_peer_threshold.
net.ipv4.inet_peer_threshold = 65664 Переменная определяет минимальное время хранения данных в «inet peer storage». Это время должно быть достаточно большим, чтобы перекрыть время сборки фрагментов на противоположной стороне. Минимальное время хранения является гарантией того, что размер пула будет меньше чем величина inet_peer_threshold.
net.ipv4.tcp_abort_on_overflow = 0 Эта переменная заставляет ядро отвергать новые соединения, если их поступает такое количество, что система не в состоянии справиться с таким потоком. Что это означает? Допустим, что на систему обрушивается шквал запросов на соединение, тогда они могут быть просто отвергнуты, если переменная будет включена, поскольку система не в состоянии обработать их все. Если переменная не установлена, то система будет пытаться обслужить все запросы. Переменная может иметь два значение – 0 (выключено) или 1 (включено). Значение по-умолчанию – 0. Включение этой опции следует расценивать как крайнюю меру. Перед этим необходимо попытаться поднять производительность сервисов.
net.ipv4.tcp_adv_win_scale = 2 Эта переменная влияет на вычисление объема памяти в буфере сокета, выделяемой под размер TCP-окна и под буфер приложения. Если величина tcp_adv_win_scale отрицательная, то для вычисления размера используется следующее выражение: Где bytes – это размер окна в байтах. Если величина tcp_adv_win_scale положительная, то для определения размера используется следующее выражение: Переменная принимает целое значение. Значение по-умолчанию – 2, т.е. под буфер приложения отводится ¼ часть объема, определяемого переменной tcp_rmem.
net.ipv4.tcp_app_win = 31 Эта переменная определяет количество байт, резервируемых под TCP-окно в приемном буфере сокета. Выражение, согласно которому делается расчет, выглядит следующим образом: Как видно из выражения – чем больше значение переменной, тем меньше будет размер буфера окна. Исключение составляет значение 0. В этом случае резервирование не производится. Значение по-умолчанию – 31. Не изменяйте эту переменную, если вы не уверены в том, что делаете.
net.ipv4.tcp_dsack = 1 Эта опция необходима для выполнения передачи дублирующих SACK-пакетов (от англ. Selective ACKnowledgement – Выборочное Подтверждение Приема, прим. перев.). Техника выборочного подтверждения кратко описана в разделе, посвященном переменной tcp_sack. Детальное описание можно найти в RFC 2883. Здесь подробно описываются действия по обработке ситуаций, когда получен дубликат пакета, пришедшего ранее, или когда пакеты поступают не в той очередности. D-SACK – это расширение стандарта SACK и используется для уведомления хоста-отправителя о том, что пакет был получен дважды (т.е. продублирован). Эту информацию хост-отправитель может использовать для корректировки сетевых настроек и т.п… Эта опция гарантирует 100%-ную обратную совместимость с устаревшими реализациями TCP, если в них техника SACK не реализована каким-либо нестандартным образом. Но это чрезвычайно редкий случай, а посему – у вас едва ли будут возникать проблемы с этим. Переменная может иметь два состояния – 1 (включено) и 0 (выключено). Значение по-умолчанию – 1 (включено). И, само собой разумеется, установка этой переменной имеет смысл только если включена переменная tcp_sack, поскольку tcp_dsack очень тесно связана с ней. В большинстве случаев разумным будет оставить переменную включенной.
net.ipv4.tcp_ecn = 0 Переменная tcp_ecn отвечает за работу Explicit Congestion Notification (Явное Уведомление о Перегруженности) в TCP-соединениях. Используется для уведомления о возникновении «затора» на маршруте к заданному хосту или сети. Может использоваться для извещения хоста-отправителя о необходимости снизить скорость передачи пакетов через конкретный маршрутизатор или брандмауэр. Explicit Congestion Notification (ECN) детально описано в RFC 3168 — The Addition of Explicit Congestion Notification (ECN) to IP. Дополнительную информацию о ECN вы найдете в RFC 2884 — Performance Evaluation of Explicit Congestion Notification (ECN) in IP Networks. Коротко: этот документ подробно описывает как должно передаваться уведомление о перегруженности хосту-отправителю, который, в свою очередь, может выбрать другой маршрут или начать снижать скорость передачи до тех пор, пока к нему не перестанут поступать ECN-пакеты. В Интернете еще встречаются маршрутизаторы и брандмауэры, которые не пропускают пакеты с установленным флагом ECN и, если вам не повезет, то вы можете столкнуться с ними. При возникновении проблем с прохождением ECN – попробуйте отключить эту опцию. Если вам встретится подобный маршрутизатор, то можете попробовать вступить в контакт с администратором и предупредить его об имеющихся проблемах. Подробное описание проблемы и общий список аппаратуры, являющейся причиной этой неприятности, вы найдете в приложении Ссылки в пункте ECN-under-Linux Unofficial Vendor Support Page. Переменная может иметь два состояния – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено).
net.ipv4.tcp_fack = 1 Переменная tcp_fack ответственна за систему Forward Acknowledgement (Упреждающее Подтверждение) в Linux. Forward Acknowledgement – это специальный алгоритм, который работает поверх SACK, и предназначен для контроля «заторов». Главная идея алгоритма FACK состоит в отслеживании наибольшего номера выборочно подтвержденной последовательности как признака того, что все предыдущие не подтвержденные (выборочно) сегменты были потеряны. Это позволяет оптимизировать восстановление потерь. Однако, этот алгоритм становится неработоспособным в случае неупорядоченного потока данных, тогда он (алгоритм) автоматически отключается для данного конкретного соединения. Изначально алгоритм FACK был разработан Мэттью Матисом (Matthew Mathis) с соавторами. Документ, описывающий алгоритм, можно найти на http://www.psc.edu/~mathis/. Переменная может принимать два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 1 (включено). Эта опция используется только тогда, когда включена переменная tcp_sack.
net.ipv4.tcp_fin_timeout = 60 Переменная задает максимальное время пребывания сокета в состоянии FIN-WAIT-2. Используется в тех случаях, когда другая сторона по тем или иным причинам не закрыла соединение со своей стороны. Каждый сокет занимает в памяти порядка 1.5 Кб, что может привести к значительным утечкам памяти в некоторых случаях. Переменная принимает целое число. Значение по-умолчанию – 60 секунд. В ядрах серии 2.2 это значение было равно 180 секундам, но было уменьшено, поскольку иногда возникали проблемы, связанные с нехваткой памяти, на web-серверах, которые, как правило, обслуживают огромное количество подключений. За дополнительной информацией – обращайтесь к описанию переменных tcp_max_orphans и tcp_orphan_retries.
net.ipv4.tcp_keepalive_intvl = 75 Переменная определяет интервал проверки «жизнеспособность» сокета. Это значение учитывается при подсчете времени, которое должно пройти перед тем как соединение будет разорвано. Переменная принимает целое число. Значение по-умолчанию – 75 секунд. Это достаточно высокое значение, чтобы рассматривать его как нормальное. Значения переменных tcp_keepalive_probes и tcp_keepalive_intvl могут использоваться для определения времени, через которое соединение будет разорвано. Со значениями по-умолчанию (9 попыток с интервалом 75 секунд) это займет примерно 11 минут. Попытки определения «жизнеспособности», в свою очередь, начнутся через 2 часа после того, как через данное соединение проследовал последний пакет.
net.ipv4.tcp_keepalive_probes = 9 Переменная определяет количество попыток проверки «жизнеспособности» прежде, чем будет принято решении о разрыве соединения. Переменная принимает целое число, которое не следует устанавливать больше 50-ти. Значение по-умолчанию – 9. Это означает, что будет выполнено 9 попыток проверки соединения, чтобы убедиться в том, что соединение разорвано.
net.ipv4.tcp_keepalive_time = 7200 Переменная определяет как часто следует проверять соединение, если оно давно не используется. Значение переменной имеет смысл только для тех сокетов, которые были созданы с флагом SO_KEEPALIVE. Переменная принимает целое число секунд. Значение по-умолчанию – 7200 секунд, или 2 часа. Не уменьшайте это число без необходимости, поскольку это может привести к увеличению излишнего трафика.
net.ipv4.tcp_max_orphans = 65536 Переменная задает максимальное число «осиротевших» (не связанных ни с одним процессом) сокетов. Если это число будет превышено, то такие соединения разрываются, а в системный журнал пишется предупреждение. Это ограничение существует исключительно ради предотвращения простейших разновидностей DoS-атак. Вообще вы не должны полагаться на эту переменную! Не рекомендуется уменьшать это число. Сетевая среда может потребовать увеличение этого порога, однако, такое увеличение может привести к необходимости увеличения объема ОЗУ в системе. Прежде чем поднимать этот предел – попробуйте перенастроить сетевые сервисы на более агрессивное поведение по отношению к «осиротевшим» сокетам. Переменная принимает целое число. Значение по-умолчанию – 8192, однако оно очень сильно зависит от объема памяти в системе. Каждый «осиротевший» сокет «съедает» примерно 64 Кб памяти, которая не может быть сброшена в своп (swap). При возникновении проблем, связанных с этим ограничением – в системный журнал будет записано сообщение, подобное этому: TCP: too many of orphaned sockets Это может служить поводом к тому, чтобы пересмотреть значения переменных tcp_fin_timeout или tcp_orphans_retries.
net.ipv4.tcp_max_syn_backlog = 1024 Переменная определяет максимальное время хранения SYN-запросов в памяти до момента получения третьего, завершающего установление соединения, пакета. Эта опция работает только тогда, когда включена переменная tcp_syncookies. Если сервер испытывает серьезные нагрузки, то можно попробовать немного увеличить этот параметр. Переменная принимает целое число. Значение по-умолчанию зависит от количества памяти, имеющейся в системе. Если объем памяти менее 128 Мб, то значение по-умолчанию равно 128, если больше, то значение по-умолчанию равно 1024. Если вы увеличиваете эту переменную до величины более чем 1024, то было бы неплохо изменить величину TCP_SYNQ_HSIZE и пересобрать ядро. TCP_SYNQ_HSIZE находится в файле linux/include/tcp.h. Эта величина рассчитывается по формуле:TCP_SYNQ_HSIZE*16 ⇐ tcp_max_syn_backlog
net.ipv4.tcp_max_tw_buckets = 180000 Максимальное число сокетов, находящихся в состоянии TIME-WAIT одновременно. При превышении этого порога – «лишний» сокет разрушается и пишется сообщение в системный журнал. Цель этой переменной – предотвращение простейших разновидностей DoS-атак. Переменная принимает целое число. Значение по-умолчанию – 180000. На первый взгляд может показаться, что это очень много, но на самом деле это не так. Если у вас начинают возникать ошибки, связанные с этим параметром, то попробуйте увеличить его. Вам не следует уменьшать значение этой переменной. Вместо этого, если начали поступать сообщения в системный журнал, ее следует увеличить, однако, это может потребовать наращивания памяти в системе.
net.ipv4.tcp_mem = 196608 262144 393216 В этой переменной задаются 3 значения, определяющие объем памяти, который может быть использован стеком TCP. Значения измеряются в страницах памяти. Размер одной страницы зависит от аппаратуры и конфигурации ядра. Для архитектуры i386 размер одной страницы составляет 4Кб, или 4096 байт. Некоторые, более новые аппаратные реализации, имеют размер страницы равный 16, 32 или даже 64 Кб. Все три значения по-умолчанию рассчитываются во время загрузки. Первое число задает нижний порог. Ниже этого порога, стек TCP вообще никак не беспокоится об управлении памятью, используемой различными TCP сокетами. Когда объем используемой памяти достигает второго предела (числа), то TCP начинает более энергично «расталкивать» память, стремясь освободить ее как можно быстрее. Этот процесс продолжается до тех пор, пока объем использумой памяти не достигнет нижнего предела. И последнее число – максимальный объем памяти, который может использоваться для нужд TCP. Если используемый объем памяти достигнет этого порога, то TCP просто начинает «терять»пакеты и соединения до тех пор, пока объем используемой памяти не уменьшится. Эта переменная может позволить несколько увеличить пропускную способность на «толстых» каналах, если должным образом настроить переменные tcp_mem, tcp_rmem и tcp_wmem. Впрочем, переменная tcp_rmem не требует особо пристального внимания, поскольку серия ядер 2.4 имеет достаточно хорошие настройки этой переменний, а вот на другие две следует взглянуть поближе. Дополнительную информацию об этом вы найдете в руководстве TCP Tuning Guide.
net.ipv4.tcp_orphan_retries = 0 Количество попыток закрыть соединение перед тем как оно будет разорвано принудительно. Если вы администрируете http-сервер, который испытывает большие нагрузки, то стоит подумать об уменьшении этого значения. Переменная принимает целое число. Значение по-умолчанию – 7, что соответствует, примерно, от 50 секунд до 16 минут, в зависимости от величины Retransmission Timeout (RTO – Таймаут для Повторной Передачи. прим. перев.). Детальное описание RTO вы найдете в разделе «3.7. Data Communication» RFC 793 — Transmission Control Protocol. Кроме того, посмотрите описание переменной tcp_max_orphans.
net.ipv4.tcp_reordering = 3 Максимальное количество пакетов, пришедших в потоке не по-порядку, прежде чем будет сделано предположение о том, что пакет был потерян где-то на маршруте. Когда делается такое предположение, то стек TCP переходит обратно в режим «slow start» (медленный старт), поскольку пакет действительно мог быть утерян из-за перегруженности сети. Кроме того, стек TCP откажется от дальнейшего использования алгоритма FACK при обмене с этим хостом. Переменная принимает целое число. Значение по-умолчанию – 3. Это достаточно хорошее значение и не следует его изменять. Если этот параметр уменьшить, то это может значительно ухудшить работу сетевой подсистемы особенно, если пакеты часто переупорядочиваются.
net.ipv4.tcp_retrans_collapse = 1 Включает/выключает эмуляцию ошибки протокола TCP, делая возможным сетевое взаимодействие с некоторыми устройствами, в которых реализация стека TCP имеет эту ошибку. Без ее эмуляции было бы невозможным работать с отдельными моделями принтеров. Ошибка заключается в отправке полноразмерных пакетов при повторной передаче. Переменная может принимать два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 1 (включено). Эмуляция ошибки никак не повредит взаимодействию с другими узлами сети, но при этом позволит общаться с устройствами, имеющими ошибку в реализации стека TCP. Вообще эта опция совершенно безопасна, однако, если в журнал пишутся непонятные сообщения – можете попробовать отключить ее.
net.ipv4.tcp_retries1 = 3 Максимальное количество попыток повторной передачи пакетов по установленному соединению прежде, чем сообщение об ошибке будет передано сетевому уровню, в результате чего может быть выбран другой маршрут для отправки последующих пакетов. Минимальное значение этого параметра определяется в RFC ???? и равно 3. Это число является значением по-умолчанию, что соответствует интервалу времени от 3 секунд до 8 минут, в зависимости от величины Retransmission timeout (RTO). Детальное описание RTO вы найдете в разделе «3.7. Data Communication» RFC 793 — Transmission Control Protocol. Переменная принимает целое число. Значение по-умолчанию – 3. Стандарты определяют диапазон изменения этого параметра от 3 до 100.
net.ipv4.tcp_retries2 = 15 Максимальное количество попыток повторной передачи пакетов, до того как соединение будет считаться разорванным. Это ограничение определено в RFC 1122 и равно 100, но обычно его уменьшают. Переменная принимает целое число. Значение по-умолчанию – 15, что соответствует примерно 13-30 минутам в зависимости от величины Retransmission timeout (RTO). При желании можете попробовать уменьшить этот параметр.
net.ipv4.tcp_rfc1337 = 0 Переменная tcp_rfc1337 является реализацией решения проблемы, описываемой в RFC 1337 — TIME-WAIT Assassination Hazards in TCP. Проблема связана с «устаревшими» дубликатами пакетов, которые могут вносить помехи во вновь устанавливаемые соединения и порождать три различные проблемы. Первая – «устаревший» дубликат пакета с данными может быть ошибочно воспринят в новом соединении, что приведет к передаче неверных данных. Вторая – соединение может быть десинхронизировано и «уйти» в ACK-цикл из-за «устаревших» дубликатов, которые порождают новые соединения (здесь автор имеет ввиду «устаревшие» дубликаты SYN-пакетов, прим. перев.). И третья, и последняя проблема – «устаревшие» дубликаты могут «проникнуть» в недавно созданное соединение и ошибочно уничтожить его. Согласно упомянутому RFC существуют три возможных решения, однако, одно из них решает эту проблему лишь частично, второе требует внесения значительных изменений в протокол TCP. Окончательное решение состоит в том, что RST-пакеты должны просто игнорироваться, пока сокет находится в состоянии TIME_WAIT. Вместе с установкой параметра Maximum Segment Life (MSL – максимальное время жизни сегмента) равным 2 мин. такой подход решает все три проблемы, описанные в RFC 1337.
net.ipv4.tcp_rmem = 4096 87380 4194304 Переменная содержит три числа, которые используются при управлении размерами приемных буферов. Первое число – минимальный размер приемного буфера, который выделяется для каждого сокета. Этот размер буфера выделяется всегда, даже при очень высоких нагрузках на систему. Значение по-умолчанию – 4096 байт, или 4 Кб. В предыдущих версиях ядра Linux это значение было 8192 байт. Это достаточно большой размер и не следует увеличивать его, иначе, при «взрывных» нагрузках на сеть, вы можете столкнуть с очень серьезными проблемами. Второе число – размер приемного буфера по-умолчанию, который выделяется для каждого сокета. Это значение перекрывает значение переменной /proc/sys/net/core/rmem_default, которая используется другими протоколами. Значение по-умолчанию – 87380 байт, или 85 Кб. Совместно с переменными tcp_adv_win_scale и tcp_app_win эта переменная используется при расчете размера TCP-окна. Это значение используется при незначительных нагрузках. Как и в случае с первым значением – не следует без особой нужды изменять этот параметр. Эта переменная может дать некоторый прирост производительности на «толстых» каналах, если достаточно корректно используется вместе с переменными tcp_mem и tcp_wmem. tcp_rmem не требует вмешательства извне, поскольку ядра серии 2.4 достаточно хорошо настраивают ее автоматически, а вот на tcp_mem и tcp_wmem можно взглянуть попристальнее. Дополнительную информацию, по настройке переменных, вы найдете в TCP Tuning Guide. Третье, и последнее, число – максимально возможный размер приемного буфера, который может быть размещен для каждого сокета. Этот параметр перекрывается переменной /proc/sys/net/core/rmem_max, если значение в ipv4 оказывается больше. Перед изменением этого параметра – вам следует сначала взглянуть на значение /proc/sys/net/core/rmem_max. Значение по-умолчанию – удвоенное значение второго параметра, т.е. – 87380 * 2 bytes, или 174760 байт (170 Кб). Как правило этот параметр не нуждается в корректировке.
net.ipv4.tcp_sack = 1 Разрешает Selective Acknowledgements (SACK – Выборочное Подтверждение), детальное описание вы найдете в RFC 2883 — An Extension to Selective Acknowledgement (SACK) Option for TCP и RFC 2883 — An Extension to Selective Acknowledgement (SACK) Option for TCP. Если эта переменная включена (установлена 1), то в TCP-заголовке будет устанавливаться SACK-флаг при передаче SYN-пакета, сообщая тем самым удаленному хосту, что наша система в состоянии обрабатывать SACK, на что удаленный хост может ответить ACK-пакетом с установленным флагом SACK. Этот режим выборочно подтверждает каждый сегмент в TCP-окне. Это особенно полезно на неустойчивых соединениях, поскольку позволяет производить повторную передачу лишь отдельных, не подтвержденных фрагментов, а не всего TCP-окна, как это диктуется более старыми стандартами. Если какой либо сегмент TCP-окна был «утерян», то приемная сторона не пришлет на него SACK-подтверждение о приеме. Отправитель, поняв это, повторит передачу «потерявшихся» сегментов. Избыточные данные сохраняются в TCP-заголовке, 40 байт на сегмент. Подтверждение каждого сегмента – это два 32-битных беззнаковых целых числа, таким образом в заголовке может разместиться подтверждение 4-х сегментов. Однако, как правило, совместно с опцией SACK используется опция timestamp, которая занимает 10 байт и поэтому в одном пакете может быть подтверждено не более 3 сегментов. Рекомендуется включать эту опцию, если вы имеете неустойчивые соединения. Однако, если вы соединены 1.5-метровым кабелем с другой машиной, то в таком случае, для достижения наивысшей скорости обмена, следует эту опцию отключить. Обычно эта опция не нужна, но лучше ее включить. Она обеспечивает 100% обратную совместимость, т.е. вы не должны испытывать никаких проблем при соединении с хостами, которые эту опцию не поддерживают. В переменную могут быть записаны два числа – 0 (выключено) и 1 (включено). Значение по-умолчанию –1 (включено).
net.ipv4.tcp_stdurg = 0 Разрешает/запрещает соответствие стандарту RFC 1122. Поведение по-умолчанию соответствует стандарту использования флага URG – BSD 4.2, описанному в RFC 793. Если эта переменная включена, то возможны сбои при работе с отдельными узлами Интернета, точнее – с узлами, которые придерживаются стандарта BSD 4.2. За дополнительной информацией обращайтесь к RFC 1122 — Requirements for Internet Hosts – Communication Layers секция «4.2.2.4 Urgent Pointer: RFC 793 Section 3.1 explanation», где имеется ссылка на RFC 793 — Transmission Control Protocol. Переменная принимает два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено).
net.ipv4.tcp_syn_retries = 5 Количество попыток передачи SYN-пакета при установлении нового соединения. Переменная принимает целое число, которое не должно устанавливаться больше чем 255, поскольку каждая повторная попытка отнимает значительное время. На каждую попытку отводится примерно 30-40 секунд. Значение по-умолчанию – 5, что соответствует, примерно, 180 секундам.
net.ipv4.tcp_synack_retries = 5 Количество попыток передачи SYN,ACK-пакета в ответ на SYN-запрос. Другими словами – максимальное число попыток установить пассивное TCP-соединение, инициированное другим хостом. Переменная принимает целое число, которое не должно устанавливаться больше чем 255 по тем же причинам, что и в случае с переменной tcp_syn_retries. Значение по-умолчанию – 5.
net.ipv4.tcp_timestamps = 1 Разрешает/запрещает использование временных меток (timestamps), в соответствии с RFC 1323. Если коротко, то это расширение TCP используется для расчета Round Trip Measurement (определение времени возврата) лучшим способом, нежели метод Retransmission timeout (RTO). Эта опция должна сохранять обратную совместимость в большинстве случаев, так что лучше оставить ее включенной, особенно если вы работаете в высокоскоростной сети (например LAN или 10mb Интернет). В случае низкоскоростного оединения (скажем модемное) – вы прекрасно обойдетесь и без этой опции, и будет даже лучше, если вы ее отключите. Переменная может принимать два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 1 (включено). Более подробную информацию вы найдете в секции 4 документа RFC 1323 — TCP Extensions for High Performance.
net.ipv4.tcp_tw_recycle = 0 Разрешает/запрещает быструю утилизацию сокетов, находящихся в состоянии TIME-WAIT. Если вы не уверены в своих действиях, то вам лучше не трогать эту переменную. Переменная принимает целое число (а не булевское – из моего опыта и моего понимания исходных текстов ядра следует, что описание переменной в linux/Documentation/ip-sysctl.txt содержит ошибку, если я не ошибаюсь). Значение по-умолчанию – 0. Не изменяйте эту переменную, если вы не уверены в своих действиях или не получили совет от опытных экспертов по ядру.
net.ipv4.tcp_window_scaling = 1 Разрешает/запрещает масштабирование TCP-окна, как определено в RFC 1323. В этом документе описано как производится масштабирование TCP-окна при передаче по Large Fat Pipes (LFP – «толстый» канал). При передаче TCP-пакетов по «толстым» каналам возникают существенные потери пропускной способности из-за того, что они не загружены полностью во время ожидания подтверждения о приеме предыдущего TCP-окна. Основная проблема состоит в том, что окно не может иметь размер больше, чем 2×16 байт (65 Кб). Разрешая масштабирование TCP-окна мы, тем самым, можем увеличить его размер и таким образом уменьшить потери пропускной способности. Переменная может принимать два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 1 (включено). Дополнительную информацию по этой теме вы найдете в RFC 1323 — TCP Extensions for High Performance.
net.ipv4.tcp_wmem = 4096 16384 4194304 Переменная содержит три числа, которые используются при управлении размерами буферов передачи, выделяемых для каждого сокета. Каждое из значений используется при определенных условиях. Первое значение – минимальный размер буфера передачи для каждого сокета. Системой гарантируется выделение этого пространства при открытии сокета. Обычно это значение равно 4096 байт. Второе значение – размер передающего буфера по-умолчанию. При попытке увеличить размер буфера передачи больше этого ограничения, приложение может столкнуться с «нежеланием» системы выделения большего объема памяти при тяжелых нагрузках. Это может даже привести к потере пакетов при очень высоких нагрузках. Значение по-умолчанию – 16384 байт, или 16 Кб. Будет неразумным попытаться увеличить это значение. Этот параметр перекрывается переменной /proc/sys/net/core/wmem_default, которая используется другими протоколами и, как правило, tcp_wmem должна быть меньше чем /proc/sys/net/core/wmem_default. Третье значение – максимальный размер буфера передачи для отдельного сокета. По-умолчанию – 131072 байт, или 128 Кб. Это достаточно разумное значение и в большинстве случаев вам едва ли придется корректировать его. Однако, если вам придется его увеличивать – помните о существовании переменной /proc/sys/net/core/wmem_max, которая должна быть всегда больше чем tcp_wmem. Эта переменная может дать некоторый прирост производительности на «толстых» каналах, если достаточно корректно используется вместе с переменными tcp_mem и tcp_rmem. tcp_wmem дает наибольший прирост производительности из этих трех переменных. Замечу при этом, что вы практически не получите никакого выигрыша в сетях со скоростью передачи менее 1 Гб. Дополнительную информацию, по настройке переменных, вы найдете в TCP Tuning Guide.
net.ipv4.icmp_echo_ignore_broadcasts = 1 Эта переменная очень близка по смыслу к icmp_echo_ignore_all, только в данном случае будут игнорироваться ICMP сообщения, отправленные на широковещательный или групповой адрес. Вполне очевидно, почему полезно включить этот параметр – защита от smurf атак. Переменная может принимать два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено).
net.ipv4.icmp_ignore_bogus_error_responses = 1 Отдельные маршрутизаторы, вопреки стандартам, описанным в RFC 1122, отправляют фиктивные ответы в широковещательном диапазоне. Обычно эти ошибки заносятся в системный журнал. Если вы не желаете регистрировать их, то включите этот параметр и тем самым сбережете некоторый объем дискового пространства в своей системе. Переменная может принимать два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено).
net.ipv4.icmp_ratelimit = 250 Максимальная частота генерации ICMP-пакетов с типом, указанным в icmp_ratemask (см. icmp_ratemask). Это значение задается в «тиках» и устанавливает временной интервал между ICMP-посылками. Таким образом, значение 0 означает отсутствие ограничений. Обычно 1 «тик» равен 0.01 секунды, так значение 1 в этой переменной ограничивает скорость передачи не более 100 посылок в секунду, а значение 100 – не более 1 посылки в секунду. Значение по-умолчанию – 100, что означает не более 1 ICMP посылки за интервал в 100 «тиков».
net.ipv4.icmp_ratemask = 6168 Маска ICMP типов, на которые накладывается ограничение по частоте генерации переменной icmp_ratelimit. Каждый из ICMP типов маскируется своим битом. icmp_ratemask – это битовая маска, где каждый ICMP тип представлен своим битом. Соответствие между символическим названием ICMP типа и его порядковым номером вы найдете в заголовочном файле netinet/ip_icmp.h (обычно это /usr/include/netinet/ip_icmp.h). За дополнительной информацией обращайтесь к RFC 792 — Internet Control Message Protocol. Математически маска определяется так: где n принимает значения всех типов ICMP, которые должны быть ограничены. Например: Ограничим передачу ICMP Destination Unreachable сообщений. В /usr/include/netinet/ip_icmp.h этому типу соответствует число 3. Подсчитаем значение 2×3, что равно 8. Теперь нужно прибавить это число к имеющейся битовой маске. Допустим, что маска уже равна числу 6160 (в двоичном виде 0001100000010000), тогда результирующая маска получится: 6160 + 8 = 6168 (в двоичном виде 0001100000011000). Перед добавлением маски подобным образом убедитесь сначала, что нужный вам бит сброшен, иначе вы получите неверную маску! К примеру, если у вас маска является числом 256 и вы еще добавите число 256, то это приведет к размаскированию ICMP Echo Request и маскировке 9-го отсутствующего типа ICMP. Значение по-умолчанию – 6168 (в двоичном виде 0001100000011000), что подразумевает наложение ограничений на ICMP Destination Unreachable, ICMP Source Quench, ICMP Time Exceeded и ICMP Parameter Problem, где ICMP Destination Unreachable = 3, ICMP Source Quench = 4, ICMP Time Exceeded = 11 и ICMP Parameter Problem = 12. Таким образом, значение по-умолчанию соответствует выражению: Злоумышленник может «заставить» некоторый маршрутизатор или хост «затопить» жертву ICMP-посылками, передаваемыми в ответ на поддельный ICMP пакет с обратным адресом жертвы. Поэтому очень важно ограничить частоту генерации отдельных видов ICMP-сообщений. На сайте http://www.frozentux.netвы сможете найти небольшую программу ratemask, которая может оказаться полезной при создании маски для переменной icmp_ratemasks или для дешифрации существующей маски.
net.ipv4.igmp_max_memberships = 20 Максимальное число групп на каждый сокет. Значение по-умолчанию – 20 и может быть изменено по мере необходимости.
net.ipv4.conf.all.accept_redirects = 0 Переменная управляет приемом ICMP-сообщений о переадресации. Сообщения ICMP Redirect … используются для уведомления маршрутизаторов или хостов о существовании лучшего маршрута движения пакетов к заданному хосту, который (маршрут) может быть быстрее или менее загружен. Переменная может иметь два значения – 0 (выключено – сообщения о переадресации игнорируются) и 1 (включено – сообщения о переадресации принимаются). Значение по-умолчанию – 1 (включено), однако я посоветовал бы отключать эту опцию, поскольку она далеко небезопасна. В подавляющем большинстве случаев необходимость в переадресации отсутствует, поэтому лучше держать эту переменную выключенной, если конечно вы на 100% не уверены в обратном.
net.ipv4.conf.all.accept_source_route = 0 Переменная разрешает/запрещает «маршрутизацию от источника». Маршрутизация от источника весьма небезопасна. Дополнительную информацию по этой темы вы сможете почерпнуть из ip-param.txt. Переменная может иметь два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 1 (включено).
net.ipv4.conf.all.arp_filter = 0 Включает/выключает связывание IP-адреса с ARP-адресом. Если эта опция включена, то ответ будет передаваться через тот интерфейс, через который поступил запрос. В принципе, было бы не плохо, если бы ответы исходили через тот же интерфейс, через который был получен запрос, однако, в отдельных случаях, это может стать причиной ошибок. Обычно включение этой опции необходимо только в том случае, если на вашем хосте производится управление распределением нагрузки между сетевыми интерфейсами. Значение по-умолчанию – 0 (выключено), поскольку эта опция идет немного вразрез с современным пониманием принципов IP-адресации. Ранее IP-адреса рассматривались как путь к некоторому устройству, в смысле аппаратуры, теперь же их следует рассматривать как отдельную службу доставки, которая должна выдавать ответы на запросы вне зависимости от того на какой интерфейс эти запросы были получены. Дополнительную информацию по данной тематике вы найдете в Guide to IP Layer Network Administration with Linux.
net.ipv4.conf.all.bootp_relay = 0 Переменная разрешает/запрещает форвардинг пакетов с исходящими адресами 0.b.c.d. Демон BOOTP relay должен перенаправлять эти пакеты на корректный адрес. Переменная может иметь два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено). Обработка переменной bootp_relay еще не реализована. Если вы желаете предложить свою реализацию – милости просим! С этой целью можете вступить в контакт с командой разработчиков netdev mailinglist.
net.ipv4.conf.all.log_martians = 0 Переменная включает/выключает функцию журналирования всех пакетов, которые содержат неправильные (невозможные) адреса (так называемые martians – «марсианские» пакеты). Под невозможными адресами, в данном случае, следует понимать такие адреса, которые отсутствуют в таблице маршрутизации. В некоторых ситуациях эта опция позволит получить дополнительную информацию, но вы должны понимать, что эта информация не так подробна как можно было бы подумать. Основными причинами, порождающими записи в системном журнале, могут быть: невозможность переадресации; плохая классификация; ограничения на широковещательные сообщения, или несоответствия в Forwarding Information Base (FIB). Переменная может иметь два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено).
net.ipv4.conf.all.mc_forwarding = 0 Включает/выключает поддержку маршрутизации групповых рассылок для заданного интерфейса. Кроме того, чтобы иметь поддержку маршрутизации групповых рассылок, необходимо собрать ядро с включенной опцией CONFIG_MROUTE. Дополнительно в системе должен иметься демон, осуществляющий групповую маршрутизацию. Его вы можете получить с FTP-сайта AT&T Research… Этот демон реализует протокол DVMRP (от англ. Distance Vector Multicast Routing Protocol – протокол маршрутизации групповых рассылок типа «вектор-расстояние»). Еще один демон маршрутизации групповых рассылок доступен на сайте PIMd. Это реализация «разреженного» протокола PIM (от англ. Protocol Independent Multicast – протокол маршрутизации групповых рассылок, независимый от используемого протокола маршрутизации), или PIM-SM. Там же вы найдете ссылки на другие реализации протоколов PIM-DM (Protocol Independent Multicast-Dense Mode – протокол маршрутизации групповых рассылок, независимый от используемого протокола маршрутизации, «уплотненного» режима) и PIM-SM (Protocol Independant Multicast-Sparse Mode – протокол маршрутизации групповых рассылок, независимый от используемого протокола маршрутизации, «разреженного» режима). Дополнительную информацию по групповой адресации вы найдете в Multicast HOWTO. Групповая адресация используется в тех случаях, когда необходимо выполнить доставку информации сразу к нескольким пунктам назначения. Например, WEB-страничка передается отдельно каждому, кто ее запросил, а если несколько человек решили принять участие в видеоконференции? Есть два пути реализации доставки. Либо каждому участнику отдавать отдельный поток данных (тогда трафик будет таким огромным, что для него может просто не хватить пропускной способности канала), либо использовать групповую рассылку. В этом случае отправитель создает одну дейтаграмму с групповым адресом назначения, по мере продвижения через сеть дейтаграмма будет дублироваться только на «развилках» маршрутов от отправителя к получателям. Переменная может иметь два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено). Обратите внимание – нет никакой необходимости включать эту опцию, если вы желаете лишь получать групповые пакеты. Она необходима только если вы собираетесь перенаправлять групповой трафик через вашу систему.
net.ipv4.conf.all.proxy_arp = 0 Включает/выключает проксирование arp-запросов для заданного интерфейса. ARP-прокси позволяет маршрутизатору отвечать на ARP запросы в одну сеть, в то время как запрашиваемый хост находится в другой сети. С помощью этого средства происходит «обман» отправителя, который отправил ARP запрос, после чего он думает, что маршрутизатор является хостом назначения, тогда как в действительности хост назначения находится «на другой стороне» маршрутизатора. Маршрутизатор выступает в роли уполномоченного агента хоста назначения, перекладывая пакеты от другого хоста. Переменная может иметь два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено). Дополнительную информацию вы найдете в Proxy-ARP mini HOWTO.
net.ipv4.conf.all.rp_filter = 1 Включает/выключает reverse path filter («проверка обратного адреса» – хотя это слишком вольный перевод термина, но мне он кажется наиболее близким по смыслу. прим. перев.) для заданного интерфейса. Смысл этой переменной достаточно прост – все что поступает к нам проходит проверку на соответствие исходящего адреса с нашей таблицей маршрутизации и такая проверка считается успешной, если принятый пакет предполагает передачу ответа через тот же самый интерфейс. Если вы используете расширенную маршрутизацию тем или иным образом, то вам следует всерьез задуматься о выключении этой переменной, поскольку она может послужить причиной потери пакетов. Например, в случае, когда входящий трафик идет через один маршрутизатор, а исходящий – через другой. Так, WEB-сервер, подключенный через один сетевой интерфейс к входному роутеру, а через другой – к выходному (в случае, когда включен rp_filter), будет просто «терять» входящий трафик, поскольку обратный маршрут, в таблице маршрутизации, задан через другой интерфейс. Переменная может иметь два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено). Однако в некоторых дистрибутивах по-умолчанию эта переменная включается в стартовых скриптах на этапе загрузки. Поэтому, если у вас эта переменная включена, а вам надо ее выключить – просмотрите стартовые скрипты в каталоге rc.d. Более детальную информацию об этой переменной вы найдете в RFC 1812 — Requirements for IP Version 4 Routers на страницах 46-49 (секция 4.2.2.11), странице 55 (секция 4.3.2.7) и странице 90 (секция 5.3.3.3). Если вы всерьез занимаетесь проблемами маршрутизации, то вам определенно придется изучить этот документ.
net.ipv4.conf.all.secure_redirects = 1 Включает/выключает режим безопасной переадресации. Если переменная выключена, то будут приниматься любые сообщения ICMP Redirect … от любого хоста из любого места. Если переменная включена, то сообщения о переадресации будут восприниматься только от тех шлюзов (gateways), которые имеются в списке шлюзов по-умолчанию. С помощью этой опции можно избежать большинства ложных переадресаций, которые могут быть использованы для перехвата трафика. Переменная может иметь два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 1 (включено). Обратите внимание – действие этой переменной отменяется переменной shared_media, так что, если вы включаете secure_redirects, то необходимо включить и shared_media.
net.ipv4.conf.all.send_redirects = 1 Включает/выключает выдачу ICMP Redirect … другим хостам. Эта опция обязательно должна быть включена, если хост выступает в роли маршрутизатора любого рода. Как правило ICMP-сообщения о переадресации отправляются в том случае, когда необходимо сообщить хосту о том, что он должен вступить в контакт с другим сервером. Переменная может иметь два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 1 (включено). Если компьютер не выступает в роли маршрутизатора, то эту переменную можно отключить.
net.ipv4.conf.all.shared_media = 1 Включает/выключает признак того, что физическая сеть является носителем нескольких логических подсетей, например, когда на одном физическом кабеле организовано несколько подсетей с различными сетевыми масками. Этот признак используется ядром при принятии решения о необходимости выдачи ICMP-сообщений о переадресации. Переменная может иметь два значения – 0 (выключено) и 1 (включено). Значение по-умолчанию – 0 (выключено). Эта переменная перекрывает действие переменной secure_redirects.
net.ipv4.route.error_burst = 1250 Переменная используется в паре с error_cost для ограничения количества генерируемых сообщений ICMP Unreachable. Эта переменная несет в себе смысл верхнего предела «стоимости» передачи сообщений, в то время как error_cost обозначает «цену» одного сообщения. Когда error_burst «опустошается», то передача сообщений ICMP Unreachable прекращается. Сообщения ICMP Unreachable обычно отсылаются тогда, когда невозможно определить дальнейший маршрут движения пакета. Этому могут быть три причины: 1. Невозможно выполнить передачу хосту. 2. Не известен маршрут к заданному сегменту сети или хосту. 3.Если данный маршрут запрещен набором правил маршрутизации. В этих трех случаях сетевая подсистема генерирует сообщение ICMP Unreachable, свое для каждого случая: 1. ICMP Host Unreachable – когда хост, находящийся в той же сети, что и наш роутер – недоступен (т.е. не отвечает на ARP-запросы. прим. перев.). 2. ICMP Network Unreachable – когда в таблице маршрутизации роутера нет ни одного маршрута, по которому пакет мог бы быть отправлен дальше. 3. ICMP Communication Administratively Prohibited By Filtering – когда пакет не может быть переправлен из-за наличия правил маршрутизации явно запрещающих передачу. Значение по-умолчанию – 500. Учитывая значение по-умолчанию переменной error_cost (100) это соответствует 5-ти сообщениям ICMP Destination Unreachables в секунду.
net.ipv4.route.error_cost = 250 Более подробное описание см. выше error_burst. Основной смысл этой переменной – «цена» одного сообщения ICMP Destination Unreachable. Значение по-умолчанию – 100, что подразумевает передачу не более 5-ти сообщений ICMP Destination Unreachable за 1 секунду (если расчет производить с учетом значения по-умолчанию переменной error_burst).
net.ipv4.ipfrag_high_thresh = 262144 Переменная задает максимальный объем памяти, выделяемый под очередь фрагментированных пакетов. Когда длина очереди достигает этого порога, то обработчик фрагментов будет отвергать все фрагментированные пакеты до тех пор, пока длина очереди не уменьшится до значения переменной ipfrag_low_thresh. Это означает, что все отвергнутые фрагментированные пакеты должны быть повторно переданы узлом-отправителем. Пакеты фрагментируются в том случае, если их размер слишком велик, чтобы быть переданными по данному каналу. Узел-отправитель, в этом случае, «режет» пакеты на более мелкие части и затем передает их одну за другой. На узле-получателе эти фрагменты опять собираются в полноценный пакет. Примечательно, что идея фрагментации пакетов, сама по себе, вещь замечательная, но, к сожалению, может быть использована в весьма неблаговидных целях. Переменная содержит целое число в диапазоне 0 … 2147483647 и означает верхний порог длины очереди фрагментов в байтах. Значение по-умолчанию – 262144 байт, или 256 Кб. Этого количества, как правило, вполне достаточно даже для самых крайних случаев.

Понравилась статья? Поделить с друзьями:
  • Ide error occurred android studio как исправить
  • Icmp error received 6 host unreachable
  • Ide drives installation error
  • Icmp error does not match an existing connection
  • Ide disk read error occurred