Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting

Как запустить скрипт с другого IP?

Friday, November 19th, 2010

Как правило, если вы берете VDS или Dedicated сервер, в комплект идет несколько дополнительных IP адресов, обычно 2 или 4, зависит от дата центра. Вы межете без проблем развешивать сайты на разные айпи, управляя записями DNS домена. А как запустить скрипт на не основном ip адресе сервера? Один из вариантов предложил Lorien – использовать прокси сервер – Squid. О том, как установить Squid я писал ранее. Короче говоря часто на одном ипе висит куча скриптов которые дрочат какие-то сервисы время от времени, и чтобы не натыкаться на бан или превышение лимитов API лучше всего распределить нагрузку между доступными ip адресами. Это потребует небольшой модификации скриптов, нужно будет направлять запросы через прокси. “Прозрачно” это можно сделать используя библиотеку socksipy-branch.

Чтобы перенаправлять запросы на другой ип адрес используется следующая хитрая схема : мы направляем запрос на ip:port откуда squid роутит его на айпи используя директиву tcp_outgoing_address.

route script to dedicated ip

Allows you to map requests to different outgoing IP addresses based on the username or source address of the user making the request.
Позволяет вам назначать запрос на другие исходящие IP адреса, основываясь на имени или адресе источника откуда юзер сделал запрос.

Осталось только настроить конфиг Squid’а нужным образом, естественно если ипов больше чем 2а лучше всего потратить 5 минут и написать скрипт который будет генерировать нужную последовательность директив :

# Говорим squid слушать нужные порты
# http_port 20000
# http_port 20001

# Создаём ACL правила
# acl p20000 myport 20000
# acl p20001 myport 20001

# С помощью созданных ACL правил выбираем нужный исходящий IP
# tcp_outgoing_address 78.109.20.226 p20000
# tcp_outgoing_address 78.109.20.227 p20001

Взял отсюда. Немного переделал приблизив скрипт к “боевым” условиям. Список айпи берет из файла ips.txt. Начальный порт задаем в start_port.

Внимание, лучше лишний раз проверить, чтобы на ипах ничего не висело. Делается это с помощью команды : netstat -tulnap

start_port = 2000
ips_list = [ item.strip() for item in open("ips.txt", "r").readlines()]

chunks = ([], [], [])

for num, ip in enumerate(ips_list):
    port = start_port + num
    chunks[0].append('http_port %d' % port)
    chunks[1].append('acl p%d  myport %d' % (port, port))
    chunks[2].append('tcp_outgoing_address %s p%d' % (ip, port))

for group in chunks:
    for line in group:
        print line
    print

print "-------------------------------\n"

Если кто знает более простой способ welcome в комменты. Я задавал это вопрос на freenode #linux (IRC канал), но практичного решения с ходу никто не предложил. Пока что единственный рабочий вариант предложил Lorien.

Настройка своего прокси сервера Squid

Sunday, June 13th, 2010

Бывает банят по ипу социальные сети, или форумы, или нужно работать с нескольких аккаунтов, короче говоря нужен дополнительный айпи. Если есть свой сервер, где-нибудь в европе или США, то реализовать это довольно просто, нужно лишь поставить Squid :

Fedora/Centos : yum install squid
Ubuntu/Debian : sudo apt-get install squid

Поставим его на автозагрузку (при ребуте)

chkconfig squid on

Старт/Стоп/Рестарт (рестарт нужно делать при обновлении конфига)

service squid start
service squid stop
service squid restart

Посмотреть запущен ли Squid можно так :

pgrep squid

Файл конфигурации должен быть тут : /etc/squid/squid.conf
Если, вдруг, его там нет >>> whereis squid и внимательно втыкаем в показанные папки

По дефолту должно все быть настроено, единственное что нужно это указать свой ип с которого планируется пользоваться прокси.

acl my_work src 192.168.1.0/24
http_access allow my_work

Внимательно правите конфиг, там есть небольшая подъебка, которая неопытных пользователей линукса может ввести в ступор.

После всех объявлений идет такая строчка :

# And finally deny all other access to this proxy
http_access deny all

Т.е. запрет доступа от всего что не перечисленно выше, поэтому все настройки доступа нужно прописывать до этого. Если вам все равно что вашей проксей будут пользоваться все – делаете http_access allow all, тем самым разрешая доступ всему что имеет честь законнектится на 3128 порт. Между делом говоря, деволтный порт так же легко меняется в конфиге :

http_port 3128

Подробнее можно прочитать тут. Если у вас поднять файр, то все несколько сложнее, придется прописывать правила. Squid без проблем работает на OpenVZ контейнере, т.е. на VPS/VDS

My blog is Do-Follow


Пишу код, делаю сайты.
Check out my about.me profile!

парсинг сайтов, форумов, интернет магазинов

Want to subscribe?

istinspring twitter account
istinspring facebook account

 Subscribe in a reader Or, subscribe via email:
Enter your email address:  
Find entries :