Приведу пример установки и настройки xt_NAT в Ubuntu Server 14.04 с версией ядра 4.4.0-142. На новых версиях ядра xt_NAT может не работать. По словам разработчика должно работать на Linux Kernel 3.18 и 4.1. Чтобы работало на новых версиях ядра, можно найти патчи.
Включим пересылку пакетов между интерфейсами, а также укажем в файле /etc/sysctl.conf:
cat /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.conf.all.forwarding=1
nano /etc/sysctl.conf
net.ipv4.conf.all.forwarding=1
Переключимся на root пользователя и установим необходимые компоненты
sudo -i
apt install xtables-addons-source
Скачаем xt_NAT:
git clone https://github.com/andrsharaev/xt_NAT.git
Также я сохранил его тут на всякий случай.
Выполним установку:
cd xt_NAT
make
make install
depmod -a
После установки xt_NAT, загрузим модуль с указанием диапазона IP адресов для NAT (не клиентской сети):
modprobe xt_NAT nat_pool=192.168.5.2-192.168.5.254
Пример выгрузки модуля:
modprobe -r xt_NAT
Можно еще передавать Netflow v5 статистику, для этого укажем адрес коллектора в «nf_dest», например:
modprobe xt_NAT nat_pool=192.168.5.2-192.168.5.254 nf_dest=192.168.10.10:2055
Отключим conntrack для трафика xt_NAT (где 192.168.55.0/24 это клиентская сеть):
iptables -t raw -A PREROUTING -s 192.168.55.0/24 -j CT --notrack
iptables -t raw -A PREROUTING -d <NAT Pool Net> -j CT --notrack
Добавим iptables правила чтобы использовать xt_NAT модуль для пользовательского трафика (eth0 — uplink интерфейс, eth1 — в сторону клиентов):
iptables -t raw -A PREROUTING -d <NAT Pool Net> -j NAT --dnat
iptables -A FORWARD -d 192.168.55.0/24 -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -s 192.168.55.0/24 -i eth1 -o eth0 -j NAT --snat
На втором сетевом интерфейсе который смотрит в сторону клиентов укажем IP адрес в /etc/network/interfaces или временно командой:
ifconfig eth1 inet 192.168.55.1 netmask 255.255.255.0
В файлах ниже можно посмотреть статистику и например рисовать по ней графики в Zabbix:
/proc/net/NAT/sessions (Proto SrcIP:SrcPort -> NatIP:NatPort)
/proc/net/NAT/users
/proc/net/NAT/statistics
Смотрите также мои статьи:
Настройка маскарадинга (NAT) в Ubuntu
Разница между MASQUERADE и SNAT