Google DNS Server - PullRequest
       22

Google DNS Server

0 голосов
/ 24 мая 2019

Я хотел получить свой частный IP-адрес с помощью Python, поэтому нашел фрагмент кода, который это делает.

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
s.close()

Здесь 8.8.8.8 - адрес для DNS-сервера Google. Теперь, когда мы заходим на внешний сайт, мы представлены только нашим общедоступным IP-адресом, так как же Google DNS может найти мой частный IP-адрес? Более того, это работало, даже когда мое интернет-соединение было отключено.

1 Ответ

0 голосов
/ 24 мая 2019

Я хотел получить свой частный IP-адрес с помощью Python, поэтому я нашел фрагмент кода, который это делает.... так как же Google DNS может найти мой частный IP-адрес?

Этот фрагмент кода не делает того, чего вы ожидаете.Все, что он сообщает, это локальный IP-адрес от UDP-сокета, «соединяющегося» с 8.8.8.8.Эта информация поступает не от Google, а от вашей локальной операционной системы, которая, конечно, знает, какой у нее локальный IP-адрес.Фактически, вы можете подключиться к любому другому внешнему IP-адресу и получить ту же информацию обратно.

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))

Кроме того, код тоже неверный.Он не подключается к DNS-серверу - DNS-сервером будет порт 53, а не 80, как вы используете здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...