iptalbes SNAT multiple sources + multiple destinations (NAT)
Коллеги, добрый день.
Есть задача по предоставлению отдельного внешнего ip адреса для каждой отдельной виртуальной машины в локальной сети через NAT.
Т.е. конкретно:
192.168.77.40 -> NAT -> 29.15.19.178
192.168.77.41 -> NAT -> 29.15.19.179
192.168.77.42 -> NAT -> 29.15.19.180
.......
192.168.77.49 -> NAT -> 115.64.12.142
Машина которая раздает интернет: ubuntu 20.04 LTS Клиенты: виртуальные машины c Windows 10
Решили делать именно так, потому что прописывать внешние IP адреса на Windows совсем не вариант, поддерживать брандмаузер на Windows хлопотнее намного, она не для этого.
На самой машине gateway с ubuntu интернет настроен корректно, проверял вот так:
curl --interface 29.15.19.179 https://ifconfig.me
29.15.19.179
Если с каждого IP делать запросы curl-ом, то IP адрес отображается верно. И с интернета каждый из IP адресов пингуется.
IP адреса 2 провайдера выдают как Static IP с маской 29.
IP адреса настроены через netplan. Конфиг под катом. ens18 - локальная сеть ens19 - Провайдер 1 ens20 - провайдер 2
( читать дальше... )
Вывод ip a под катом.
( читать дальше... )
Вывод sysctl под катом. net.ipv4.ip_forward = 1 включен.
( читать дальше... )
Вывод iptables -L -n -v
( читать дальше... )
Вывод iptables -t nat -L -n -v
( читать дальше... )
Собственно проблема заключается в следующем, правило SNAT почему-то не работает.
iptables -t nat -A POSTROUTING -o ens20 -j SNAT --to-source 115.64.12.138