@KARLS0N

Как запустить приложение в Linux со второго IP адреса?

В Linux имеется два сетевых адреса на одном интерфейсе 192.168.2.10 и 192.168.2.20. По умолчанию все программы работают через IP 192.168.2.10, но мне нужно запустить программу snmpwalk чтобы она коннектилась к роутеру с адреса 192.168.2.20. Маршруты менять нельзя потому что другие программы могут перестать работать.
Вопрос - как это сделать?
  • Вопрос задан
  • 287 просмотров
Пригласить эксперта
Ответы на вопрос 6
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
мне нужно запустить программу snmpwalk чтобы она коннектилась к роутеру с адреса 192.168.2.20

Думаю, что вот это должно помочь: echo clientaddr 192.168.2.20 >> ~/.snmp/snmp.conf
См.
В общем случае нет одного рецепта: приложение должно само сделать bind для сокета с которого оно отправляет запросы, каждое приложение делает это по-своему (или не делает совсем).
Ответ написан
Комментировать
hempy80
@hempy80
Внесистемный администратор
linux network namespaces
Ответ написан
Комментировать
@hellfleet
IPTABLES -t mangle -A OUTPUT -m owner --uid-owner <тут id овнера процесса>  -j MARK --set-mark 2


Далее делаете таблицу роутинга
ip route add default via DE.SI.RED.IP table 120

Далее правило
ip rule add fwmark 2 lookup 120

что-то типа этого
Ответ написан
Комментировать
@Karpion
Продвинутые программы, написанные умными программистами - имеют ключ для выбора IP-адреса. Особенно программы с открытым кодом - там если кому-то требуется, он сам дописывает и с согласия автора добавляет правки в официальный исходник.

Если программа так не умеет - можно запустить вирт.машину (или полноценную, или что-то типа Jail во FreeBSD) так, чтобы программа, запущенная внутри вирт.машины, могла воспользоваться только нужным IP-адресом.

И наконец, можно организовать NAT для принудительной замены исходящего IP-адреса. Проблема в том, как отделить нужный трафик для заворачивания его в NAT-машину - это надо копать отдельно. Возможно, тут можно выделить трафик по TCP/UDP-порту. А можно включать NAT только на время работы нужной программы.
Ответ написан
Комментировать
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
В качестве исходящено интерфейса используется интерфейс, который обеспечивает маршрут к запрашиваемому ip.
Если вы хотите это "сломать" и понимаете, что делаете - можно попробовать перенаправить трафик через определенный интерфейс - например через iproute2 - он позволяет например маркированный в iptables трафик перенаправить в определенный интерфейс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 12:50
1000 руб./в час
25 апр. 2024, в 12:23
2500 руб./за проект