Для примера выполню настройку маскарадинга IPv4 (NAT) на Ubuntu Server.
Сначала нужно включить поддержку пересылки пакетов в /etc/sysctl.conf, чтобы трафик мог ходить между разными сетевыми интерфейсами.
Проверим текущее состояние:
sysctl net.ipv4.conf.all.forwarding
cat /proc/sys/net/ipv4/ip_forward
Если оно равно 0, то включим следующей командой:
sysctl -w net.ipv4.conf.all.forwarding=1
Чтобы после перезапуска системы оно не сбросилось, откроем файл /etc/sysctl.conf например в редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):
nano /etc/sysctl.conf
И добавим строку:
net.ipv4.conf.all.forwarding=1
При необходимости можно очистить существующие NAT правила:
iptables -t nat --flush
Теперь осталось в iptables добавить правило, например:
iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source 172.16.16.94
Где, 192.168.99.0/24 внутренняя сеть, а 172.16.16.94 адрес через который нужно идти в интернет, аналогично прописываются другие внутренние сети.
Напомню маску для частных сетей:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Если IP адрес на внешнем сетевом интерфейсе меняется (динамический), тогда вместо SNAT укажем MASQUERADE:
iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j MASQUERADE
Не забываем сохранить добавленные правила iptables.
Например можно открыть файл конфигурации сетевых интерфейсов (его содержимое подгружается при запуске системы):
nano /etc/network/interfaces
И в конце добавлять правила iptables, например укажу маскарадинг этой сети сразу на несколько IP адресов, а также с указанием сетевого интерфейса:
post-up /sbin/iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth3 -j SNAT --to-source 172.16.90.1-172.16.90.5 --persistent
Или добавим в файл:
nano /etc/rc.local
/sbin/iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth3 -j SNAT --to-source 172.16.90.1-172.16.90.5 --persistent
Рекомендую указывать исходящий сетевой интерфейс, если его не указать, то локальный трафик будет возвращаться в сеть под NAT IP.
Если исходящий интерфейсов несколько, допустим балансируется нагрузка через BGP и т.д., то укажем двумя правилами:
/sbin/iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth3 -j SNAT --to-source 172.16.90.1-172.16.90.5 --persistent
/sbin/iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth4 -j SNAT --to-source 172.16.90.1-172.16.90.5 --persistent
Можно посмотреть под которым IP адресом NAT выходит трафик серого IP адреса, а также все подключения:
conntrack -L
conntrack -L -p tcp --dport 25
conntrack -L | grep 192.168.5.5 > ixnfo.com.txt
Смотрите также мои статьи:
- Модули NAT для VPN, FTP, SIP
- Разница между MASQUERADE и SNAT
- Установка и настройка xt_NAT
- Настройка IPTables
- Решение ошибки «nf_conntrack: table full, dropping packet»
- Использование Linux ISG