внешние и внутренние IP адреса

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
chudinov
проходил мимо

внешние и внутренние IP адреса

Непрочитанное сообщение chudinov » 2009-10-12 11:19:22

на сервере используются 7 IP адресов

содержимое rc.conf:

Код: Выделить всё

defaultrouter="89.188.108.197"
ifconfig_em0="inet 89.188.108.198  netmask 255.255.255.252"
ifconfig_em0_alias0="inet 217.65.6.145  netmask 255.255.255.255"
ifconfig_em0_alias1="inet 217.65.6.146  netmask 255.255.255.255"
ifconfig_em0_alias2="inet 217.65.6.147  netmask 255.255.255.255"
ifconfig_em0_alias3="inet 217.65.6.148  netmask 255.255.255.255"
ifconfig_em0_alias4="inet 217.65.6.149  netmask 255.255.255.255"
ifconfig_em0_alias5="inet 217.65.6.150  netmask 255.255.255.255"

Код: Выделить всё

# ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        inet 89.188.108.198 netmask 0xfffffffc broadcast 89.188.108.199
        inet 217.65.6.145 netmask 0xffffffff broadcast 217.65.6.145
        inet 217.65.6.146 netmask 0xffffffff broadcast 217.65.6.146
        inet 217.65.6.147 netmask 0xffffffff broadcast 217.65.6.147
        inet 217.65.6.148 netmask 0xffffffff broadcast 217.65.6.148
        inet 217.65.6.149 netmask 0xffffffff broadcast 217.65.6.149
        inet 217.65.6.150 netmask 0xffffffff broadcast 217.65.6.150
        ether 00:30:48:90:51:e2
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
em1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        ether 00:30:48:90:51:e3
        media: Ethernet autoselect
        status: no carrier
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000

на каждом IP висит по одному домену. К сайтам можно обращаться как по домену так и по ip.
на сервере в работе используются php скрипты задача которых делать запросы с стороннему хосту и результат записывать в БД.
такие скрипты работают по cron на каждом таком сайте.
Проблема в том, что вне зависимости от того, на каком домене запускается скрипт, то внешний хост (к которому обращаются скрипты) определяет мой IP как 89.188.108.198
даже если на 89.188.108.198 нет ни одного сайта.
Грубо говоря, есть выполнить 217.65.6.145/test.php то для хоста к которому я обращаюсь мой хост определиться как 89.188.108.198

Один из админов сказал что это кривые настройки апача, но я пробовал выключать апач и запускать test.php из консоли - результат один, я для внешнего хоста представляюсь как один IP 89.188.108.198
Подскажите плиз, как настроить freebsd чтобы при выполнении php скрипта (который делает file_get_contents($request); на внешний хост) я представлялся именно тем IP на котором "физически лежит" php скрипт? т.е. если я запущу 217.65.6.145/test.php то для внешнего хоста я должен быть 217.65.6.145, а если запускаю на 217.65.6.150/test.php, то соответственно как 217.65.6.150
Последний раз редактировалось paradox 2009-10-12 11:25:21, всего редактировалось 1 раз.
Причина: еще один пост без тегов и его могут просто игнорить

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: внешние и внутренние IP адреса

Непрочитанное сообщение terminus » 2009-10-12 11:26:37

Код: Выделить всё

defaultrouter="89.188.108.197"
ifconfig_em0="inet 89.188.108.198 netmask 255.255.255.252"
ifconfig_em0_alias0="inet 217.65.6.145 netmask 255.255.255.255"
ifconfig_em0_alias1="inet 217.65.6.146 netmask 255.255.255.255"
ifconfig_em0_alias2="inet 217.65.6.147 netmask 255.255.255.255"
ifconfig_em0_alias3="inet 217.65.6.148 netmask 255.255.255.255"
ifconfig_em0_alias4="inet 217.65.6.149 netmask 255.255.255.255"
ifconfig_em0_alias5="inet 217.65.6.150 netmask 255.255.255.255"
почему у вас алиасы не из того же диаразона что и основной адрес?
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Sadok123
сержант
Сообщения: 179
Зарегистрирован: 2008-09-04 10:59:32

Re: внешние и внутренние IP адреса

Непрочитанное сообщение Sadok123 » 2009-10-12 12:07:01

terminus писал(а):

Код: Выделить всё

defaultrouter="89.188.108.197"
ifconfig_em0="inet 89.188.108.198 netmask 255.255.255.252"
ifconfig_em0_alias0="inet 217.65.6.145 netmask 255.255.255.255"
ifconfig_em0_alias1="inet 217.65.6.146 netmask 255.255.255.255"
ifconfig_em0_alias2="inet 217.65.6.147 netmask 255.255.255.255"
ifconfig_em0_alias3="inet 217.65.6.148 netmask 255.255.255.255"
ifconfig_em0_alias4="inet 217.65.6.149 netmask 255.255.255.255"
ifconfig_em0_alias5="inet 217.65.6.150 netmask 255.255.255.255"
почему у вас алиасы не из того же диаразона что и основной адрес?
а какая разница? алиасы прописаны верно...

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: внешние и внутренние IP адреса

Непрочитанное сообщение terminus » 2009-10-12 12:16:36

непонятно как маршрутизация бедет работать при такой настройке.

если прописывается субнет отличный от того что на основном адартере то маски должны быть другими:

Код: Выделить всё

ifconfig_em0="inet 89.188.108.198 netmask 255.255.255.252"
ifconfig_em0_alias0="inet 217.65.6.145 netmask 255.255.255.0"
ifconfig_em0_alias1="inet 217.65.6.146 netmask 255.255.255.255"
ifconfig_em0_alias2="inet 217.65.6.147 netmask 255.255.255.255"
ifconfig_em0_alias3="inet 217.65.6.148 netmask 255.255.255.255"
ifconfig_em0_alias4="inet 217.65.6.149 netmask 255.255.255.255"
ifconfig_em0_alias5="inet 217.65.6.150 netmask 255.255.255.255"
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: внешние и внутренние IP адреса

Непрочитанное сообщение skeletor » 2009-10-12 13:51:18

согласен с terminus, маски как-то не соответствуют действительности.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: внешние и внутренние IP адреса

Непрочитанное сообщение vadim64 » 2009-10-12 14:30:58

на каждом IP висит по одному домену. К сайтам можно обращаться как по домену так и по ip.
Я думаю нужно чтобы автор уточнил, что именно он подразумевает под словом "домен" , и чтобы он посмотрел в сторону VirtualHosts.
Для апача 1.3

Код: Выделить всё

$ tail -31 /usr/local/etc/apache/httpd.conf
### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
#NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
$
Не уверен, но можно попробывать реализовать поставленную задачу в границах httpd.conf
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: внешние и внутренние IP адреса

Непрочитанное сообщение hizel » 2009-10-12 14:31:03

а что вы паритесь?
у прова скажем написанно

Код: Выделить всё

route add 217.65.6.144/29 89.188.108.198
и все в норме у топикстартера

что касается php скриптов , то если они биндятся на INADDR_ANY то берется первый попавшийся, скорее всего адрес в сторону дефолта
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

chudinov
проходил мимо

Re: внешние и внутренние IP адреса

Непрочитанное сообщение chudinov » 2009-10-12 15:01:45

в настрйках апача VirtualHost указаны IP адреса для каждого домена.
Повторюсь, если апач остановлен, скрипт запускаю по ssh и результат тот же
настройки httpd.conf не влияют на процесс

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: внешние и внутренние IP адреса

Непрочитанное сообщение vadim64 » 2009-10-12 15:12:04

на сервере в работе используются php скрипты задача которых делать запросы с стороннему хосту и результат записывать в БД.
такие скрипты работают по cron на каждом таком сайте.
А можно попросить cat /etc/crontab и пример листинга того как скрипт подключается к базе на удалённом хосте?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

chudinov
проходил мимо

Re: внешние и внутренние IP адреса

Непрочитанное сообщение chudinov » 2009-10-13 8:35:34

скрипт не подключается, а только делает запрос $response = file_get_contents('http://xmlsearch.yandex.ru/xmlsearch', true, $context);
вот пример от Яндекс (http://xml.yandex.ru/games/search-place-php.html)

Код: Выделить всё

<?php
// Для запуска требуется PHP 5 
header ("Content-Type: text/html;charset=utf-8");

// верхняя части страницы
include "template_header.html";


# обработка полей формы
$host  = array_key_exists('host', $_REQUEST)  ? $_REQUEST['host']  : '';
$query = array_key_exists('query', $_REQUEST) ? $_REQUEST['query'] : '';

$query_esc = htmlspecialchars($query);
$host_esc  = htmlspecialchars($host);

$host = preg_replace("[^http://|www\.]", '', $host);

// спрашивать яндекс только после сабмита формы
$exit = $_SERVER["REQUEST_METHOD"] != 'POST';

$page  = 0;
$found = 0;
$pages = 50;
$error = false;

print "<table width='100%'><tr><td width='16%'/><td>";

// мы должны получить место сервера в выдаче по некому запросу.
// делаем запрос по десять ссылок на страницу и запрашиваем 50
// страниц. при нахождении сервера останавливаемся и выдаем его
// место в выдаче
while (!$exit && $page < $pages && $host)
{

    // XML запрос
    $doc = <<<DOC
<?xml version='1.0' encoding='utf-8'?>
<request>
    <query>$query_esc</query>
    <page>$page</page>
    <maxpassages>0</maxpassages>
    <groupings>
        <groupby attr='d' mode='deep' groups-on-page='10' docs-in-group='1' curcateg='-1'/>
    </groupings>
</request>
DOC;

    $context = stream_context_create(array(
        'http' => array(
            'method'=>"POST",
            'header'=>"Content-type: application/xml\r\n" .
                      "Content-length: " . strlen($doc),
            'content'=>$doc
        )
    ));
    $response = file_get_contents('http://xmlsearch.yandex.ru/xmlsearch', true, $context);

    if ( $response ) {
        // print $response->getBody();
        
        $xmldoc = new SimpleXMLElement($response);

        $xmlresponce = $xmldoc->response;

        if ($xmlresponce->error) {
            print "Возникла следующая ошибка: " . $xmlresponce->error . "<br/>\n";
            $exit  = 1;
            $error = true;
            break;
        }
        

        $pos = 1;
        $nodes = $xmldoc->xpath('/yandexsearch/response/results/grouping/group/doc/url');
        foreach ($nodes as $node) {
            // если URL начинается с имени хоста, выходим из цикла
            if ( preg_match("/^http:\/\/(www\.)?$host/i", $node) ) {
                $found = $pos + $page * 10;
                $exit = 1;
                break;
            }
        
            $pos++;
        }
    
        $page++;
    } else {
        print "внутренняя ошибка сервера\n";
        $exit = 1;
    }

}

if (!$error) {
    // если что-то найдено, то выводим результат 
    if ($found) {
        print "<p>сайт «$host» находится на месте № $found по запросу «$query»</p>";
        print "<p>Попробуйте узнать позицию другого сайта!</p><br/>\n";
    } elseif ($host) {
        print "<p>сайт «$host» находится далее, чем на ". $pages*10 ." месте в выдаче «Яндекса»";
        print" по запросу «$query»</p><p>Попробуйте узнать позицию другого сайта!</p><br/>\n";
    } else {
        print "<p>Узнайте позицию сайта в выдаче «Яндекса» по запросу!</p>";
    }
}
?>
</td></tr></table>
<form method='POST' accept-charset='utf-8'>
     <table width='100%'>
         <tr>
            <td width="16%"/>
            <td width="75%">
                <table>
                    <tr>
                        <td><label for='query'>Запрос:</label></td>
                        <td><input type='text' name='query' id='query' value='<?php print $query_esc ?>'/>   Пример: волшебные травы</td>
                    </tr>
                    <tr>
                        <td><label for='host'>Имя сервера:</label></td>
                        <td><input type='text' name='host' id='query' value='<?php print $host_esc ?>'/>   Пример: narcom.ru</td>
                    </tr>
                    <tr>
                        <td/>
                        <td><input type="submit" value="Искать!"/></td>
                    </tr>
                </table>
            </td>
            <td width="9%">
        </tr>
    </table>
</form>
<?php
// дописываем html
include "template_footer.html";
?>



sch
сержант
Сообщения: 282
Зарегистрирован: 2009-05-28 14:36:50
Откуда: Кишинев

Re: внешние и внутренние IP адреса

Непрочитанное сообщение sch » 2009-10-13 11:46:02

Очевидно же, что исходящие пакеты с сервера направляются через дефолтный шлюз провайдера -- поэтому они отправляются от адреса сервера, находящегося в такой же IP подсети.
Настройки приложений не при чем.

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: внешние и внутренние IP адреса

Непрочитанное сообщение Gloft » 2009-10-13 12:25:35

Попробуй запустить апач на отдельный ип.
То-есть для каждого домена свой апач, возможно это поможет.
Насколько я понимаю у тебя сейчас на одном апаче висит несколько виртуал хостов, и в апаче прописано слушать несколько ипов.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: внешние и внутренние IP адреса

Непрочитанное сообщение vadim64 » 2009-10-13 13:54:30

chudinov писал(а):в настрйках апача VirtualHost указаны IP адреса для каждого домена.
Повторюсь, если апач остановлен, скрипт запускаю по ssh и результат тот же
настройки httpd.conf не влияют на процесс
Пишет же человек, апач не приделах. Это надо пых-программиста какого нибудь заставить расказать о том как работает пых-скрипты соединяются с внешним миром и как можно повлиять на этот процесс.
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Nickuz
рядовой
Сообщения: 28
Зарегистрирован: 2009-09-22 11:48:31

Re: внешние и внутренние IP адреса

Непрочитанное сообщение Nickuz » 2009-10-13 14:11:16

Топикстартер, у вас должно быть выполнено два условия:
1. Для каждого алиаса должен существовать хотя бы один роутер, который "знает" маршрут до ваших алиасов.
2. Должен быть обеспечен форвардинг пакетов с алиаса на рутер.
После этого можете привязывать исходящий интерфейс в пхп.

chudinov
проходил мимо

Re: внешние и внутренние IP адреса

Непрочитанное сообщение chudinov » 2009-10-14 16:58:43

Nickuz, поясните плиз
это как сделать?

точнее это я настрою на своем сервере или это должны настроить сисадмины моего хостера где сервер на колокейшене стоит?