Мы используем службу, которая выделяет нам X запросов на каждый IP-адрес и позволяет нам настроить 5 IP-адресов с таким лимитом (я знаю ... кажется глупым, что они не могли просто увеличить лимит в 5 раз на одном IP-адресе).
Представьте, что у меня есть Linux-сервер со следующим адресом в Интернете: 66.249.90.104 - это IP-адрес Google, а не мой ... так что не стесняйтесь пытаться взломать его :)
Я настраиваю apache + mod_proxy в качестве прокси-сервера для пересылки (ProxyRequests On). то есть вы можете настроить firefox для использования 66.249.90.104:8080 в качестве прокси, и весь трафик firefox будет выводиться как 66.249.90.104.
Все идет нормально.
Проблема:
Теперь я добавляю дополнительные интерфейсы псевдонимов, чтобы результат выглядел так:
eth0: 66.249.90.104
eth0: 1 66.249.90.105
eth0: 2 66.249.90.106
eth0: 3 66.249.90.107
eth0: 4 66.249.90.108
Я запускаю apache + mod_proxy (один экземпляр apache), который связывается со всеми интерфейсами, но независимо от того, к какому адресу я подключаюсь для использования прокси-сервера пересылки, весь трафик уходит в Интернет как 66.249.90.104
Я также пробовал запустить 5 разных apache, каждый из которых привязан только к собственному интерфейсу, но он по-прежнему отправляет исходящий запрос через 66.249.90.104.
Я надеялся заставить его работать следующим образом:
Я подключаюсь к 66.249.90.108 и делаю запрос прокси, и он выходит как 66.249.90.108.
Я подключаюсь к 66.249.90.107 и делаю запрос прокси, и он выходит как 66.249.90.107.
и т.п.
Кто-нибудь еще сталкивался с этой проблемой? Обратным решением было бы просто запустить apache на 5 отдельных ящиках, но я бы предпочел, чтобы все работало с одним ящиком.
Спасибо!
Похоже, что mod_proxy не имеет возможности выбрать исходный IP-адрес при открытии сокета. Однако вы можете использовать iptables для трафика SNAT от пользователя к пулу адресов.
iptables -A POSTROUTING -m owner --uid-owner httpd -j SNAT --to-source 66.249.90.104-66.249.90.108
IIRC, он будет распределяться через пул при каждом отображении соединения, поэтому все должно быть равномерно разделено. Если вам действительно нужно контролировать, какие запросы идут куда, вы можете попробовать запустить несколько экземпляров apache под разными пользователями и сопоставить их с отдельными правилами.
Взгляните на Linux Advanced Routing and Traffic Control HOWTO, в частности на этот страница. Возможно, вы захотите оставить маршрутизацию ядру, которое знает об этом, а не apache, который заботится об уровне «приложения».