NAT преобразование сетевых адресов

NAT (Network Address Translation - преобразование сетевых адресов) — это механизм в сетях Порты TCP. Что такое TCP / IP порт/IP, позволяющий преобразовывать IP- адреса транзитных пакетов. Также имеет названия IP Masquerading, Network Masquerading и Native Address Translation.

Терминология NAT:

Читайте также: Настройка iptables и NAT, sysctl утилита, предназначенная для управления параметрами ядра

Тюнинг NAT в Linux

Операция NAT является одной из самых ресурсоёмких. NAT- сервер запоминает все соединения, которые через него проходят и сохраняет эти сведения в ОЗУ в памяти в специальной таблице. Когда сессия закрывается, информация о ней из таблицы удаляется. Размер этой таблицы фиксирован. Если сеть большая нужно настроить размеры таблицы хранения отслеживаемых соединений.

  1. Посмотреть текущий размер таблицы NAT утилитой sysctl:
    # sysctl net.netfilter.nf_conntrack_max
    net.netfilter.nf_conntrack_max = 65536
    или
    # sysctl -a | grep conntrack_max
    net.netfilter.nf_conntrack_max = 65536
    net.ipv4.netfilter.ip_conntrack_max = 65536
    net.nf_conntrack_max = 65536
  2. Посмотреть заполненность таблицы
    # sysctl net.netfilter.nf_conntrack_count
    net.netfilter.nf_conntrack_count = 654
  3. Если будет принято решение об увеличение размера таблицы (sysctl утилита, предназначенная для управления параметрами ядра -w net.netfilter.nf_conntrack_max=ваше_значение), также нужно пропорционально увеличить hash- таблицу, в которой хранятся списки conntrack- записей. Размер hash- таблицы задается по правилам, которые например описаны здесь Conntrack tuning. Размер hash- таблиц задается в файле /sys/module/nf_conntrack/parameters/hashsize, задать новый размер можно при помощи утилиты echo, например
    # echo 16384 >  /sys/module/nf_conntrack/parameters/hashsize