Задать внешний IP для скрипта

XTR

Новичок
Задать внешний IP для скрипта

На хостинге мастерхост.ру заказал внешний IP для сайта (виртуальный хостинг). IP дали, но скрипты сайта обращаются ко внешним ресурсам не с выделенного IP, а с IP сервера, что никак не может устраивать.
В поддержке сказали, что чтобы обойти это надо коннктиться через сокеты.

Кто-нибудь может подсказать конкретную технологию такого обхода?

Заранее спасибо.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
как происходит "обращение ко внешним ресурсам" ?
 

SiMM

Новичок
> В поддержке сказали, что чтобы обойти это надо коннктиться через сокеты.
Сдаётся мне, что в поддержке нагнали, если речь не о прокси.
 

XTR

Новичок
Я сначала тупо сливал страницу с другого сайта так командой file_get_contents.
Через сокеты написал пробный скрипт, но IP не изменился:

$handle=fsockopen("www.yandex.ru", 80);
fputs ($handle, "GET / HTTP/1.1\r\n");
fputs ($handle, "Host: www.yandex.ru\r\n");
fputs ($handle, "Connection: close\r\n");
fputs ($handle, "\r\n");

while (!feof($handle)) {echo (htmlspecialchars(fgets($handle, 1000))); }

kruglov, я читал вчера про эти команды, но не до конца понял. Вас не затруднит привести конкретный пример использования? :)
 

Активист

Активист
Команда форума
SiMM +1 (искл: прокси не причем)

Там тебе сделали следующее:
Для интерфейса прописали дополнительный ip адрес, в результате, для входа на твой сайт должно быть достаточно набрать твой ip адрес, но вот беда =) Посколько это дополнительный ип для сетевого интерфейса, то его можно просто слушать для ВХОДЯЩЕГО трафика, но его не будет для исходящего трафика, посколько для ИСХОДЯЩЕГО трафика используется основной IP (ну или первый).
 

XTR

Новичок
Активист, и какой выход из этой ситуации? Можно ли это обойти на PHP или надо требовать выделения полноценно работающего IP (если это реально)?
 

Активист

Активист
Команда форума
Пример
192.168.1.1 (основной, primary)
192.168.1.2 (дополнительный, alias)
192.168.1.3 (дополнительный, alias)

Входящие соединение:
xxx.xxx.xxx.xxx syn->192.168.1.3, syn/ack -> xxx.xxx.xxx.xxx
...
...
Где xxx.xxx.xxx.xxx - твой ip адрес

С точки зрения сервера, имеющего три IP, исходящие соединения на некий адрес yyy.yyy.yyy.yyy ни как не сзязано с apache (виртуальным хостом) и тем более твоим скриптом, следовательно, будет использоваться основной (primary) ip.
syn 192.168.1.1 -> yyy.yyy.yyy.yyy
syn/ack yyy.yyy.yyy.yyy->192.168.1.1

Твою проблему можно решить на уровне фаирвола если:
php запущен от твого имени (используется suphp), указав определенный роутинг для владельца пакета (тоесть тебя) и направлять исх. запросы с дополнительного IP 192.168.1.3

Примечания: вместо локальных IP имелись ввиду IP адреса глобальной сети и взяты для примера.

PS: но это тебе ОЧЕНЬ наврятли сделают, это почти не реально)))
 

XTR

Новичок
Активист, таким образом получается, что полноценный выделенный IP может быть только на выделенном сервере? :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
гы ... кончайте мудрствовать лукаво - юзайте курл :)
Там есть опция для прямого указания интерфейса.
Находишь так, бывает, хостинг с неск сотнями ip на сервере ...
 

XTR

Новичок
grigori, можно и с curl, я не против. Вы можете привести пример, как это сделать, если Вам не трудно?

Кстати, всем большое спасибо за подробные ответы! Я даже не ожидал :)
 

Активист

Активист
Команда форума
Вопрос про курл не стоял) А вопрос как сделать - нам же не пояснили, каким образом идет подключение, может быть там fopen();

А про хорошую опцию в курле не знал)

-~{}~ 01.06.07 11:53:

CURLOPT_INTERFACE: Имя используемого сетевого интерфейса. Может быть именем интерфейса, IP адресом или именем хоста.

функция curl_setopt
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
XTR я по мануалу пишу всегда - там хорошие примеры; решение для Вашей задачи пишите сами - за это деньги и платят
 

XTR

Новичок
grigori, я CURL я постараюсь разобраться, просто хотел уточнить, а действительно ли это поможет, хотя, в любом случае время зря не потеряю :)

Еще раз всем большое спасибо! ;)
 
Сверху