Несколько внешних IP для сервера

Antony69
На сайте с 16.09.2004
Offline
146
1132

Есть сервер с Red Hat Enterprise Linux 3.0 возможно ли настроить его таким образом, чтобы скрипты, которые исполняются на сервере работали через разные IP-адреса? Сейчас имеется несколько IP-адресов, но они работают только на "вход" (т.е. стандартная услуга хостинг-провайдера, когда предоставляется несколько IP для доменов). Как сделать так, чтобы они могли работать и на "выход"?

Заметки SEO аналитика (http://www.seonotes.ru)
М
На сайте с 01.12.2005
Offline
73
#1
Antony69:
Есть сервер с Red Hat Enterprise Linux 3.0 возможно ли настроить его таким образом, чтобы скрипты, которые исполняются на сервере работали через разные IP-адреса? Сейчас имеется несколько IP-адресов, но они работают только на "вход" (т.е. стандартная услуга хостинг-провайдера, когда предоставляется несколько IP для доменов). Как сделать так, чтобы они могли работать и на "выход"?

Есть:-) сам над этим думал не так давно. Приложение которое устанавливает исходящее соединение должно выбрать с какого ip это будет сделано. Для каждого приложения настройки разные. Обычно ip указывается приложением во время привязки к сокету (при установлении соединения)

Cервис для оптимизаторов Optimizer Desktop (http://jdev.ru/od/?utm_source=forum.se.ru&utm_medium=signature): мониторинг позиций, учет ссылок. Программа для оптимизаторов и вебмастеров OptiSuit (http://optisuit.ru/?utm_source=forum.se.ru&utm_medium=signature): Optimizer Desktop на Вашем компьютере
A
На сайте с 23.10.2003
Offline
196
#2

Можно настроить маскарадинг в iptables. Например по порту - все что идет на 80 порт, будет идти с одного IP, все что на 25-ый с такого-то.

андроид ТВ (http://qway.com.ua/android_tv) и экшн камеры (qway.com.ua/action-cameras) в Украине.
K
На сайте с 20.09.2006
Offline
32
#3
absolut:
Можно настроить маскарадинг в iptables. Например по порту - все что идет на 80 порт, будет идти с одного IP, все что на 25-ый с такого-то.

Точнее сказать форвардинг или редирект, а вообще идея верная!

Про настройки скажу.... где к примеру у PHP такая настройка?! Я лично никогда не видел.

Shema
На сайте с 01.12.2005
Offline
176
#4
kioit:
где к примеру у PHP такая настройка?! Я лично никогда не видел.

Это надо делать средствами firewall (ipfw/iptables).

Студия Design Coda (http://www.designcoda.ru/). Личные контакты: +7(903)1367564, skype:andrey.oshemkov, telegram:@oshemkov. WMID: 492025973671 (https://passport.webmoney.ru/asp/certview4.asp?wmid=492025973671), делаем и рекламируем сайты, мобильные приложения, ботов для Telegram.
Antony69
На сайте с 16.09.2004
Offline
146
#5
Мишган:
Есть:-) сам над этим думал не так давно. Приложение которое устанавливает исходящее соединение должно выбрать с какого ip это будет сделано. Для каждого приложения настройки разные. Обычно ip указывается приложением во время привязки к сокету (при установлении соединения)

А примеров скриптов на PHP или Perl не встречалось? Допустим мне к базе данных нужно приконнектится с определенным IP (с другим не пустит).

Shema
На сайте с 01.12.2005
Offline
176
#6

На самом деле можно написать прогу, которая обойдётся без маскарада.

При желании изучите исходники программы ping, там есть опция -I которая позволяет выбрать интерфейс от которого работать.

На Перле, возможно, тоже можно, но мне не приходилось пока такого писать.

Antony69
На сайте с 16.09.2004
Offline
146
#7

Мне изначально хотелось решить проблему на Perl и это получилось! Создав соединение на уровне сокета, в его свойствах можно указать, какой из локальных адресов и через какой порт использовать.

A
На сайте с 23.10.2003
Offline
196
#8

Покажите пример, если не сложно :)

Antony69
На сайте с 16.09.2004
Offline
146
#9

Пожалуйста:

#!/usr/bin/perl -w

use IO::Socket;

unless (@ARGV > 1) { die "usage: $0 host document ..." }

$host = @ARGV;

$EOL = "\015\012";

$BLANK = $EOL x 2;

$ip = "xxx.xxx.xxx.xxx";

foreach $document ( @ARGV ) {

$remote = IO::Socket::INET->new( Proto => "tcp",

PeerAddr => $host,

PeerPort => "http(80)",

LocalAddr => "$ip"

);

unless ($remote) { die "cannot connect to http daemon on $host" }

$remote->autoflush(1);

print $remote "GET $document HTTP/1.0" . $BLANK;

while ( <$remote> ) { print }

close $remote;

}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий