Установка и настройка xt_NAT

Приведу пример установки и настройки xt_NAT в Ubuntu Server 14.04 с версией ядра 4.4.0-142. На новых версиях ядра xt_NAT может не работать. По словам разработчика должно работать на Linux Kernel 3.18 и 4.1. Чтобы работало на новых версиях ядра, можно найти патчи.

Читать далее «Установка и настройка xt_NAT»

Блокировка SPAM за NAT сервером

В этой статье я приведу пример обнаружения и блокировки рассылки спам сообщений за NAT сервером.

Читать далее «Блокировка SPAM за NAT сервером»

Изменение gc_thresh в Linux

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

Читать далее «Изменение gc_thresh в Linux»

Модули NAT для VPN, FTP, SIP

Допустим на Linux сервере настроен SNAT или маскарадинг, допустим как я описывал в статье Настройка маскарадинга (NAT) в Ubuntu. Но если за NAT много клиентов подключается к внешним серверам PPTP, FTP, SIP, то у них будут проблемы с подключением.

Читать далее «Модули NAT для VPN, FTP, SIP»

Настройка Hairpin NAT на RouterOS (Mikrotik)

В этой статье я приведу пример настройки Hairpin NAT на RouterOS (Mikrotik).

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

Читать далее «Настройка Hairpin NAT на RouterOS (Mikrotik)»

Разница между MASQUERADE и SNAT

В этой статье я кратко опишу разницу между MASQUERADE и SNAT.

MASQUERADE. Менее быстрая маршрутизация чем SNAT при массовых запросах, так как для каждого нового соединения определяется IP адрес на внешнем сетевом интерфейсе (WAN). Отлично подходит для маршрутизаторов домашнего использования и когда меняется IP адрес на WAN интерфейсе.
Читать далее «Разница между MASQUERADE и SNAT»

Причина увеличения RX overruns на сетевом адаптере

Заметил однажды на одном из серверов доступа, что немного растет значение RX overruns.

Выполнил несколько раз команды (где p2p1 и p2p2 — имя сетевых интерфейсов):

ifconfig p2p1
ifconfig p2p2

Увеличивалось только значение RX overruns, на 10 пакетов каждую секунду, при трафике около 2Gb/s (100 000 пакетов в секунду).
На сервере был установлен сетевой адаптер «HP NC552SFP 10Gb 2-Port Ethernet Server Adapter» с сетевым контроллером от Emulex.

Посмотрев размер максимального и текущего буфера:

ethtool -g p2p1
ethtool -g p2p2

Обнаружил, что буферы установлены на максимум, TX буфер — 4096, а максимально возможный RX буфер был только 512.
Смотрите также мою статью — Изменение TX и RX буферов сетевых интерфейсов в Linux

Посмотрев правильно ли распределены прерывания сетевой платы по ядрам процессора:

grep p2p1 /proc/interrupts

Обнаружил что у сетевого адаптера 4 IRQ прерывания максимум, и irqbalance соответственно их распределил на 4 ядра, а ядер то 24.

Проблему решил заменой сетевого адаптера на более дорогой — «665249-B21 Контроллер HP Ethernet 10Gb 2-port 560SFP+ Adapter» с сетевым контроллером Intel 82599.
После этого ошибка не наблюдалась, RX и TX буферы были 4096, а IRQ распределено на все 24 ядра.
Спустя пару дней, счетчики ошибок оставались по нулям:

p2p1      RX packets:62535001155 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36343078751 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:77395016742081 (77.3 TB)  TX bytes:10991051263063 (10.9 TB)

p2p2      RX packets:35672087256 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58598868464 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:10996254475480 (10.9 TB)  TX bytes:73378418623349 (73.3 TB)

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

Смотрите также мою статью Настройка сети в Linux

Мониторинг Linux ISG в Zabbix

Сегодня захотелось сделать мониторинг Linux ISG сессий в Zabbix.

Введя команду на одном из серверов:

/opt/ISG/bin/ISG.pl show_count

Увидел следующее:

Approved sessions count: 2021
Unapproved sessions count: 2

Zabbix агент на сервере уже был установлен, поэтому открыл его конфигурационный файл (в редакторе nano клавиши Ctrl+X для выхода, а y/n для сохранения или отмены изменений):

nano /etc/zabbix/zabbix_agentd.conf

Придумал и добавил следующий код:

UserParameter=isg.approved, /opt/ISG/bin/ISG.pl show_count | grep "Approved sessions count:" | awk '{print $4}'
UserParameter=isg.unapproved, /opt/ISG/bin/ISG.pl show_count | grep "Unapproved sessions count:" | awk '{print $4}'

Разрешим работу Zabbix агента под root пользователем указав:

AllowRoot=1

Перезапустим Zabbix агент чтобы применить изменения:

sudo /etc/init.d/zabbix-agent restart

На Zabbix сервере создадим шаблон ISG, добавим в него элементы данных, указав тип — Zabbix агент, а ключи: isg.approved, isg.unapproved.
Создадим графики для созданных элементов данных.

Применим шаблон к нужным узлам сети.

Готово.

Решение ошибки «nf_conntrack: table full, dropping packet»

Заметил однажды в Ubuntu Server 14.04 LTS настроенного как роутер, в файле /var/log/kern.log следующую ошибку:

Читать далее «Решение ошибки «nf_conntrack: table full, dropping packet»»