Mainstas 0 Опубликовано: 2005-04-29 06:40:12 Share Опубликовано: 2005-04-29 06:40:12 Вводные: Появился 2 канал в Интернет ..естественно захотелось прикрутить его к уже существующей машине которая успешно раздает инет на юзеров (Linux MDK8.1 Iptables+STG) Задача: прикрутить 2 канал к существующему серваку и пустить часть пользователей по нему. Танцы с бубнами: Благополучно установил еще одну сетевую подключил модем прописал на сетевой ай-пи настройки..пинганул шлюз нового провайдера...Все работает. :-) И тут увидел что такого параметра как "ШЛЮЗ" у каждого интерфейса нет.. он только 1 общий..."Дефаулт роут" Естественно по этой причине пинги в инет по новому интерфейсу бегать категорически отказываются.... прописал вручную: route add -net 0.0.0.0 netmask 0.0.0.0 gw yyy.yyy.yyy.yyy (шлюз нового провайдера) Теперь если пингу явно задать интерфейс то все бегает вроде нормально, НО при выводе таблицы роутинга командой route наблюдаются жуткие тормоза... И что самое гадское сервер перестал роутить.... при подключении с клиентских компов трасерт показывает затык сразу на серваке :-(((( Подправил таблицу роутинга добавив метрику route add -net 0.0.0.0 netmask 0.0.0.0 gw yyy.yyy.yyy.yyy metric 1 Тормоза при выводе таблицы роутинга прекратились клиенты начили опять нормально ходить в инет через старый шлюз.... Подумал "УФФФ слава богу теперь от НАТить кого нужно на новый интерфейс и все ок" Но НЕ ТУТ ТО БЫЛО!!! Тут лирическое отступление: (Выход в инет реализован с помощью Iptables... Правила цепочек INPUT и OUTPUT прописаны статически...(привязки к интерфейсам нет) Также статически прописано использования NAT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to-source xxx.xxx.xxx.xxx+1 (айпи моего старого внешнего интерфейса) На долю STG (а точнее сприптов Onconnect и ondisconnect) приходится добавление\удаление правил FORWARD (iptables -A(-D) FORWARD -s $ip -j ACCEPT iptables -A(-D) FORWARD -d $ip -j ACCEPT) Может конечно и криво, но работает четко Конец отступления "Итак" подумал я все что мне нужно єто всего лишь отфорвардить и отнатить пакеты от юзеров на нужный мне интерфейс. И добавил такие правила: iptables -t nat -I POSTROUTING 1 -s 192.168.0.3 -o eth2(новый интерфейс) -j SNAT --to-source yyy.yyy.yyy.yyy+1 (айпи моего нового внешнего интерфейса) iptables -A FORWARD -s 192.168.0.3 -o eth2(для надежности) -j ACCEPT iptables -A FORWARD -d 192.168.0.3 -j ACCEPT проверил iptables -t nat -L и iptables -L все как я и хотел правила находятся в начале обеих цепочек.... пробую пропинговать инетовский айпи с машины 192.168.0.3....НИФИГА.. трасерт показывает затык на моем роутере... пингую с этой же машины шлюз нового провайдера....ВСЕ ОК... при этом tcpdump показывает что мой роутер успешно НАТит мои пинги провайдерского шлюза.... Делаю "Ход конем" и обратно правлю таблицу маршрутизации убирая метрику route add -net 0.0.0.0 netmask 0.0.0.0 gw yyy.yyy.yyy.yyy (шлюз нового провайдера) ... не работает... убираю шлюз старого провайдера....РАБОТАЕТ.... МЛЯ :mrrr: Итоги.. К чему я пришел одновремено указание 2 шлюзов в интернет с одинаковыми метриками приводит к неработоспособности роутинга... Указание новому шлюзу большей метрики восстанавливает работоспособность роутинга через старый шлюз, но при этом с помощью iptables я не могу добиться чтобы трафик от определенных клиентов шел по новому каналу.... Сам НАТ и форвардинг прекрасно фунциклирует (с клиентской машины с фейковым айпи прекрасно пингуется шлюз нового проавйдера) То есть вилы именно в таблице роутинга.... Как разрулить ума не приложу... Вобщем "помогите люди добрые" Ссылка на сообщение Поделиться на других сайтах
Den_LocalNet 1 474 Опубліковано: 2005-04-29 07:49:38 Share Опубліковано: 2005-04-29 07:49:38 всё просто..... вот к примеру на сетку 82,193,96,0/19 нужно ходить через провайдера 2, всё остальное через прова 1: route add default gateway [шлюз_пров1] ip route add 82.193.96.0/19 via [шлюз_пров2] dev [eth_пров2] после этого трафик для 82.193.96.0/19 будет ходит через пров2 а остальное через пров1 з.ы. Iproute2 рулит. Курить тут: http://www.opennet.ru/cgi-bin/opennet/ks.c...=16&zoom=&base= Ссылка на сообщение Поделиться на других сайтах
Mainstas 0 Опубліковано: 2005-04-29 10:48:09 Автор Share Опубліковано: 2005-04-29 10:48:09 Вы наверное неправильно поняли..вопрос не в том чтобы пускать в определенную подсеть по новому каналу... Как добавить в таблицу роут на определенную подсеть я и сам знаю ;-). Задача в том чтобы одновременно существовали 2 полноценных канала доступа в интернет на 1 машине... И часть пользователей направлялась по старому каналу а часть по новому. Причем нужно именно статическое распределение например айпи 192.168.0.1-10 ходят в инет по старому каналу, а 192.168.0.11-100 по новому каналу Ссылка на сообщение Поделиться на других сайтах
Den_LocalNet 1 474 Опубліковано: 2005-04-29 14:23:42 Share Опубліковано: 2005-04-29 14:23:42 Я линк зачем дал? http://www.opennet.ru/base/net/adv_route_qos.txt.html ip route add from ..... 4. Advanced Routing. Теперь я приведу несколько примеров, иллюстрирующих возможности table-routing. Для начала рассмотрим вариант простейшей маршрутизации по адресу src. Предположим, у нас есть высокоскоростной и дорогой линк на провайдера (xDSL) и медленный, но дешёвый линк по коммутируемуму доступу (dial-up). Маршрут по умолчанию в основной таблице установлен на xDSL, но мы хотим одну из машин внутренней сети направить в нашу медленную связь, и освободить таким образом основной канал. Теперь мы создадим для этой машины отдельную таблицу маршрутов, которую назовем Manager: # echo 100 Manager >> /etc/iproute2/rt_tables Далее создаем правило-селектор по адресу нашей выделенной машины, чтобы маршрутизация для нее переходила в новую таблицу: # ip rule add from 191.216.121.1 table Manager Осталось добавить маршрут по умолчанию в таблицу Manager (там пока пусто), и сбросить кэш маршрутов: # ip route add default via 191.216.121.14 dev ppp2 table Manager # ip route flush cache Все готово. Здесь ppp2 - наш дешёвый линк. Конечно это можно было сделать и не создавая отдельную таблицу маршрутов, это просто пример работы с таблицами. Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2005-04-29 16:14:41 Share Опубліковано: 2005-04-29 16:14:41 Мне кажется, это уже зовется polivy based routing. Хотя нет, точнее не только это Не знаю, как на линухе, а на фряхе, я думаю, можно сделать так, чтобы какие-то клиенты ходили через одного прова, а другие через другого. Я думаю, что в ipfw это можно сделать так: приходящий из локалки пакет в зависимости от адреса источника форвардить на нужный шлюз прова. А когда этот пакет ставить изходящим, NATить и, наверное, ещё раз форвардить до нужного шлюза =)) Как это в линуксе сделать - хуз. Ссылка на сообщение Поделиться на других сайтах
Гость Andrew Green Опубліковано: 2005-04-29 18:13:26 Share Опубліковано: 2005-04-29 18:13:26 Актуальная тема. Я вопрос пробовал решать с помощью iproute2 но там немного криво получается, оно не идет по каналу которвй свободнее как хотелось бы, а как получится. И так пока не очистятся кеши. Сейчас какраз думаю что можно сделать. А пока использую через прокси. Ссылка на сообщение Поделиться на других сайтах
martin 170 Опубліковано: 2005-04-29 19:24:30 Share Опубліковано: 2005-04-29 19:24:30 я думаю проще всего если у провов есть прокси то поставить себе сквид и он радлелит твои каналы поровну Ссылка на сообщение Поделиться на других сайтах
Гость Andrew Green Опубліковано: 2005-04-29 19:42:19 Share Опубліковано: 2005-04-29 19:42:19 Ето проще, но не лучше. Нужно копать в строну iproute2! Ссылка на сообщение Поделиться на других сайтах
Den_LocalNet 1 474 Опубліковано: 2005-04-29 21:33:54 Share Опубліковано: 2005-04-29 21:33:54 Народ! о чёмвы говорите? что криво? что нетак? да на базе iproute2 можно реализовать всё... было бы желание почитать.... всё работает прекрасно у меня на 2х каналах. и по клиентам и по подсетям и по типу трафика. Я лично видел как таким образому роутятся 4 канала..... и никаких проблем... 2XoRe: не знаю как там на фри, но судя по твоим догадкам это геморнее и не логичнее чем в линухах.... Ссылка на сообщение Поделиться на других сайтах
Гость Guest_Andrew_green Опубліковано: 2005-04-29 22:03:30 Share Опубліковано: 2005-04-29 22:03:30 Так подкинь пожлста пару скриптиков как ты по типу трафика делишь между каналами, буду очень благодарен! Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2005-04-29 23:47:56 Share Опубліковано: 2005-04-29 23:47:56 2Den_LocalNet: наверное =)) Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2005-04-30 05:17:07 Share Опубліковано: 2005-04-30 05:17:07 А как на счёт динамической маршрутизации по протоколам BGP например? Я про BSD говорю! Ссылка на сообщение Поделиться на других сайтах
Den_LocalNet 1 474 Опубліковано: 2005-04-30 07:20:09 Share Опубліковано: 2005-04-30 07:20:09 2Guest_Andrew_green: Блин! какие ленивые люди.... я вам линку дал, а вы даже почитать не можете? 1. в iptables маркируем трафик который нас интересует 2. весь маркированый трафик загоняем в таблицу 3. у таблицы есть свой гейтвей.... Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас