Содержание пакета ответа после переадресации порта

Я думал, что все понял о 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
Другие вопросы по тегам