воскресенье, 10 декабря 2017 г.

Как "привязать" исходящий трафик некоторого приложения к определенному source IP

Часто сказки народов севера начинаются со слова "как". Название статьи тоже начинается со слова "как" - сейчас поясню, что это название под собой подразумевает.
Краткое описание задачи - есть прокси сервер (haproxy), на котором работают несколько публикаций, каждая на своем IP адресе. Необходимо проверить работоспособность TLS бэкенда одной из публикации. Казалось бы все просто:

$ openssl s_client -connect backend_ip:port -showcerts

ОС попытается открыть соединение с основного IP сервера, но в нашем случае нужно соединение открыть с IP публикации. Для telnet есть возможность указать адрес, с которого нужно установить соединение:

$ telnet -b server_ip backend_ip port

А для openssl - нет. Можно выкрутиться с помощью iptables - сделать банальный source NAT. Чтобы ненароком не затронуть остальные коннекты и, как следствие, не усложнять правило условиями - добавим ограничение по UID пользователя:

# iptables -t nat -A POSTROUTING -m owner --uid-owner user_id -j SNAT --to-source server_ip


Как видите, можно легко привязать к определенному IP bash скрипт или сделать обертку для запуска ПО, которое лишено возможности выбора source IP.

суббота, 21 октября 2017 г.

Медленная синхронизация времени.

Ситуация была следующая: старый сервер на Suse 11, время ушло на несколько минут вперед. Поправить время скачком совсем не вариант, т.к. на нем финансовое приложение, и что может получиться - одному богу известно. Быстрое гугление не дало результатов, пришлось читать маны. Засим выкладываю свой рецепт.

Ntpd нужно потушить и запустить руками:

ntpd -g -x -d

 Где:
-g - стандартно ntpd не будет синхронизировать время, если есть большая разница времени между сервером и клиентом, по умолчанию это разница установлена в 1000с. Данная опция убирает это ограничение.
-x - ntpd подгоняет плавно время, если смещение меньше порогового значения (по умолчанию 128мс), если больше - выставляет скачком. Данная опция заставляет ntpd подгонять плавно время во всех случаях.
-d - режим отладки, просто больше выводится информации в консоль.

Время синхронизации зависит от значений minpoll\maxpoll - интервал опроса. При стандартном minpoll 6 (секунды, количество составляет степень 2, т.е. 64с) подстройка времени занимает 2000 секунд на каждую секунду смещения.