Общедоступный IP-адрес веб-сервера, отображаемый на веб-странице

358
Samir Sogay

У меня Raspberry Pi за NAT, работающей под Linux и размещающей веб-сервер. Я получаю доступ к веб-странице извне через утилиту Yaler, так как у меня есть динамический публичный IP-адрес. Есть ли способ показать мой текущий публичный IP-адрес на веб-странице? Если я получу свой публичный IP-адрес, я смогу получить доступ ко многим устройствам с поддержкой NAT в этой сети. Домен Yaler не соответствует моему действительному общему IP-адресу.

0
Разве Yaler не предлагает это как-нибудь? Кроме этого, у вас работает PHP на компьютере? slhck 9 лет назад 0
Yaler основан на обратном http, и нет прямого сопоставления между доменом Yaler и моим публичным динамическим IP-адресом. Samir Sogay 9 лет назад 0

1 ответ на вопрос

1
Mario

Either way you'll need some simple script for this.

One easy example would be using DNS lookup.

If you can't use the host command, install it using sudo apt-get install host.

Then simply run the command host -t a your.public.domain. This will result in a line like this:

your.public.domain has address 12.34.56.78

You'll just have to parse the result, e.g. in PHP you could use something like this:

<?php $ip = 'unknown'; if (preg_match('/has address (\d+\.\d+\.\d+\.\d+)/', exec('host -t a your.public.domain'), $m)) $ip = $m[1]; echo "The public IP is $ip."; 

Keep in mind that this will delay code execution by about a second; so you should cache the result.

К сожалению, IPv6 все еще довольно необычен, но я хотел бы отметить, что в настоящее время он работает только для IPv4. Также +1, так как на 99% гарантированно будет ответом OP, как и большинство посетителей сайта. Hennes 9 лет назад 0
Ну, вы могли бы, вероятно, расширить регулярное выражение, чтобы перехватить и IPv6. К сожалению, у меня нет общедоступного, поэтому я не могу его проверить. Mario 9 лет назад 0
Домен Yaler не разрешается на мой IP-адрес. Мой сеанс с доменом Yaler, и Yaler перенаправляет этот сеанс на мой IP-адрес через обратный http. Samir Sogay 9 лет назад 0
@SamirSogay Ой? Хорошо, так для чего вам тогда нужен ваш "публичный" IP? Mario 9 лет назад 0
Если мне нужно управлять своим веб-сервером удаленно через ssh. Кроме того, получение публичного IP-адреса позволило бы мне получить доступ ко многим другим устройствам, которые находятся за NAT. Samir Sogay 9 лет назад 0
@Samir, http://php.net/manual/en/reserved.variables.server.php или ` ` могут помочь. Arjan 9 лет назад 0
Арджан: Вы можете опубликовать это как новый ответ, хотя это не обязательно вернет правильный публичный IP. Mario 9 лет назад 0
@ Arjan Я думаю, что твое решение ведет меня в правильном направлении. Не могли бы вы уточнить, как поместить это в HTML-код, так как я мало что знаю об этом. Samir Sogay 9 лет назад 0
@SamirSogay Вы не можете сделать это на стороне клиента (читай: в чистом HTML). Вам придется делать это на стороне сервера, используя некоторый язык сценариев, так как он должен запускаться сервером. В противном случае он вернет общедоступный IP-адрес пользователя, посещающего вашу страницу, а не общедоступный IP-адрес сервера, обслуживающего эту страницу. Mario 9 лет назад 0
@Mario Я намерен сделать это на стороне сервера, т.е. на веб-странице сервера. Samir Sogay 9 лет назад 0
@Arjan Пожалуйста, добавьте ваше решение в качестве другого ответа, я хочу отметить его правильно. Samir Sogay 9 лет назад 0