Pull to refresh

Comments 25

Вот как я решил разрыв отношений с dyndns от dyn.com.
Имеем 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.
-s нужно. Иначе могут быть чудеса :)
Довольно долго отвечает на запрос :)
curl -s ip.vlad.pro ну могу тогда это предложить)
root@vlad:~# cat /etc/nginx/sites-enabled/13-ip.vlad.pro 
server { 
	listen 80;
	server_name ip.vlad.pro;
	location / {
		echo_before_body $remote_addr;
                return 200;
	}
	
}

Я, когда решал аналогичную задачу (что интересно, тоже на 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-сервера у меня безбожно тормозили, поэтому пришлось от них отказаться и использовать вот эти сервисы.
Если есть свой сервер, поставьте туда OpenVPN и поднимите соединения до него из дома и с работы. У вас ещё и ssh-сеансы перестанут разрываться при смене IP.
Спасибо, как один из вариантов решения задачи. Также можно вместо OpenVPN использовать SoftEther.
Пользуюсь MOSH, прямо идеально для практически любых условий.
А я и не знал, что он у них есть. Спасибо ;)
Но всегда интереснее написать свой велосипед на костыльном приводе.
Вместо демона на Go, отдающего IP, можно в самом nginx просто отдавать заголовок:
add_header X-Remote-Addr $remote_addr;

По-моему можно просто
echo $remote_addr;

В nginx.
В любом случае это не сильно упрощает дело, хотя решение более элегантное :)
Только если nginx собран с этим нестандартным модулем. add_header, имхо, самое общее решение.
add_header у меня и так используется же, я с помощью него передаю ip на сервис yourip, чтобы уже с него отослать ip не как заголовок, а просто как текст.

upd: я перепутал немного, у меня заголовок устанавливается для запроса, а вы предлагаете для ответа
Да, я предложил заменить демона на Go одной строчкой в конфиге nginx. Будет меньше точек отказа.
Но тогда придется читать заголовки вместо простого тела ответа
Чем чтение заголовков сложнее чтения тела? А вот выкинуть не нужное доп приложение — красота же.
UFO just landed and posted this here
Можно в вашем случае сократить на пару строчек код, использовав один из сервисов, которые отдают только ip.
Оставить просто
$answer = $wc.downloadString("https://cydev.ru/ip")

Кстати, кажется, что у вас пример не полный, т.к. нет, собственно, изменения ip и вообще извлечения id записи

А статья больше учебная, не просто так бейджик tutorial висит. Я подумал, что будет полезно постепенно расширять количество статей по go начального уровня.
UFO just landed and posted this here
Спасибо за ваш пример, тоже было интересно посмотреть, как это решается на PowerShell
Sign up to leave a comment.

Articles