@KARLS0N

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

В Linux имеется два сетевых адреса на одном интерфейсе 192.168.2.10 и 192.168.2.20. По умолчанию все программы работают через IP 192.168.2.10, но мне нужно запустить программу snmpwalk чтобы она коннектилась к роутеру с адреса 192.168.2.20. Маршруты менять нельзя потому что другие программы могут перестать работать.
Вопрос - как это сделать?
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 6
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
мне нужно запустить программу snmpwalk чтобы она коннектилась к роутеру с адреса 192.168.2.20

Думаю, что вот это должно помочь: echo clientaddr 192.168.2.20 >> ~/.snmp/snmp.conf
См.
В общем случае нет одного рецепта: приложение должно само сделать bind для сокета с которого оно отправляет запросы, каждое приложение делает это по-своему (или не делает совсем).
Ответ написан
@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
В качестве исходящено интерфейса используется интерфейс, который обеспечивает маршрут к запрашиваемому ip.
Если вы хотите это "сломать" и понимаете, что делаете - можно попробовать перенаправить трафик через определенный интерфейс - например через iproute2 - он позволяет например маркированный в iptables трафик перенаправить в определенный интерфейс.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы