Есть три территориально разобщенных LAN 192.168.0.0/24, 192.168.2.0/24 и 192.168.10.0/24. Нужно сделать так, чтобы члены всех этих локалок были доступны друг другу. Так как выход в интернет во всех этих локалках NAT’ится провайдерами, был выделен VPS-хост на линуксе с белым IP, который выступает в качестве сервера VPN (Wireguard).
Все локалки выходят в инет через обычные SoHo-роутеры, поэтому в для коннекта к VPN в каждой локалке выделяется одна машина с локальным адресом 192.168..10/32 и включенным IP-Forwarding (далее - VPN-шлюз), которая коннектится к VPN-серверу и получает VPN-адрес из пула 10.11.12.2-4/32, у сервера VPN-адрес - 10.11.12.1/32. У каждого VPN-шлюза в локалках прописано роутить трафик VPN и локальный трафик из чужих LAN через VPN (путем указания AllowedIPs в конфигах Wireguard), в роутерах каждой локалки прописаны static routes трафика VPN (10.11.12.0/24) и чужих локалок на VPN-шлюз по локальному адресу (..10/32). На VPN-сервере прописано iptables -A FORWARD -i wg -j ACCEPT; iptables -A FORWARD -o wg -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
.
Когда я, находясь, например, в локалке 192.168.0.0/24, хочу достучаться до машины в локалке 192.168.2.0/24, я просто набираю этот LAN-адрес (например, 192.168.2.30), и коннект идет. Проблема в том, что в src address этих пакетов прописан адрес VPN, такой трафик воспринимается как нелокальный, и если на целевой машине нет public-сервиса (такого, как веб-морда у принтера или неогороженный сервис на 80-ом порту), то трафик дропается целевым хостом.
Вопрос: как сделать так, чтобы трафик между локалками был нативным и не резался целевыми хостами?
P.S. Не плюйтесь за некомпетентность, я не админ, а обычный хомячок.