Настройка 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»»

Решение проблемы Asterisk — нет звука при звонке через NAT

Заметил недавно что нет звука при звонке с IP-телефона на другой IP-телефон которые оба находились за одним и тем же NAT (роутером).

По этому в конфигурации sip.conf для этих аккаунтов нужно указать что они за NAT, указав параметр:

nat=force_rport,comedia

Хочу заметить что значение yes для nat уже устарело начиная с версии Asterisk 11, по этому правильно будет как указанно выше.

И указать также на no для параметра directmedia, чтобы Asterisk не отправлял пакеты на тот же порт из которого их получил (что в моём случае и произошло, оба телефона подключались к Asterisk с одного IP, с одинаковыми портами):

directmedia=no

Все.

Проброс портов на маршрутизаторах Mikrotik

Чтобы пробросить порт на маршрутизаторе Mikrotik, необходимо открыть меню «IP»«Firewall», выбрать вкладку «NAT» и добавить новое правило нажав «Add new» или «+«.

Читать далее «Проброс портов на маршрутизаторах Mikrotik»