
Предположим, что IP-адрес HTTP-сервера Google — 111.111.111.111
, и моему компьютеру назначен этот IP-адрес внутри локальной сети.
Я знаю, что если я посещаю localhost
, компьютер знает, что он посещает сам себя, и, вероятно, не пойдет спрашивать маршрутизатор/шлюз, я так думаю?
Но что произойдет, если я посещу IP-адрес локальной сети, назначенный администратором сети, по сравнению с посещением localhost
?
Будет ли он спрашивать маршрутизатор/шлюз о том, кто, например, 111.111.111.111
есть? И может ли маршрутизатор обмануть/сказать ему, что он 111.111.111.111
находится за пределами локальной сети и сказать ему выйти, чтобы найти его? Точнее, может ли NAT направлять локальную сеть 111.111.111.111
в публичную, реально 111.111.111.111
?
Я спрашиваю об этом, потому что думаю, что мой интернет-провайдер предоставляет мне публичный IP-адрес в качестве IP-адреса локальной сети (меньшая вероятность того, что я действительно подключусь к этому публичному IP-адресу), поэтому я хочу узнать подробности того, что я описал выше, и осуществимо ли то, о чем я прошу.
решение1
Но что произойдет, если я посещу IP-адрес локальной сети, назначенный администратором сети, по сравнению с посещением localhost?
Будет ли он спрашивать маршрутизатор/шлюз о том, кто такой, например, 111.111.111.111?
Нет. Как правило, ОС понимает, что адрес назначения принадлежит ей, и не отправляет пакеты куда-либо наружу.
Например, в системе Linux это происходит через таблицу маршрутизации. Если вы посмотрите на таблицу local
, то увидите, что все назначенные IP-адреса имеют маршруты /32, указывающие на интерфейс «lo».
В других ОС, таких как Windows или BSD, механизм может быть более непрозрачным, но конечный результат, тем не менее, тот же. (Единственным исключением является использование «jails», «containers», «network namespaces» или «VRF» — каждый экземпляр распознает только свои собственные IP-адреса, а не те, которые принадлежат другим jails/контейнерам.)
Не имеет значения, является ли адрес «публичным» или «частным».
И может ли маршрутизатор обмануть/сказать ему, что 111.111.111.111 находится за пределами локальной сети и сказать ему пойти и найти его? Точнее, может ли NAT направить локальную сеть 111.111.111.111 в публичный, настоящий 111.111.111.111?
Если он точно совпадает с IP-адресом вашего компьютера — нет. Компьютер даже не будет связываться с маршрутизатором изначально.
Если этов той же подсетикак IP-адрес вашего компьютера – возможно, но с трудностями. Маршрутизатору понадобится Proxy-ARP в дополнение к NAT. Это должно быть осуществимо с Linux iptables в теории, но я не уверен, есть ли встроенная функция в маршрутизаторах конечного пользователя.
Я спрашиваю об этом, потому что думаю, что мой интернет-провайдер выдает мне публичный IP-адрес в качестве IP-адреса локальной сети (меньшая вероятность того, что я действительно подключусь к этому публичному IP-адресу).
Нормально, что интернет-провайдеры выдают публичные IP-адреса, и это потому, что интернет-провайдеры обычно не выдаютЛокальная сетьIP-адреса: это работа вашего маршрутизатора. Провайдер предоставляет только начальную конфигурацию для этого маршрутизатора (и только если само устройство предоставлено провайдером). Маршрутизаторсам,конечно, получает свой адрес от интернет-провайдера.
Вполне возможно, что предоставленное устройство на самом деле является просто мостом (или маршрутизатором в режиме моста), и в этом случае получение публичных IP-адресов является совершенно нормальным.
Тем не менее, некоторые интернет-провайдеры известны тем, что «заимствуют» ранее неиспользуемое пространство IP-адресов. Например, диапазон 1.0.0.0/8 оставался практически неиспользуемым в течение многих лет (пока его не подхватил CloudFlare), поэтому различные сетевые администраторы иногда решали использовать его как расширение стандартных диапазонов частных адресов. В таких ситуациях лучше всего связаться со службой поддержки клиентов и подать конкретную жалобу на то, что вы не можете связаться с какой-то конкретной службой по перекрывающимся адресам.
(Обратите внимание, что диапазон 100.64.0.0/10 не является общедоступным, как раз наоборот. Это частный диапазон, предназначенный для использования строго между интернет-провайдером и его клиентами в ситуациях, когда у них нетлюбойпубличный IP-адрес.)
решение2
Механизмы DNS, настроенные вашим сетевым администратором, — это то, что будет использовать ваш компьютер, поскольку маршрутизация пройдет через его инфраструктуру, прежде чем попадет на какой-либо внешний DNS. Таким образом, если ваш администратор по какой-то причине назначил внутренний IP-адрес, которого у него не должно быть, и этот IP-адрес обычно ведет во внешнее местоположение — ваш компьютер будет маршрутизирован в эту внутреннюю систему.
Хотя у интернет-провайдеров есть несколько различных методов назначения публичных IP-адресов, простой ответ заключается в следующем:они недаст вам IP-адрес, используемый другим внешним местом. В большинстве случаев это обрабатывается DHCP, поэтому как только публичный IP становится неактивным или срок его аренды истекает, этот IP, скорее всего, будет переназначен в любом случае (это одна из веских причин, почему DNS важен — особенно если вы не какая-то крупная корпорация с блоком статических IP-адресов).
Итак, повторим немного по-другому: если ваш маршрутизатор сообщает вашему компьютеру, что он 111.111.111.111
находится за пределами вашей локальной сети, ваш компьютер будет следовать этому маршруту до тех пор, пока внешняя система не отправит его 111.111.111.111
(если таковая существует), который должен быть назначен публично только одному месту.
Естьстандарты, регулирующие распределение IP-адресов, имножество других правилесли вы заинтересованы в дальнейшем исследовании.