Назад | Перейти на главную страницу

Привязать процесс или пользователя к определенному IP (Linux)

На моем сервере 3 пользователя без полномочий root, и я хочу дать каждому из них разные IP-адреса (у меня несколько IP-адресов на одном сетевом интерфейсе). Например, у пользователя user1 будет 192.168.1.2, у пользователя user2 - 192.168.1.3 и так далее. Или, если это невозможно, как я могу привязать конкретный процесс к данному IP-адресу (я предполагаю, что это можно сделать с помощью iptables, но как?). Спасибо.

iptables -t nat -A POSTROUTING -m owner --uid-owner user1 -j SNAT --to-source 192.168.1.2
iptables -t nat -A POSTROUTING -m owner --uid-owner user2 -j SNAT --to-source 192.168.1.3
iptables -t nat -A POSTROUTING -m owner --uid-owner user3 -j SNAT --to-source 192.168.1.4

Вы обязаны убедиться, что (а) вы не используете иным образом цепочку POSTROUTING nat, чтобы эти правила не конфликтовали ни с чем другим, и (б) все эти IP-адреса присутствуют на вашем сетевом адаптере (вы не будете слышу много ответов иначе).

Это также повлияет только на трафик, исходящий локально от процессов, принадлежащих этим пользователям. Если это пользователи настраивают демонов прослушивания сети, потребуется другой подход для обработки ответов, и если сервер действует как маршрутизатор, это не сработает; но вы не сказали, что применимо одно из этих обстоятельств, поэтому я не рассматривал эти вопросы.