1

Я просто читаю переадресацию портов и думаю об использовании RaspberryPi для размещения веб-сервера.

Одна вещь, которая произошла со мной, это Все запросы на определенный порт направляются на определенный внутренний IP-адрес. Отправляются ли ответы таким же образом? Конечно, это предотвратит доступ других компьютеров в сети к Интернету, поскольку все ответы с посещенных веб-сайтов будут отправляться на сервер.

3 ответа3

1

Чтобы ответить на этот вопрос, вам нужно знать, как работает сетевой трафик между клиентом и сервером.

Когда у вас есть клиент-серверная программа, сервер настраивает порт прослушивания.

Любой клиент может затем подключиться к этому порту прослушивания и попросить подключиться. Поскольку вы можете сделать только одно соединение с портом, как только сервер примет соединение (идет за доли секунды), сервер затем устанавливает новое соединение обратно к клиенту (обычно через uPNP, опционально указывая, какой порт он будет использовать ) сделать фактическую передачу данных. Исходный порт от клиента к серверу сбрасывается, чтобы освободить порт прослушивания.

Поскольку сервер находится за NAT (маршрутизатором), когда клиент подключается к общедоступному IP-адресу с номером порта, маршрутизатор отвечает, а не сервер за ним. Поскольку у маршрутизатора нет программного обеспечения сервера (в вашем случае веб-сервера), он не знает, как ответить, и соединение не устанавливается, потому что маршрутизатор просто игнорирует запрос.

Добавляя portforward, вы сообщаете маршрутизатору, что делать, когда кто-то пытается подключиться к общедоступному IP-адресу с указанным портом. В вашем случае правило гласит: ретранслируйте трафик на Raspberry Pi.

Теперь, как вы можете видеть, единственное, что происходит, это то, что маршрутизатор узнает, что делать, когда делается запрос к общедоступному IP-адресу и порту. ПК внутри сети не запрашивают доступ по общему IP, но вместо этого по частному IP. Кроме того, маршрутизатор позволяет настроить, какой публичный порт он слушает. Поэтому, если у вас есть 3 малиновых пи, каждый из которых имеет свой IP-адрес, вы можете установить 3 правила:

- port 8081 to pi1, port 80
- port 8082 to pi2, port 80
- port 8083 to pi3, port 80

Затем клиент подключается к вашему общедоступному ip, добавляя:8081, чтобы открыть этот порт, и все работает.

Физические ссылки не установлены, поэтому все порты остаются без изменений. Просто маршрутизатор понимает, что делать с портом и куда должен направляться трафик.

Обратите внимание, что не все маршрутизаторы способны к петлевому трафику, то есть они ожидают, что соединения на NAT с публичным IP-адресом будут поступать от порта WAN, а не от порта LAN, поэтому может оказаться невозможным проверить правила пересылки на вашем роутере изнутри сети.

0

Я не эксперт по сетевым темам, но порт 80 - это только тот порт, который слушает сервер. Клиент прослушивает случайный порт выше 1024 для ответов сервера.

Пример:

You --> asdf.com:Port 80  
asdf.com --> you:Port 12345 (response) 

Таким образом, переадресация порта 80 на raspberry не повлияет на другие ПК в сети при регулярном использовании сети.

Конечно, вы можете перенаправить порт только на один компьютер в вашей домашней сети, так что вы можете одновременно запускать только один raspberry-сервер.

Внутри вашей домашней сети все серверы по-прежнему доступны через их локальный IP-адрес.

Конечно это относится ко всем портам, а не только к 80

0

Поэтому, когда вы настраиваете свой домашний маршрутизатор для переадресации порта 80 на Raspberry Pi, вы пересылаете порт 80 вашего публичного IP-адреса. Этот адрес назначен вашему роутеру от вашего провайдера. Никто снаружи (в Интернете) не может видеть, что находится за вашим маршрутизатором (вашей внутренней локальной сетью). Поэтому, когда поступает запрос извне для веб-страницы, маршрутизатор перенаправляет его на Raspberry Pi. Ответы отправляются обратно на ваш маршрутизатор, который знает, откуда поступил запрос, и отвечает обратно. Внутренне ничто не отличается. Вы получите доступ к вашему Raspberry Pi через его внутренний IP-адрес через порт 80.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .