Я понимаю принцип: переадресация портов; Трансляция сетевых адресов и т.д.

Скажем, я хотел играть в многопользовательские игры. В этом сценарии; Мне пришлось бы перенаправить порт 80 на мой игровой сервер (компьютер 1).

Как это будет работать, если другой пользователь захочет использовать Интернет на компьютере 2, пока я играю в многопользовательскую игру или даже когда я не играю в многопользовательскую игру, а сервер игр отключен? Я провел некоторое исследование и прочитал такие вопросы: что такое перенаправление портов и для чего оно используется? , Однако я не нашел ответа на свой конкретный вопрос. Нужно ли настраивать игровой сервер в качестве прокси-сервера? то есть укажите настройки компьютера B в качестве прокси-сервера на компьютере A. Это верно? Я не верю, что это правильно, потому что игровой сервер иногда отключается.

1 ответ1

0

Первое, что нужно отметить - каждый сокет TCP и UDP имеет два порта: источник и пункт назначения. Обычно порт источника назначается случайным образом (или со счетчика), и большинство программ не заботятся об этом. Ваши правила переадресации портов также проверяют только порт назначения.

Второе - правила переадресации портов действуют только для определенного адреса назначения (т. Е. Собственного адреса маршрутизатора) и в большинстве случаев только для пакетов, поступающих через определенный интерфейс (т. Е. Порт WAN).


Таким образом, вам не нужно делать ничего конкретного, потому что:

  • Если вы подключаетесь к веб-сайту, исходящие пакеты не будут соответствовать правилам переадресации для порта 80, поскольку они не пришли через интерфейс WAN и имеют другой адрес назначения.

  • Поступающие ответы (с веб-сайта) также остаются нетронутыми, поскольку они имеют 80 как исходный (удаленный) порт, а не как целевой (локальный), поэтому они также не соответствуют правилам.

Между тем, когда кто-то хочет подключиться к вашему серверу, тогда входящие пакеты будут соответствовать правилам, потому что они поступают через порт WAN, имеют IP-адрес маршрутизатора в качестве пункта назначения и отправляются на порт 80 назначения (который с точки зрения маршрутизатора является местный порт).


Например, ваш маршрутизатор будет придерживаться правила переадресации портов следующим образом (перефразировано):

if (dst_ip = <ROUTER_IP> and dst_port = 80) then translate dst_ip to 192.168.1.42

Исходящее соединение будет создавать такие пакеты:

out: LAN → router: IP(src=192.168.1.42, dst=<WEBSITE_IP>) / TCP(sport=34567, dport=80)
out: router → WAN: IP(src=<ROUTER_IP>,  dst=<WEBSITE_IP>) / TCP(sport=45678, dport=80)

in:  router ← WAN: IP(src=<WEBSITE_IP>, dst=<ROUTER_IP>)  / TCP(sport=80, dport=45678)
in:  LAN ← router: IP(src=<WEBSITE_IP>, dst=192.168.1.42) / TCP(sport=80, dport=34567)

Обратите внимание, что ни один из них на самом деле не соответствует правилу переадресации портов.

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