Роутинг сетки
2559
1
Народ. Помогите разрешить проблему.

Задача: имеется конторская сеть, разделённая на две подсети. Одна из подсетей имеет адресное пространство 192.168.100.0/24, вторая 192.168.200.0/24.
Имеется сервак Ubuntu Server 9.04 с тремя сетевыми интерфейсами. Один смотрим внутрь, два наружу. Два внешних канала от разных провайдеров.
Задача состоит в том, чтобы одну подсеть отправить наружу через одного провайдера, вторую через второго.
Пускать или не пускать наружу надо по MAC'ам.
Сейчас при помощи iptables все ходят через одну дырку.

Фрагмент rc.local:

iptables -A POSTROUTING -t nat -o eth1 -s 192.168.200.0/24 -j SNAT --to-source xxx.xxx.xxx.xxx
iptables -A POSTROUTING -t nat -o eth2 -s 192.168.100.0/24 -j SNAT --to-source yyy.yyy.yyy.yyy

eth0 имеет IP 192.168.200.1, и для второй подсети создан eth0:1 c IP 192.168.100.1

сейчас выходит так, что все идут через внешний IP xxx.xxx.xxx.xxx.

Где копать?
Valico
Прочесть нужно вот это
А конкретно ваш случай можно посмотреть вот тут
В общем случае вам нужно определить политику, какая из ваших сетей через какой интерфейс должна ходить.
Фильтрацию по макам осуществлять нужно в цепочке FORWARD таблицы filter. В общем случае правило будет
iptables -t filter -A FORWARD -m mac --mac-source 00:00:00:00:00:00 -j DROP / -j ACCEPT
если вы роутите не в "промышленных масштабах", или адреса интерфейсов получаются по dhcp, то NAT проще организовать:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
Здесь eth1/eth2 интерфейсы на 1/2 провайдера.
В общем это не сложно, если вы понимаете как работает iptables / iproute2