OpenDNS имеет настройку записи ресурса, поэтому, если вы запросите эту запись, она вернет IP-адрес (ссылка).
Итак, вы можете использовать такую команду host myip.opendns.com 208.67.222.222
и результатом, который вы получите, будет IP-адрес компьютера, который вы используете, или публичный адрес, используемый NAT, за которым вы находитесь.
Я хотел бы знать, существуют ли какие-либо DNS-серверы с открытым исходным кодом, которые также могут выполнять эту функцию.
В моем Evldns рамки, которые могут это сделать.
В хаос демо ответит на запросы для client.bind
с IP-адресом клиента, в любом A
, AAAA
или TXT
формат в зависимости от обстоятельств.
Это нестандартный RR. Если вы хотите сделать что-то более или менее переносимое, взгляните на протокол STUN. Это довольно ужасно, но, по крайней мере, это стандартно и было разработано специально для того, чтобы позволить хосту обнаруживать свой собственный IP-адрес и порт, как это видит сервер STUN. Доступны публичные серверы STUN, перечисленные здесь: http://www.voip-info.org/wiki/view/STUN. На той же веб-странице есть указатели на клиентские библиотеки и серверное программное обеспечение.
Преимущество подхода на основе DNS состоит в том, что вы можете использовать уже имеющиеся у вас инструменты. Но поскольку он нестандартный, он не переносится.