Часто сказки народов севера начинаются со слова "как". Название статьи тоже начинается со слова "как" - сейчас поясню, что это название под собой подразумевает.
Краткое описание задачи - есть прокси сервер (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.
Краткое описание задачи - есть прокси сервер (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.