В общем у меня роутер на Linux в сети к нему подлючен только один физический интерфей и есть 4 виртуальных.
Так вот сегодня обнаружилось что правило MASQUERADE оказывается заменяла все адреса, тоесть в локальной сети если сеть А ( 10.0.0.0/24 ) обращалась к сети Б ( 172.16.0.0/24 ) то роутер подменял адрес на указанный в iptables правиле.
В общем я пока не смог придумать как сделать так чтобы локальные сети маршрутизировались обычным образом и чтобы замена происходило только когда ктото пытается выйти во внешнюю сеть для доступа в интернет.
Супер спасибо, ну а чего предпочтительнее?
Я пытался ставить правило пользуясь ! -o eno1 но оно все равно маскировало
у меня два алиас интерфейсы eno1:0 eno1:2, таким образом как то можно было бы настроить не указывая сети а именно интерфейсы?
алиасы по умолчанию в правилах фаервола воспринимаются как один интерфейс, т.е. не различимы вообще
если поискать то можно накопать как сделать видимость алиасов как отдельных интерфейсов
Vi: SNAT считался когда-то несколько эффективней за счет того, что в его правиле сразу указывается адрес на который нужно подменять и нет необходимости системе его брать самой, как в MASQUERADE.
За то MASQUERADE позволяет правилу жить при динамическом выделении адреса(например на ppp-соединениях это было полезно), адрес может меняться сколько угодно, а правило будет работать.
Если у вас адрес не динамический, то используйте SNAT, вам плюшка MASQUERADE не нужна.
Vi: eno1:0 и eno1:2 это не отдельные интерфейсы, а лишь алисы (псевдонимы), а по факту являются лишь различными адресами на одном физическом интерфейсе eno1 (см. вывод команды ip address list dev eno1). Вы не можете использовать алиасы для проверки интерфейсов (в сопоставлениях --input-interface и --output-interface) - правила добавятся, но работать не будут - ни один пакет под эти сопоставления не подпадёт. Используйте сопоставление именно по адресам.
Lindon_cano: На самом деле разницы в производительности этих таргетов практически нет, потому что они отрабатывают из таблицы nat, через которую проходит лишь первый пакет каждого соединения. Для остальных пакетов уже существующих соединений (для которых уже есть записи в таблице коннтрака) эти таргеты не выполняются. А определить подходящий адрес не составляет труда: нужный айпи-адрес берётся из маршрута, который для данных пакетов уже известен (так как MASQUERADE/SNAT может выполняться только на этапе POSTROUTING).