Linux, как разделить сетевые адаптеры на условные зоны маршрутизации?
Есть Linux, на котором поднято несколько сетевых адаптеров. Они местами пересекаются по подсетям.
Задача: выделить зоны маршрутизации. Например:
Пусть есть 4 интерфейса, 3 из них в одной сети:
lan0.1 192.168.0.100/24
lan0.2 192.168.0.200/24
lan1.1 192.168.0.5/24
lan1.2 10.0.0.1/24
Задача: настроить iptables или еще что-нить так, чтобы сам комп ходил в сеть 192.168.0.0/24 через lan1.1, все, что прилетает на lan0.1 маскарадилось на lan0.2, а lan1.2 маскарадился на lan1.1. При этом пакеты из зоны 0 (lan0.1 и lan0.2) не должны попадать в зону 1 (lan1.1 и lan 1.2) и наоборот.
"все, что прилетает на lan0.1 маскарадилось на lan0.2, а lan1.2 маскарадился на lan1.1." - объясните подробнее, что Вы хотите получить. Маскардинг - это лишь вид НАТ в linux, и не более того. Возможно, Вы имели что-то другое, так как на решение о маршрутизации маскардинг не влияет никаким образом.
Имел в виду именно маскарад (в итоге). У меня iptables в более простом случае почему-то игнорирует -o lan0.2 и посылает с интерфейса lan1.1. Если маскарад и решение о маршрутизации независимы, то вопрос в том, как правильно настроить оба.
у lan0.1 и lan0.2 убираем все маршруты из таблицы main
добавляем 2 таблицы:
ip route add 192.168.0.0/24 dev lan0.2 table 101
ip route add 192.168.0.0/24 dev lan0.1 table 102
добавляем правила:
ip rule add iif lan0.1 lookup 101
ip rule add iif lan0.2 lookup 102
теперь все, что прилетает на lan0.1 уйдет на lan0.2 и обратно.
можно еще добавить
iptables -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING ! -d 127.0.0.1/8 -j MASQUERADE
на lan1.1 и lan1.2 маршрутизируемся как обычно через таблицу main
У вас явно что-то не так в архитектуре сети. Похоже вы пытаетесь объединить три разные подсети с одинаковой адресацией, который, наверное, вам достались as is. Остановитесь и думайте о смене адресации, а не о реализации лютого костыля.