Содержание пакета ответа после переадресации порта
Я думал, что все понял о NAT и т. Д., Но теперь я столкнулся с проблемой.
Первое, что я предположил:
Поскольку не хватает доступных адресов IPv4, нам нужна другая система. Современные домашние устройства для подключения к Интернету представляют собой комбинацию:
1) Модем на физическом уровне для изменения типа сигналов на проводе.
2) Переключатель на уровне канала, чтобы вы могли подключить несколько устройств к устройству
3) маршрутизатор для подключения всех компьютеров к Интернету и выхода за пределы домашней подсети и т. Д.
4) NAT, чтобы все внутренние компьютеры могли подключаться к внешним
5) Порт-форвардер, позволяющий подключаться извне к внутренней сети
Что я называю NAT:
При выполнении запроса извне: NAT-часть устройства меняет исходный порт и исходный ip-запрос, поступающий с внутреннего компьютера. Новый source-ip будет вашим public-ip. NAT-часть будет содержать запись в таблице с таким отображением: "original-ip, original-port, new-port".
Когда ответ возвращается, NAT проверит порт назначения и сравнит это с новыми портами в своей таблице. Если он находит совпадение, NAT заменит ip-адрес назначения на оригинальный-ip, а новый-порт - на оригинальный-порт. В результате ответ будет перенаправлен на внутренний компьютер, который сделал запрос. Итак, NAT-часть предназначена для инициализации соединения изнутри. Когда этот запрос проходит через NAT, меняются 2 вещи: source-ip и source-port.
Тогда порт-экспедитор:
Эта часть устройства будет принимать подключения, инициализированные во внешнем мире, к вашей сети. Он будет смотреть на порт назначения входящего запроса и, устанавливая правило для этого номера порта, может изменить порт назначения и IP-адрес назначения для внутреннего IP-адреса. С помощью этих правил запрос извне может подключаться к компьютеру во внутренней сети, и, таким образом, перенаправитель портов меняет две вещи: IP-адрес назначения и порт назначения.
A: Прежде чем я задам свой вопрос, как это объяснение?
Теперь моя проблема с ответом после того, как запрос пришел извне через portforwarder. Предположим, что сделаны правильные правила, и запрос поступил через переадресацию портов на внутренний компьютер. Таким образом, в portforwarder IP-адрес назначения был изменен на внутренний IP-адрес компьютера, а порт назначения был изменен на порт, на котором запущена служба. Если этот внутренний компьютер является веб-сервером, он сгенерирует ответ. Таким образом, IP-адрес назначения будет IP-адресом запроса, а порт назначения будет портом-источником запроса. Source-ip будет внутренним ip компьютера, а source-port будет портом службы.
Теперь этот ответ должен идти наружу. Итак, я предполагаю, что он проходит через NAT наружу? Таким образом, после прохождения NAT, source-ip будет public-ip, а source-port будет случайным. Теперь я проверил это с wireshark. Я связался с веб-сервером за NAT и увидел, что ответ идет с порта 80?! Как это возможно? Это указывает на то, что ответ перенаправленного запроса не прошел NAT?
Я переосмыслил концепцию, и моя новая гипотеза состоит в том, что, когда соединение инициализируется извне, оно пройдет через перенаправитель портов и достигнет нужного компьютера. Это создаст ответ, и когда этот ответ достигнет нашего устройства "все в одном", это устройство может распознать, что оно перенаправило запрос ответа, и не изменит порт источника.
Б: Действительно ли это так или это сделано по-другому?
Википедия говорит о переадресации портов: "Адрес источника и порт в этом случае остаются без изменений. При использовании на машинах, которые не являются шлюзом сети по умолчанию, адрес источника должен быть изменен, чтобы быть адресом переводчика, или пакеты пропустят транслятор, и соединение не будет установлено ". ( http://en.wikipedia.org/wiki/Port_forwarding)
Это подтверждает, что ответ на перенаправленный запрос ДОЛЖЕН пройти снова через перенаправитель портов, а не через NAT, поэтому порт источника не будет изменен. Portforwarder изменит исходный ip на публичный ip.
Может кто-нибудь проверить это или дать мне другое объяснение, кроме моего?
1 ответ
Теперь я проверил это с wireshark. Я связался с веб-сервером за NAT и увидел, что ответ идет с порта 80?! Как это возможно? Это указывает на то, что ответ перенаправленного запроса не прошел NAT?
Веб-сервер внутри NAT не обязательно должен работать на порте 80. Он, безусловно, настроен на NAT для перенаправления портов и ответа, как если бы он был на порте 80, но это не имеет большого значения для порта, которым является веб-сервер. на самом деле работает.
Вот немного ASCII "искусства", которое может помочь.
**Internal Network** **NAT Router** **External Computer**
Web Server running at IP 9.9.9.9 port 80 IP 20.20.20.20
IP 192.168.1.7 port 4567
Request web page at 9.9.9.9:80
Forwards port 80 traffic
to 192.168.1.7:4567
Replies with the web page
Puts 9.9.9.9:80 in the
source field and sends
the page on
Gets the page from "9.9.9.9:80"
even though it actually came
from 192.168.1.7:4567