Комментарии 25
Вот как я решил разрыв отношений с dyndns от dyn.com.
Имеем asus wl-500gpv2 (прошивка code.google.com/p/wl500g/) и дроплет от DO.
на роутере в crontab-е:
а в скрипте /opt/digitalocean-ddns:
Также попросил саппорт уменшить TTL on DNS.
Имеем asus wl-500gpv2 (прошивка code.google.com/p/wl500g/) и дроплет от DO.
на роутере в crontab-е:
*/10 * * * * /opt/digitalocean-ddns
а в скрипте /opt/digitalocean-ddns:
#!/bin/sh
/opt/bin/curl -k -s "https://api.digitalocean.com/domains/$DOMAIN_ID/records/$RECORD_ID/edit?client_id=[client_id]&api_key=[api_key]&data=$(nvram get wan0_ipaddr)"
Также попросил саппорт уменшить TTL on DNS.
Таким же образом можно решить проблему и с cloudflare, если сервер не за NAT-ом. В моем случае приходилось дополнительно получать откуда-то IP.
curl -s checkip.dyndns.org | sed 's/[a-zA-Z/<> :]//g' | tr -d '\r'
curl cydev.ru/ip
-s нужно. Иначе могут быть чудеса :)
curl -s ifconfig.me
И запомнить легче.
И запомнить легче.
Я, когда решал аналогичную задачу (что интересно, тоже на go:)), составил небольшой список адресов для получения IP. Вдруг кому-то пригодится. Все возвращают простой IPv4:
checkip.amazonaws.com/
curlmyip.com/
www.trackip.net/ip
whatismyip.akamai.com/
ifconfig.me/ip
ipv4.icanhazip.com/
shtuff.it/myip/text/
cydev.ru/ip
Интересно, что все публичные STUN-сервера у меня безбожно тормозили, поэтому пришлось от них отказаться и использовать вот эти сервисы.
checkip.amazonaws.com/
curlmyip.com/
www.trackip.net/ip
whatismyip.akamai.com/
ifconfig.me/ip
ipv4.icanhazip.com/
shtuff.it/myip/text/
cydev.ru/ip
Интересно, что все публичные STUN-сервера у меня безбожно тормозили, поэтому пришлось от них отказаться и использовать вот эти сервисы.
Если есть свой сервер, поставьте туда OpenVPN и поднимите соединения до него из дома и с работы. У вас ещё и ssh-сеансы перестанут разрываться при смене IP.
А я просто скачал Dynamic DNS Client с www.cloudflare.com/resources-downloads
Вместо демона на Go, отдающего IP, можно в самом nginx просто отдавать заголовок:
add_header X-Remote-Addr $remote_addr;
По-моему можно просто
В nginx.
В любом случае это не сильно упрощает дело, хотя решение более элегантное :)
echo $remote_addr;
В nginx.
В любом случае это не сильно упрощает дело, хотя решение более элегантное :)
Только если nginx собран с этим нестандартным модулем. add_header, имхо, самое общее решение.
add_header у меня и так используется же, я с помощью него передаю ip на сервис yourip, чтобы уже с него отослать ip не как заголовок, а просто как текст.
upd: я перепутал немного, у меня заголовок устанавливается для запроса, а вы предлагаете для ответа
upd: я перепутал немного, у меня заголовок устанавливается для запроса, а вы предлагаете для ответа
НЛО прилетело и опубликовало эту надпись здесь
Можно в вашем случае сократить на пару строчек код, использовав один из сервисов, которые отдают только ip.
Оставить просто
Кстати, кажется, что у вас пример не полный, т.к. нет, собственно, изменения ip и вообще извлечения id записи
А статья больше учебная, не просто так бейджик tutorial висит. Я подумал, что будет полезно постепенно расширять количество статей по go начального уровня.
Оставить просто
$answer = $wc.downloadString("https://cydev.ru/ip")
Кстати, кажется, что у вас пример не полный, т.к. нет, собственно, изменения ip и вообще извлечения id записи
А статья больше учебная, не просто так бейджик tutorial висит. Я подумал, что будет полезно постепенно расширять количество статей по go начального уровня.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Свой dynamic dns на Go с помощью Cloudflare