У меня есть компьютер в небольшой сети, поэтому мой ip – 192.168.2.100.
Я пытаюсь получить свой реальный ip. Я загружаю клиент no-ip, но это просто похоже на массу неприятностей для такой простой вещи.
Я создал этот php-скрипт, который получил страницу http://www.ip-adress.com/ и получил IP-адрес, который мне дал.
Есть ли более простой способ? Или используйте C, WSH или что-то еще. Или, если есть более простой способ в php, скажите, пожалуйста.
Когда я получу ip, я загружу его на свой ftp-сайт, чтобы я мог видеть ip с работы.
Нет, это не самый простой способ. Ваш компьютер действительно не знает общедоступный IP-адрес, за которым он находится – между ним и общедоступным Интернетом может быть любое количество слоев NAT. Все, что он знает, это то, что он получает сообщения на 192.168.2.100 и отправляет исходящие сообщения через шлюз по адресу 192.168.2.1. Он не знает, что произойдет после того, как пакет попадет в шлюз.
Обратите внимание на изобретательность колеса, есть стандартный протокол, STUN (с уже существующими реализациями), только для этого. См. Также Обнаружение общедоступного IP-адреса программно .
Не совсем то, что вы просили, но по-прежнему относится к тому, что вы хотите. Я настраиваю GMail Notifier на своем домашнем компьютере и перехожу на страницу активности учетной записи, чтобы узнать, какой IP-адрес имеет доступ к моей учетной записи Google. Безопасный, простой и работает.
Если вы хотите получить возможный IP-адрес, который кажется удаленным сайтом при обработке трафика, единственный способ – фактически получить доступ к удаленному сайту. Во многих ситуациях ваш компьютер может не знать, что IP-адрес изменяется с помощью прокси-сервера или NAT-сервера.
Я всегда использую curl http://whatismyip.org
чтобы получить свой публичный IP-адрес за NAT.
Вы также можете получить доступ к этой странице, чтобы получить свой IP-адрес
Некоторые маршрутизаторы могут сообщать вам свой внешний IP-адрес через UPnP или, более конкретно, протокол IGD . Если у вас есть маршрутизатор с поддержкой UPnP, вы можете попробовать это. IStaticPortMapping :: get_ExternalIPAddress звучит многообещающе.
Устройства с поддержкой SNMP также могут сообщать вам свои IP-адреса. OID для запроса – IP-MIB :: ipAdEntAddr .
Когда мне нужно проверить мой общедоступный IP-адрес, мне нравится этот сайт:
На веб-сайте хранится история ваших IP-адресов. Для меня очень полезно!
То, как вы это делаете, вероятно, так же хорошо, как и все.
Вы говорите, что у вас есть общедоступный FTP-сайт – у вас также есть веб-сайт? Другой вариант – предоставить вашему локальному компьютеру доступ к php-странице на этом публичном сайте. Эта php-страница может проверить, что это вы, а затем использовать $ _SERVER ['REMOTE_ADDR'] для записи вашего внешнего IP-адреса.
К сожалению, вы, скорее всего, будете полностью игнорировать внешний вид своего внешнего адреса (так как он может быть установлен далее по потоку через какой-либо маршрутизатор / шлюз)
Вы могли бы взглянуть на эту ссылку
http://ip-address.domaintools.com/myip.xml
Это может быть немного легче разобрать, чем то, что вы сейчас делаете.
Я не могу придумать, как вы разрешите свой IP-адрес с точки зрения другой машины. Вот пара мыслей:
На вашем компьютере нет информации о любом NAT или маршрутизации, который имеет место между ним и Интернетом, за исключением того, какой хоп является следующим (обычно ваш внутренний IP-адрес вашего маршрутизатора). Он просто не знает, на какой хоп переводется внутренний адрес, на какой публичный адрес.
Поэтому нет простой функции или метода, который вы можете вызвать на любом языке.
Только два способа спросить кого-то другого. Как?: