Этот вопрос относится к услугам, предоставляемым серверами в сетях IPv4, адресованных RFC1918, которые становятся доступными для внешних пользователей путем введения NAT-адреса назначения (DNAT) на шлюзе. Затем внутренние пользователи пытаются получить доступ к этим службам через внешний адрес. Их пакет выходит из клиента на шлюзовое устройство, которое переписывает адрес получателя и сразу же вводит его обратно во внутреннюю сеть. Именно этот острый поворот пакета делает на шлюзе, что приводит к названию шпильки NAT , по аналогии с поворотом шпильки . Проблема возникает, когда шлюз перезаписывает адрес назначения, но не адрес источника. Затем сервер получает пакет с внутренним адресом назначения (собственным) и внутренним адресом источника (клиентом); Он знает, что он может напрямую ответить на такой адрес, поэтому он делает это. Поскольку этот ответ является прямым, он не проходит через шлюз, поэтому он никогда не сможет сбалансировать влияние NAT входящего назначения на исходный пакет, переписав исходный адрес возвращаемого пакета. Таким образом, клиент отправляет пакет на внешний IP-адрес, но получает ответ от внутреннего IP-адреса. Он не знает, что эти два пакета являются частью одного и того же разговора, поэтому разговор не происходит. Решение состоит в том, что для пакетов , для которых требуется такой NAT-адресат, и которые достигают шлюза из внутренней сети , также для выполнения исходного NAT (SNAT) во входящем пакете, обычно путем перезаписи адреса источника, который является адресом шлюза. Затем сервер думает, что клиент сам является шлюзом и отвечает на него напрямую. Это, в свою очередь, дает шлюзу возможность сбалансировать эффекты как DNAT, так и SNAT во входящем пакете путем переписывания как исходного, так и целевого адресов в возвращаемом пакете. Клиент считает, что он разговаривает с внешним сервером. Сервер считает, что он разговаривает со шлюзом. Все стороны счастливы |