
Ссылка на статью в формате MarkDown для Curl, кодировка RU.UTF-8
Доступ к компу из интернета без DDNS и покупки доменного имени
Адрес страницы: https://nixscript.ru/noddns
Иногда случается так, что нужен доступ к компу из интернета, при этом нет ни желания ни денег на организацию доступа с доменным именем.
Нужны идеи? Будут вам идеи!
Для начала надо убедиться, что у вас белый IP. Если это так, то надо настроить роутер/модем на проброс портов 80 и 443, если вам нужен доступ по веб-протоколам. Или 22 порт, если по ssh. Описаний этого действа в сети много, всё зависит от вашего сетевого железа, поэтому этот момент вам надо нагуглить.
Скрипт для сервера очень прост. Получает запрос, выцепляет из него адрес IP и вставляет в веб-страницу. Сделаем PHP-скрипт под именем your_script.php
<?php
if($_GET['ip']=="0"){
file_put_contents("dynamic_ip.txt",$_SERVER["REMOTE_ADDR"]);
}
else {
$IP = file_get_contents("dynamic_ip.txt");
echo "<a href='$IP'>Домашний комп</a>";
}
Теперь закидываем этот скрипт на один из действующих сайтов в интернете, не в корневую папку, а во вложенную. Так будет более безопасно.
Со скриптом для целевого компа так же всё просто. Сделаем bash-скрипт с именем send_ip
#!/bin/bash
curl http://some.site/some_dir/your_script.php?ip=0
Параметром к curl укажите правильный путь к скрипту в интернете, при этом фрагмент your_script.php?ip=0 должен остаться неизменным.
И на скрипт send_ip задать выполнение раз минут в 5, запустив с правами root это:
# crontab -e
*/5 * * * * /home/user/bin/send_ip
Укажите правильный путь к скрипту send_ip и сохраните. Перезапустите cron.
# через systemd так:
systemctl restart cron
Если your_script.php уже в интернете, откройте браузер, в адресной строке вбейте адрес к скрипту http://some.site/some_dir/your_script.php и нажмите Enter. Заметьте, на конце адреса не должно быть фрагмента ?ip=0! Браузер выдаст страницу, на которой будет только ссылка «Домашний комп» на внешний IP к вашему компу.
Автор: Grigruss 26.04.2018 vk@nixscript
Статья написана в формате MarkDown и сконвертирована в HTML с помощью скрипта Parsedown.