Первая проблема: вы пытаетесь использовать адрес, который является локальным для вашей подсети. Трафик из той же подсети не проходит через маршрутизатор и не зависит от правил брандмауэра маршрутизатора. Когда другие компьютеры в вашей локальной сети хотят достичь 192.168.1.225
, они вместо этого немедленно отправляют локальные запросы ARP, чтобы узнать его MAC-адрес.
Этого можно избежать, используя другую подсеть для хоста AWS или настроив Proxy-ARP на маршрутизаторе, заставив его подделать ответы ARP для этого адреса.
Вторая проблема: IP-пакеты могут нести только один пункт назначения, поэтому DNAT теряет информацию - получатель (ваш локальный маршрутизатор) больше не знает, каким должен был быть первоначальный пункт назначения. (Эта информация есть только у того хоста, который выполнил перевод.) Таким образом, хост AWS может DNAT одного адресата по вашему локальному общему адресу, но не может DNAT целого /24.
Чтобы избежать этого, вам необходимо туннелировать пакеты - вместо их трансляции инкапсулируйте исходный пакет во второй заголовок IP. (Также называется VPN.) Существует множество вариантов настройки туннеля в Linux, от простого IPIP или GRE до IPsec, WireGuard, Tinc или OpenVPN.
Большинство туннелей /VPN-типов являются L3 (они несут IP-пакеты внутри), поэтому вам все равно нужно будет использовать номер подсети, отличный от обычной подсети локальной сети, и маршрутизатор должен фактически маршрутизировать между интерфейсом LAN и интерфейсом VPN / туннеля.
Некоторые туннели поддерживают режим L2 (несут кадры Ethernet внутри), например, EoIP, gretap, OpenVPN - отвод типа -de, ZeroTier. Эти туннельные интерфейсы L2 могут быть соединены с вашей локальной сетью, что позволяет использовать одну и ту же подсеть с обеих сторон (с полностью работающим ARP), что вы и просили изначально