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

Назначьте IP-адреса программ / процессов

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

Как этого добиться?

Мне подойдет любой вариант (общесистемный или специфичный для PHP / Ruby, с использованием прокси-серверов и т. Д.).

Несколько вариантов:

  • Наверное, самый простой: правило NAT в POSTROUTING с модулем iptables "владелец". Если вы запускаете каждый процесс с собственным именем пользователя, у вас могут быть правила для каждого пользователя, чтобы он выходил с определенным IP.
  • Запускайте каждый процесс внутри контейнера, такого как LXC или Virtuozzo.
  • Создайте сценарий оболочки соединения для ваших приложений, чтобы привязать к IP каждое соединение.

Вы также можете использовать сетевые пространства имен, если это позволяет ядро. как описано здесь http://blog.scottlowe.org/2013/09/04/introduction-linux-network-namespaces/

Наконец, я решил свой конкретный случай с запуском nginx в качестве обратного прокси, доступного только с localhost, используя proxy_bind директива.

Из моих скриптов я должен делать запросы к чему-то вроде http: // локальный хост / nginx-прокси-ip-N / https: //api.example.com/? q = 123