Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > узнать внешний ip сидя за NAT


Автор: FooBar 15.4.2008, 02:44
здравствуйте, и так есть некоторый сервер который находится на компьютере который в свою очередь находится за натом, подключения сей сервер ловит через переброшенный порт, для работы необходимо чтобы сервер знал свой ip, внимание вопрос - как сервер может узнать свой внешний ip? неплохо было бы услышать о возможности получить ip от самого обратившегося клиента (если конечно такое возможно), пробывал модуль Sys::Hostname но он выдает только имя моей машины, конечно можно узнавать свой ип путем парсинга сайта типа 2ip.ru но такое решение совсем не есть тру.

Автор: shamber 15.4.2008, 09:54
Цитата(FooBar @  15.4.2008,  02:44 Найти цитируемый пост)
узнавать свой ип путем парсинга сайта типа 2ip.ru но такое решение совсем не есть тру.

а почему? на мой взгляд нормальное решение.

Автор: Itsys 15.4.2008, 13:54
Если у сервера есть внешний домен - Net::Whois

Автор: ginnie 15.4.2008, 14:01
Уважаемые коллеги, не забывайте, что на сервере с NAT может быть не 1, а несколько IP-адресов, которые могут менятся для разных соединений.

Автор: Itsys 15.4.2008, 14:08
ginnie, в этом случае, они должны быть закреплены за разными доменами.

Автор: ginnie 15.4.2008, 14:16
Itsys, ничего такого они не должны. Привязать их к одному домену никто не мешает (но это маловероятно). Более вероятен другой вариант. Сервер имеет внешний домен на одном адресе, а NAT работает на другом (других). 

Автор: Itsys 15.4.2008, 14:37
Цитата(ginnie @  15.4.2008,  14:16 Найти цитируемый пост)
Сервер имеет внешний домен на одном адресе, а NAT работает на другом (других)

Это может быть, да и встречается довольно часто.

ЗЫ тогда только парсить внешний источник.

Добавлено через 1 минуту и 34 секунды
Конечно можно еще попробовать через tracert...

Автор: FooBar 15.4.2008, 15:07
мой сервер являет собой обычный комп за адсл роутером, и доменное имя к нему естественно не привязано, буду парсить сайт с ип, или попробую использовать бесплатный днс типа dyndns.org и получать ип от него, всем спасибо

решение проблемы: icmp record route
$ ping ya.ru -c 3 -R

Автор: ginnie 17.4.2008, 14:25
FooBar, это решение не для всех. У меня на Windows XP за NAT:

Код

C:\Documents and Settings\Ginnie>ping ya.ru

Обмен пакетами с ya.ru [213.180.204.8] по 32 байт:

Ответ от 213.180.204.8: число байт=32 время=3мс TTL=57
Ответ от 213.180.204.8: число байт=32 время=3мс TTL=57
Ответ от 213.180.204.8: число байт=32 время=5мс TTL=57
Ответ от 213.180.204.8: число байт=32 время=3мс TTL=57

Статистика Ping для 213.180.204.8:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
    Минимальное = 3мсек, Максимальное = 5 мсек, Среднее = 3 мсек


Код

C:\Documents and Settings\Ginnie>ping ya.ru -r 5

Обмен пакетами с ya.ru [213.180.204.8] по 32 байт:

Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.

Статистика Ping для 213.180.204.8:
    Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь),


Добавлено через 1 минуту и 17 секунд
Во FreeBSD в ping нет -R.

Автор: amg 17.4.2008, 15:02
linux
Код

>ping ya.ru -c 3 -R
PING ya.ru (213.180.204.8) 56(124) bytes of data.

--- ya.ru ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2004ms

>

Автор: FooBar 17.4.2008, 20:03
ну да, работает не везде, на натах провайдеров видимо такая возможность отключена, но на натах провайдера и порт перебросить никто не даст
Код

roma@debian:~$ ping ya.ru -c 3 -R
PING ya.ru (213.180.204.8) 56(124) bytes of data.
64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=56 time=455 ms
RR:     debian (192.168.1.2)
        ppp91-122-*-*.pppoe.avangarddsl.ru (91.122.*.*)
        e320-1-588.ptn.ru (212.48.198.23)
        213.59.5.142
        spb-dsr4-tg2-1.rt-comm.ru (217.106.6.42)
        spb-bbn1.rt-comm.ru (195.161.1.158)
        msk-dsr5-vl7.rt-comm.ru (217.106.30.221)
        lamento-vlan119.yandex.net (87.250.233.6)
        ya.ru (213.180.204.8)

64 bytes from ya.ru (213.180.204.8): icmp_seq=2 ttl=56 time=762 ms      (same route)
64 bytes from ya.ru (213.180.204.8): icmp_seq=3 ttl=56 time=501 ms      (same route)

--- ya.ru ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 12654ms
rtt min/avg/max/mdev = 455.100/573.259/762.822/135.393 ms

Автор: arto 18.4.2008, 12:25
# GET http://www.ippages.com/simple/ | head -1
2.12.85.06 (TU-Tuvalu) http://www.ippages.com Fri, 18 Apr 2008 09:27:10 UTC/GMT

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)