маршрутизатор с 2 внешними сетевыми интерфейсами [SOLVED]

Ранее был опыт поднятия обыкновенного маршрутизатора по мануалу home-router-howto, теперь нужно сделать вот что:

Имеется 3 сетевые карты:
1)Локальная сеть 192.168.23.0/24, подключена к интерфейсу eth2.
2)Интернет подключен к интерфейсу eth0. (4 мбит/c, ip получается по dhcp)
3)Интерфейс eth1 подключен к городской сети (100мбит/c, ip также по dhcp)
Некоторые ресурсы гор.сети недоступны извне. Также есть текстовый файл, где перечислены сети, входящие в гор.сеть.

Требуется:
Нужно чтобы пользователи локальной сети ходили в гор.сеть через eth1, а в интернет - через eth0.

Мои познания в линуксе не очень велики, возможно задача решается парой простых правил iptables, но моего мозга пока на это не хватает..

----- upd: Спасибо всем кто ответил на мои глупые вопросы, теперь все работает как надо

зачем здесь

зачем здесь фаерволл?
сделайте статическую таблицу маршрутизации

>возможно задача решается

>возможно задача решается парой простых правил iptables

почти, только не iptables, а роутингом. в /etc/conf.d/net пишешь:

routes_eth1=(
"сеть/маска via шлюз_в_городской_локалке"
"другая_сеть/маска via шлюз_в_городской_локалке"
"еще_одна_сеть/маска via шлюз_в_городской_локалке"
)

Естественно маршутов добавляешь сколько нужно. Шлюз по умолчанию - в Интернет. После этого проверяешь - можно ли с роутера достучаться до ресурсов городской сети. Если все прошло успешно - пишешь разрешающие правила в iptables в цепочке FORWARD. Что-то типа:

# Очищаем FORWARD
iptables -F FORWARD
# Разрешаем уже установленные соединения
iptables -I FORWARD 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Для городской сети
iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
# Для интернета
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
# Запрещаем все остальное в FORWARD
iptables -P FORWARD DROP

Нейтральность - высшее достижение сознания!

1)routes_eth1=(...)

1)routes_eth1=(...) прописал.
Не вполне понял надо ли делать что-то вроде:
routes_eth0("default via шлюз_интернета")?
В моем случае eth0 стартует раньше eth1 и маршрут default вроде прописывается правильно.

2)при поднятии eth1 происходит добавление статических маршрутов (их около 30), и иногда некоторые маршруты не записываются, выдавая ошибку "RTNETLINK answers: No such process", причем иногда сначала идут ошибки, потом все впорядке, иногда вначале впорядке, потом идут ошибки, иногда вперемешку. если раза 3 перезапустить интерфейс, то хотя бы раз всё проходит без ошибок.

В остальном (когда удается поднять eth1 без ошибок) пакеты с роутера ходят и в гор.сеть, и в интернет, всё отлично

3)iptables пока не настраивал, неверно собрал ядро, пока пересобирается. Нужно же делать nat?
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
Такая конструкция решит проблему?

upd: собрал ядро, сделал так, как в пункте 3) предположил, вроде работает (через раз) Иногда бывают глюки с двумя default gateway и проблемы с обработкой статических маршрутов. Пытаюсь понять в чем проблема

Так, спасибо за советы, с тем

Так, спасибо за советы, с тем как сделать маршруты вроде бы я разобрался. Роутер работает исключая одно но: Чтобы нормально, без ошибок добавлялись маршруты при запуске интерфейса, интерфейс приходится перезапускать раз 10.. Статических маршрутов оказалось очень много (100-200), постоянно при добавлении некоторых(рандомных) вылетает ошибка "RTNETLINK answers: No such process" и этот маршрут не прописывается. В чем может быть проблема? Может ядро не справляется и можно как-то давать маршруты порциями? или может есть какой-то кеш отвечающий за добавленные маршруты и его стоит иногда чистить?

Шлюз, через который

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

шлюз провайдера? он 100% в

шлюз провайдера? он 100% в онлайне, интернет эта сетевая карта получает от роутера, к нему еще 1 клиент подключен. А можно маршруты прописать после поднятия интерфейса через route add? Эффект от route add <...> тот же что и routes_eth1(<...>)?

Твои шлюзы/карты! :)

Твои шлюзы/карты/интерфейсы! :)

Нельзя прописать маршрут, если интерфейс в дауне! Это не ИПтаблес-правила!

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".