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

  • Автор темы Автор темы XTR
  • Дата начала Дата начала

XTR

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

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

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

Заранее спасибо.
 
как происходит "обращение ко внешним ресурсам" ?
 
> В поддержке сказали, что чтобы обойти это надо коннктиться через сокеты.
Сдаётся мне, что в поддержке нагнали, если речь не о прокси.
 
Я сначала тупо сливал страницу с другого сайта так командой 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 (ну или первый).
 
Активист, и какой выход из этой ситуации? Можно ли это обойти на 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: но это тебе ОЧЕНЬ наврятли сделают, это почти не реально)))
 
Активист, таким образом получается, что полноценный выделенный IP может быть только на выделенном сервере? :)
 
гы ... кончайте мудрствовать лукаво - юзайте курл :)
Там есть опция для прямого указания интерфейса.
Находишь так, бывает, хостинг с неск сотнями ip на сервере ...
 
grigori, можно и с curl, я не против. Вы можете привести пример, как это сделать, если Вам не трудно?

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

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

-~{}~ 01.06.07 11:53:

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

функция curl_setopt
 
XTR я по мануалу пишу всегда - там хорошие примеры; решение для Вашей задачи пишите сами - за это деньги и платят
 
grigori, я CURL я постараюсь разобраться, просто хотел уточнить, а действительно ли это поможет, хотя, в любом случае время зря не потеряю :)

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