Топология: client в «приватной» сети 10.20.1.0/24, server
в «публичной» сети 203.0.113.0/24, gw соединяет их (роутер).
Без NAT: server видит запрос с приватного IP 10.20.1.10, отвечает
обратно… но в реальном интернете 10.20.x.x не маршрутизируется -
пакет дропнется на первом же провайдерском роутере. Дома то же самое:
твой провайдер не знает про 192.168.1.5, видит только публичный
IP роутера.
nat (Network Address Translation) на gw подменяет source-IP пакета на свой публичный, при ответе восстанавливает обратно. В частности MASQUERADE - динамический NAT который сам берёт IP outgoing-интерфейса.