Свою задачу я в итоге решил при помощи Squid. Может кому пригодится:
# Чтобы не попасть в списки бесплатных прокси, разрешаем http_access только с localhost:
http_access allow localhost
http_access deny all
# Squid по умолчанию слушает порт 3128. Добавляем к нему ещё один (данный пример для двух белых IP):
http_port 3128
http_port 3129
# Создаём два списка контроля доступа с номерами портов в качестве элементов:
acl req1 myport 3128
acl req2 myport 3129
# Перенаправляем с каждого порта на разный IP.
tcp_outgoing_address xxx.yyy.zzz.nnn req1
tcp_outgoing_address xxx.yyy.zzz.mmm req2
Для описанных выше целей решение рабочее.
Хотелось, конечно, организовать работу через один порт 3128 и перенаправлять запросы по имени пользователя и паролю, что сходу что-то не вышло. Делал примерно так:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
(задал два юзера и два пароля)
acl login1 proxy_auth user1
acl login2 proxy_auth user2
tcp_outgoing_address xxx.yyy.zzz.nnn login1
tcp_outgoing_address xxx.yyy.zzz.mmm login1
В итоге - просто любые запросы проходили насквозь. И с паролем, и без пароля...