LINUX.ORG.RU
ФорумAdmin

Настройка iproute2


0

0

Всем привет! Столкнулся с небольшой проблемой, но вменяемых вариантов не подобрал, а экспериментировать, плохо разбираясь в сути вопроса, боязно... Буду благодарен за советы и помощь.

1. Есть компьютер под Дебианом. На данный момент выполняет роль веб-сервера. Имеет три сетевых карты:

eth0 - подключена к Корбине, с помощью скрипта на ней поднимается интерфейс ppp0, который получает статический айпишник и смотрит в интернет. На данном айпишнике висит апач, и рулит сайтами. Всё работает отлично, модификации не подлежит.

eth1 - подключена к ОнЛайму. По DHCP получает постоянный айпишник, и смотрит в интернет. Снаружи доступно, всё нормально. На данный момент отключено, ибо при подключении валится Корбина.

eth2 - локальная сетка. Используется для заливки на сервер больших объёмов файлов и администрирования. Работает без проблем.

2. Надо настроить интерфейсы следующим образом.

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

2.2. Пустить локальную сетку из нескольких компов со шлюзом eth2 (192.168.1.1) через eth1 (ОнЛайм) в интернет (браузер, почта, торренты).

2.3. Корбиновский канал eth0 используется только для сервера. Онлаймовский eth1 - для раздачи интернета в локалку, и для сервера, в случае падения Корбины.

2.4 Желательно пропускную способность онлаймовского канала разбить пополам: половина на сервер, половина на интернет для локалки.

Если будут хотя бы приблизительные инструкции по настройке - буду очень благодарен. За помощь в настройке - готов проставиться кучей пива. :)


сделать несколько таблиц маршрутизации и применять их, исходя из каких-то критериев, например, src ip.

что касается скорости - изучить tc.

AS ★★★★★ ()

На самом деле тут имеют место быть три отдельные задачи:

1. Обеспечение одновременной работы двух каналов _на вход_.

Делается следующим образом: создаешь по одной таблице на каждый канал. В каждой таблице свой канал прописывает дефолтным шлюзом. Например,

ip ro add default via айпишник_шлюза_онлайма dev eth1 table 101
ip ro add default dev ppp0 table 102

Далее рисуешь правила, чтобы исходящие пакеты с внешних айпишников роутились через правильные таблицы
ip ru add from адрес_от_онлайма table 101 pref 101
ip ru add from адрес_от_корбины table 102 pref 102

Еще нужно обеспечить корректную обработку редких ситуаций, вроде обращения на внешние адреса из локалки
ip ro add твоя_локалка/маска dev eth2 table 10
ip ro add локалка_от_онлайма/маска dev eth1 table 10
ip ru add table 10 pref 10

После этого обращения снаружи на оба айпишника должны работать.

2. Использование корбиновского канала в качестве основого шлюза и фейловер на базе онлайма.

Здесь нужен скрипт, который пингует некие внешние хосты, и при высоких потерях подменяет дефолтный шлюз. Например, такой (http://paste.org.ru/?dsem7p). Но конкретно этот заточен под нормальных провайдеров, а не pppoe, так что придется тебе поработать напильником.

Без фейловера все просто: прописываешь основного прова как шлюз по умолчанию в таблице main, и все ходят через него (кроме тех, кто пришел снаружи через другого прова).

3. Шейпинг соединений. Тут все относительно просто: вешаешь на все интерфейсы (кроме eth0) htb, выделив там классы для транзитного трафика (заруливается через filter) и для всего остального (т.е. собственно серверного).

nnz ★★★★ ()
Ответ на: комментарий от nnz

Увы, я относительно начинающий линуксоид, и некоторые вещи мне не совсем понятны.

Если я правильно понимаю (судя по командам), без iproute нельзя? Ибо стандартных iptables и иже с ним не хватит.

Хотелось бы уточнить.

1. По обеспечению работы двух каналов на вход вроде всё понятно, огромное спасибо. Но у меня пока что не стоит iproute, надо ставить. Перед установкой iproute обязательно пересобирать ядро?

2. Использование корбиновского канала в качестве основого шлюза и фейловер на базе онлайма.

Про скрипт понял, но не проще ли проверить, упал ли ppp0?

С дальнейшими задачами буду разбираться позже. Для меня сейчас главное - чтобы сервер был доступен по двум айпишникам. Интернет для локалки и разделение онлаймовского канала по скорости - могут и подождать.

Holmik ()
Ответ на: комментарий от Holmik

>Если я правильно понимаю (судя по командам), без iproute нельзя?

Да. iptables не занимается маршрутизацией.
Во всяком случае, с тех пор как действие ROUTE окончательно сгнило в p-o-m.

Перед установкой iproute обязательно пересобирать ядро?


Нафига? У тебя дистр семилетней давности? В современных дистрах все необходимое уже давно включено в ядро, а проги для iproute2 доступны в стандартных репах.

Про скрипт понял, но не проще ли проверить, упал ли ppp0?


Можно и так, хотя оно не обработает ситуацию, когда pppoe работает, а ip наружу через него не ходит (например, у прова аплинк упал).

nnz ★★★★ ()
Ответ на: комментарий от nnz

>Нафига? У тебя дистр семилетней давности?

Был четвёртый, в данный момент решил проблему с обновлением (не цеплялся репозиторий), сейчас обновляется на пятый. Просто те материалы, которые я читал по iproute, все содержали указания по пересборке ядра. Видно, устарели...

Можно и так, хотя оно не обработает ситуацию, когда pppoe работает, а ip наружу через него не ходит (например, у прова аплинк упал).

Соглашусь. Но пока что хоть так. Да, блин, придётся скриптятину ваять, чтобы она ещё и проверяла, как там корбина поживает, если по рррое пинг не проходит... Потому что для сервака корбиновский канал главный. Он не должен долго на онлайме сидеть.

Короче, бэкап винта сделал, щас систему обновлю, и начну ковыряться...

Holmik ()
Ответ на: комментарий от nnz

Обновление не удалось (проблемы с этим грёбаным рррое). Дебиан остался четвёртым. Завтра прицеплю сидюк с дистрибутивом четвёртого, буду пробовать ставить iproute оттуда.

Holmik ()
Ответ на: комментарий от Holmik

> Про скрипт понял, но не проще ли проверить, упал ли ppp0?

Это вообще не нужно. При его падении маршруты сами пропадут. Но уточнение от nnz про аплинк оператора верное.

AS ★★★★★ ()
Ответ на: комментарий от AS

>При его падении маршруты сами пропадут.

Верно. У меня так и сделано. Когда ppp0 падает, маршрут с его 5й метрикой пропадает и всё идёт на eth0. squid этого даже не замечает.

Gordon01 ★★ ()
Ответ на: комментарий от nnz

Вроде обновился, поставил iproute, начал с ним ковыряться. Прописал в /etc/iproute2/rt_tables две таблицы:

10 tablecorbina 20 tableonlime

И нашёл в сети вот такой скриптик:

http://www.gadjievo.ru/forum/showthread.php?t=1610

Который пытаюсь творчески переработать. Вопрос: там, где пишется имя интерфейса провайдера мне нужно писать eth0 или ppp0?

Holmik ()
Ответ на: комментарий от Holmik

ppp0

Но учти, что обычно у pppoe нет айпишника гейта. Например, дефолтный маршрут нормального провайдера задается так:
ip ro add default via айпишник_шлюза dev ethX
а для pppoe-провайдера — так:
ip ro add default dev pppX

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

nnz ★★★★ ()
Ответ на: комментарий от nnz

Уже понял. Тем более, оно нифига не работает. Хотя, возможно я чего-то недопонял, и не так делаю. Сейчас пытаюсь адаптировать твой вариант, но что-то тоже не фонтан выходит. Короче, думать надо.

Holmik ()
Ответ на: комментарий от nnz

Короче, пока сделал вот что:

1) создал 2 таблицы в файле /etc/iproute2/rt_tables

10 tablecorbina

20 tableonlime

И сейчас пишу скрипт. Наваяю - выложу.

Holmik ()
Ответ на: комментарий от nnz

Мдя... Похоже, задача отодвигается на второй план... Вчера обновил Дебиан с четвёрки на пятёрку. И тут началось... PPTP когда захотел - тогда и поднялся. MySQL когда захотел - тогда и поднялся. Захотел - лёг. Вебмин поднимается с десятого раза. Короче, пипец полный.

Скоро уезжаю на отдых, а задачу так и не решил. Уже готов подарить ящик холодного пива с доставкой за решение проблемы. :)

Holmik ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.