Если пункт назначения может направить свой трафик к источнику, NAT или PAT не требуются.
Например, NAT/PAT не требуется, если VPN-клиенты в 10.8.0.0/24 хотят общаться с вашими LAN-устройствами в 192.168.1.0/24, пока задействованные устройства могут маршрутизироваться в другую сеть (через свой шлюз). ).
Когда источник находится в сети rfc1918 (частный IP-адрес), а пункт назначения — общедоступный IP-адрес, поскольку сети rfc1918 не маршрутизируются через Интернет, требуется NAT для замены частного IP-адреса общедоступным IP-адресом. Это перевод исходного адреса. Эту работу может выполнять SNAT, а не PAT.
Кроме того, вы ошибаетесь, полагая, что SNAT/MASQUERADE не меняет исходные порты.
Опция --to-source используется для указания источника, который должен использовать пакет. Эта опция, в самом простом случае, принимает один IP-адрес, который мы хотим использовать в качестве исходного IP-адреса в заголовке IP. Если мы хотим балансировать между несколькими IP-адресами, мы можем использовать диапазон IP-адресов, разделенных дефисом. IP-номера --to-source могут, например, выглядеть примерно так, как в приведенном выше примере: 194.236.50.155-194.236.50.160. Исходный IP-адрес для каждого потока, который мы открываем, затем будет случайным образом выделяться из них, и один поток всегда будет использовать один и тот же IP-адрес для всех пакетов в этом потоке. Мы также можем указать диапазон портов, которые будут использоваться SNAT. Тогда все исходные порты будут ограничены указанными портами. Тогда бит порта правила будет выглядеть так, как в приведенном выше примере: 1024-32000. Это действительно только в том случае, если -p tcp или -p udp были указаны где-то в совпадении с рассматриваемым правилом. iptables всегда будет стараться избегать каких-либо изменений портов, если это возможно, но если два хоста попытаются использовать одни и те же порты, iptables сопоставит один из них с другим портом.. Если диапазон портов не указан, то, если они необходимы, все исходные порты ниже 512 будут сопоставлены с другими портами ниже 512. Исходные порты между 512 и 1023 будут сопоставлены с портами ниже 1024. Все остальные порты будут сопоставлены с 1024 или выше.Как указывалось ранее, iptables всегда будет пытаться поддерживать исходные порты, используемые фактической рабочей станцией, выполняющей подключение. Обратите внимание, что это не имеет ничего общего с портами назначения, поэтому, если клиент попытается связаться с HTTP-сервером за пределами брандмауэра, он не будет сопоставлен с портом управления FTP.
https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#SNATTARGET
Обратите внимание, что если ваше устройство хочет подключиться к удаленному серверу через заданный порт назначения, есть вероятность, что операционная система уже назначила случайный исходный порт более 1024.
Для доступа к удаленному HTTPS-серверу через порт 443 не требуется, чтобы исходный порт был 443.