Выборочный NAT пакетов с iptables

Выборочный NAT пакетов с iptables

Как сделать так, чтобы iptables NAT преобразовывал все пакеты, кроме тех, которые имеют целевой адрес из подсети 192.168.254.0/24?

решение1

Если я вас правильно понял, это должно быть довольно просто, используя вариант -dс отрицанием. Например, такое правило:

$ iptables -A POSTROUTING ! -d 192.168.254.0/24 -j SNAT --to-source new_source_ip

Конечно, вы можете изменить правило в соответствии с вашими потребностями. Это изменит исходный IP всех пакетов, направленных в любой пункт назначения, кроме указанной подсети.

решение2

По моему мнению, следующий порядок команд iptables будет работать:

1. iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j RETURN
2. iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -o eth0 -j MASQUERADE

правило 1 будет соответствовать вашей сети и не будет МАСКАРАДОВАТЬ ее, правило 2 будет маскировать все, но, как правило, не очень хорошая идея давать 0.0.0.0 подстановочный знак (я даже не уверен, сработает ли это). Вам следует выборочно добавлять все сети, которые вы хотите маскировать, а остальные просто не будут маскироваться.

Связанный контент