маршрутизатор

Linux маршрутизатор с несколькими внешними интерфейсами. » [ LinuxOpen.ru ] Загрузка. Пожалуйста, подождите... новости книги игры библиотека программы форум поиск блог заметки подкасты вопросник 1C 3d Abbey action Adobe adsl AIR altlinux amarok AMD Apache apple apt-get asplinux backup bash beta big buck bunny bind blender bluetooth C++ Canonical cd Cedega Civilization clamav Creative debian Dell desktop directory server dns DOS dr web dr.web driver dvb dvd earth3d Eclipse emacs enterprise Etersoft faq fedora fedora8 fedoracore firefox firewall Flash FreeBSD ftp games gcc gentoo GIMP Gmail gnome GNU gnu linux google GPL GRUB GTK+ hardware hdd holywar HP html http IBM icq Inecs install Intel internet intertop ipod iptables irc iso Java kde kernel Knoppix koffice kubuntu lilo LiMo Linux Linux vs Windows linuxformat LinuxOpen.ru live dvd livecd mac mac os mail mandrake все теги » логин : пароль : Регистрация Напомнить пароль? « Март 2008 »ПнВтСрЧтПтСбВс 12345678910111213141516171819202122232425262728293031 Какой браузер вы используете? Firefox Opera Mozilla Internet Explorer Другой А на форуме: Новая тема для розыгрышейНа заре появления РАдмина мы с напарником коллегу так разыграли. Я, вальяжно развалившись в кресле, ...Grub, решение некоторых ошибок маршрутизатор ссылки[I][B]Важно! Приведённые примеры - это только примеры. Позаботьтесь, пожалуйста, чтобы номера ...Фоновая картинка в GRUB маршрутизатор LILOот сердца отрываю... CODE ; Copyright © 2002, Mark A. Moss ; All rights reserved.Adobe Flash Player маршрутизатор другие плагины для amd64Значит, для тех товарищей, которые не сразу хотят расстаться с архитектурой x86_64, маршрутизатор желают ещё ..."Не вводится" пароль в консоли!, куды бежать?Уважаемые товарищи! Когда вы пытаетесь набирать по запросу системы пароль в консоли, маршрутизатор ничего не ...Если бы у детей был свой форум, какие бы темы в нём были?"Пытается накормить меня цветной капустой: как реагировать?!" "Не какал всего 2 дня, как спастись ...Убило )))У юзеров винды появился ещё один аргумент против линукса Во время сборки компа для племянницы(она ... .rss2email2_txt {FONT-FAMILY: Tahoma, verdana, helvetica, arial;FONT-SIZE: 12px;COLOR: #17426A;} .rss2email2_lnk {FONT-FAMILY: Tahoma, verdana, helvetica, arial;FONT-SIZE: 12px;COLOR: #FF6300;} Что новенького на LinuxOpen.ru Партнёры: все партнёры Архив: Апрель 2008 (182)Март 2008 (197)Февраль 2008 (197)Январь 2008 (112)Декабрь 2007 (146)Ноябрь 2007 (94) Linux маршрутизатор с несколькими внешними интерфейсами. Бейсболка "root" В XIX веке самым популярным головным убором был цилиндр, в XX - каска. Сейчас, когда на дворе XXI век маршрутизатор прочие удобства цивилизации, человечество носит бейсболку. Бейсболка - не просто удобная кепка. Бейсболка - лидер среди головных уборов ! Настройка линукс маршрутизатора через iptables + iproute2 на два (и больше) внешних интерфейса. Предполагается: - то вы уже знакомы с понятием маршрутизации маршрутизатор ната. - теоретически понимаете как работает нат, что такое маршрутизация и файрвол, но не знаете как это реализовать на вашей системе. Имеется: - две входящие сетевые соски от двух разных провайдеров. - локальная сеть - три сетевых интерфейса на маршрутизаторе. Задача: Объеденить всех пользователей в одну локальную сеть маршрутизатор пускать одних пользователей в интернет через одного провайдера, других - через другого. В рассматриваемом примере, все пользователи в локальной сети будут находиться в сети 172.16.0.0/16, при этом пользователей из подсети 172.16.0.0/24 надо пропускать в интернет через первого провайдера, а пользователей 172.16.1.0/24 - через второго. Будем использовать iproute2 для таблиц маршуризации маршрутизатор iptables для ната. Обозначим: $IP_LOCAL="172.16.0.1" - адрес нашего маршрутизатора в локальной сети. $IP_INET1="1.1.1.2" - адрес нашего маршрутизатора в сети первого провайдера. $IP_INET2="2.2.2.2" - адрес нашего марщрутизатора в сети второго провайдера. $IF_LOCAL="eth0" - имя интерфейса на локальную сеть $IF_INET1="eth1" - имя интерфейса на первого провайдера. $IF_INET2="eth2" - имя интерфейса на второго провайдера. $NET_LOCAL="172.16.0.0/16" - локальная сеть. $NET_INET1="1.1.1.0/24" - адрес сети в которой гейт нашего первого провайдера. $NET_INET2="2.2.2.0/24" - адрес сети в которой гейт нашего второго провайдера. $NET_SUB1="172.16.0.0/24" - подсеть пользователей на первого провайдера $NET_SUB2="172.16.1.0/24" - подсеть пользователей на второго провайдера $GW1="1.1.1.1" - гейт первого провайдера. $GW2="2.2.2.1" - гейт второго провайдера. Настраиваем статические адреса на сетевые карты. Debian (ubuntu) хранит настройки в файле /etc/network/interfaces. пишем: auto lo iface lo inet loopback #local auto eth0 iface eth0 inet static address 172.16.0.1 netmask 255.255.0.0 network 172.15.0.0 broadcast 172.16.255.255 #inet 1 auto eth1 iface eth1 inet static address 1.1.1.2 netmask 255.255.255.0 gateway 1.1.1.1 network 1.1.1.0 broadcast 1.1.1.255 #inet 2 auto eth2 iface eth2 inet static #если надо - меняем мак адреса # pre-up ifconfig eth2 hw ether aa:bb:cc:cc:bb:aa address 2.2.2.2 netmask 2.2.2.0 # себе я второй гейт не прописываю, в следствии чего сам маршрутизатор ходит в инет через первый инет # gateway 2.2.2.1 network 2.2.2.0 broadcast 2.2.2.255 тем самым мы сказали, что все сетвые у нас имеют статические адреса, и указали их. Настаиваем маршрутизацию с утилитой ip. Утилита route позволяет нам обратиться к таблице маршртизации. Сила утилиты ip в том, что она позволяет создать большое количество таблиц для самых разных потребностей, маршрутизатор так же, способна считывать флаги, которые расставляет файрвол iptables (об этом ниже) маршрутизатор на их основе тоже делать какие-то действия. Основа маршрутизации через разные таблицы - правила (rule) А сила различных таблиц в том, что мы можем хранить огромное количество различных таблиц маршрутизации, через которые маршрутизатор будем пропускать пакеты. Просмотреть список уже имеющихся таблиц можно командой ip rule list 0: from all lookup 255 32766: from all lookup main 32767: from all lookup default Мы видим, что у нас есть три правила: таблица 255, main маршрутизатор default. То, что выдает нам route - хранится в таблице main, что можно увидеть командой ip route list table main В качестве номеров таблиц можно использовать цифры, ( пример: 0: from all lookup 255 ), маршрутизатор можно прописать на эти цифры какие-то более понятные простым смертным имена ( пример: 32766: from all lookup main ). Так что обозначим свои таблицы: Редактируем файл /etc/iproute2/rt_tables и добавляем туда записи вида: # # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 10 T1 20 T2 номер - это то самое число, которое мы можем использовать если не именовать таблицы, маршрутизатор строковое значение - то, что мы в действительности будем использовать. (кстати, тут же мы видим маршрутизатор уже встречавшиеся нам в списке правил таблицы) Теперь создаем некий скрипт, который в последствии будет все нам прописывать при старте системы. Понятное дело, что каждый использует свой любимый редактор =) /etc/init.d/route #!/bin/sh IP_LOCAL="172.16.0.1" # адрес нашего маршрутизатора в локальной сети. IP_INET1="1.1.1.2" # адрес нашего маршрутизатора в сети первого провайдера. IP_INET2="2.2.2.2" # адрес нашего марщрутизатора в сети второго провайдера. IF_LOCAL="eth0" # имя интерфейса на локальную сеть IF_INET1="eth1" # имя интерфейса на первого провайдера. IF_INET2="eth2" # имя интерфейса на второго провайдера. NET_LOCAL="172.16.0.0/16" # локальная сеть. NET_INET1="1.1.1.0/24" # адрес сети в которой гейт нашего первого провайдера. NET_INET2="2.2.2.0/24" # адрес сети в которой гейт нашего второго провайдера. GW1="1.1.1.1" # гейт первого провайдера. GW2="2.2.2.1" # гейт второго провайдера. ip route flush table T1 #обнуляем первую таблицу маршрутов ip route flush table T2 #обнуляем вторую таблицу маршрутов ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1 table T1 #закидываем в первую таблицу инфу о сети первого провайдера ip route add $NET_LOCAL dev $IF_LOCAL table T1 #закидываем в первую таблицу инфу о том, что у нас существует локальная сеть ip route add $NET_INET2 dev $IF_INET2 table T1 #закидываем в первую таблицу инфу о том, что у нас существует еще одна сеть ip route add 127.0.0.0/8 dev lo table T1 #закидываем в первую таблицу инфу о существовании лупбека ip route add default via $GW_INET1 table T1 #закидываем в первую таблицу дефолтный гейт на первого провайдера ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2 table T2 #закидываем во вторую таблицу инфу о сети второго провайдера ip route add $NET_LOCAL dev $IF_LOCAL table T2 #закидываем во вторую таблицу инфу о том, что у нас существует локальная сеть. ip route add $NET_INET1 dev $IF_INET1 table T2 #закидываем во вторую таблицу инфу о том, что у нас существует еще одна сеть. ip route add 127.0.0.0/8 dev lo table T2 #закидываем во вторую таблицу инфу о существовании лупбека. ip route add default via $GW_INET2 table T2 #закидываем во вторую таблицу дефолтный гейт на второго провайдера ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1 #заполняем основную таблицу адресов. сеть на первого провайдера ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2 #заполняем основную таблицу адресов. сеть на второго провайдера ip route add default via $GW_INET1 #заполняем основную таблицу адресов. дефолтный гейт. ip rule delete table T1 #удаляем наши таблицы, если они присутсвуют в текущей конфигурации (вдруг мы просто перезапускаем скрипт?) ip rule delete table T2 #аналогично для второй. ip rule delete table T1 #и делаем это два раза, так как у нас два правила на каждую таблицу. ip rule delete table T2 #аналогично для второй. #а вот это важно для понимая! если понять что происходит в следующих строчках - то можно настраивать любые правила маршрутизации. ip rule add from $IP_INET1 table T1 #все пакеты от ip адреса первого провайдера маршрутизировать по таблице T1 ip rule add from $IP_INET2 table T2 #все пакеты от ip адреса второго провайдера маршрутизировать по таблице T2 ip rule add fwmark 10 table T1 #все пакеты, которые имеют метку 10 маршрутизировать по таблице T1 ip rule add fwmark 11 table T2 #все пакеты, которые имеют метку 11 маршрутизировать по таблицу T2 ip route flush cache #ну маршрутизатор на последок очистить кеш exit 0 В целом, понятно все, за исключением одного вопроса - что же это за метка такая в последних строчках? Тут мы обращаемся к утилите iptables. Краткая теория. (полную маршрутизатор на русском языке можно, маршрутизатор вообще-то, даже нужно, читать тут http://www.opennet.ru/docs/RUS/iptables/ ) Утилита iptables так же основана на таблицах. только таблиц в ней фиксированно - три. mangles - таблица используется для изменений заголовков пакетов. filter - самая наша основаная таблица для файрвола - тут мы производим все блокировки, разрешения. nat - таблица, как понятно из названия для ната. Каждая таблица уже имеет некоторые предлопределенные цепочки, в которые можно добавлять правила, маршрутизатор так же поддерживает создание пользовательские цепочки. Когда паркт попадает на интерфейс, и, его ловит iptables, то он проходит следующие таблицы маршрутизатор цепочки, важные для нас: 1. таблица mangle цепочка PREROUTING 2. обработка маршрутизации. 3. таблица nat цепочка POSTROUTING (в действительно пакет проходит еще маршрутизатор через другие таблицы маршрутизатор цепочки, но, для планируемой маршрутизации они нафик не сдались - изучение этого вопроса уже полностью на вашей совести =) ). Скрипт для маршрутизации: /etc/init.d/iptables #!/bin/sh IP_LOCAL="172.16.0.1" # адрес нашего маршрутизатора в локальной сети. IP_INET1="1.1.1.2" # адрес нашего маршрутизатора в сети первого провайдера. IP_INET2="2.2.2.2" # адрес нашего марщрутизатора в сети второго провайдера. IF_LOCAL="eth0" # имя интерфейса на локальную сеть IF_INET1="eth1" # имя интерфейса на первого провайдера. IF_INET2="eth2" # имя интерфейса на второго провайдера. NET_LOCAL="172.16.0.0/16" # локальная сеть. NET_INET1="1.1.1.0/24" # адрес сети в которой гейт нашего первого провайдера. NET_INET2="2.2.2.0/24" # адрес сети в которой гейт нашего второго провайдера. NET_SUB1="172.16.0.0/24" # подсеть пользователей на первого провайдера NET_SUB2="172.16.1.0/24" # подсеть пользователей на второго провайдера GW1="1.1.1.1" # гейт первого провайдера. GW2="2.2.2.1" # гейт второго провайдера. IPT="/sbin/iptables" $IPT -t nat -F #очищаем таблицу nat $IPT -t mangle -F #очищаем таблицу mangle #все пакеты, которые попали в цепочку PREROUTING таблицы mangle обрабатываем по двум правилам: $IPT -t mangle -A PREROUTING -s $NET_SUB1 -d ! $NET_LOCAL -j MARK --set-mark 10 # все пакеты которые идут от $NET_SUB1 маршрутизатор не в $NET_LOCAL маркируем меткой 10 $IPT -t mangle -A PREROUTING -s $NET_SUB2 -d ! $NET_LOCAL -j MARK --set-mark 11 # все пакеты которые идут от $NET_SUB1 маршрутизатор не в $NET_LOCAL маркируем меткой 10 #все пакеты, которые попали в цепочку POSTROUTING таблицы nat обрабатываем по двум правилам: $IPT -t nat -A POTROUTING -m mark --mark 10 -j MASQUERADE # натим все пакеты которые имеют метку 10 $IPT -t nat -A POTROUTING -m mark --mark 11 -j MASQUERADE # натим все пакеты которые имеют метку 11 exit 0 И так, что же происходит. Пусть адрес пользователя 172.16.0.2 У пользователя прописан дефолтный гейт 172.16.0.1 - т.е. все пакеты которые направлены не в локальную сеть пойдут туда. На наш маршрутизатор приходит пакет от 172.16.0.2 маршрутизатор на адрес (к примеру) 4.4.4.4 1. пакет попадает в таблицу mangle в цепоку PREROUTING маршрутизатор там по правилу "все пакеты от $NET_SUB1 маршрутизатор не в $NET_LOCAL" маркируется меткой 10 и попускается дальше. 2. пакет попадает в правила маршрутизации маршрутизатор обрабатывается по правилу "все пакеты, которые имеют метку 10 маршрутизировать по таблице T1". попав в эту таблицу маршрутизатор отправляет пакет в дефолтный гейт для этой таблицы, т.к. адрес 4.4.4.4 не подходит ни под одну сеть, которые есть в этой таблице. 3. пакет попадает в таблицу nat в цепочку POSTROUTING маршрутизатор там по правилу "натим все пакеты которые имеют метку 10" натится наружу. Важный момент: метка пакета существует только внутри нашего марщрутизатора. выходящий пакет уже не имеет меток. Сам факт подобной реализации маршрутизации возможен только из-за того, что когда пакет обрабатывается правилами маршрутизации метка существует, так как после пакет возвращается на обработку в таблицы iptables. В целом, все =) Осталось только сделать наши скрипты исполняемыми маршрутизатор закинуть их на автозагрузку. Важно обратить внимание, что данный маршрутизатор будет маршрутизировать пакеты в обе стороны, так что если кто-то из внешних сетей пропишет себе ip нашей локальной сети, маршрутизатор укажет в качестве маршрутизатора ip нашего маршрутизатора - он спокойно попадет к нам. Но настройка файрвола - это уже второй вопрос, который в эту статью не входит. From: Трифонов Евгений aka ieroglif aka Sart <astahe@mail.ru.> Date: Mon, 6 Mar 2008 14:31:37 +0000 (UTC) [ Inecs / 26 марта 2008 / / / ] Похожие статьи Маршрутизация в случае нескольких подключений к провайдерамКак получить “не зависящий от провайдера” IP-адрес для домашнего сервера?Добавление подсети в вашей сетиНастройка VPN в ЛинуксСоздание vpn туннеля. ppp + ssh Информация Посетители, находящиеся в группе Посетители, не могут оставлять комментарии в данной новости. [root@linuxopen.ru ~]$ find ©2007 - 2008 Сергей Антропов о проекте • авторам • перепечатка • партнёры • реклама • помощь разделы электрический прочность вагонка половой доска деловой костюм цвет dufour скребковый конвейер велюкс билет задорнов архыз акриловый вкладыш напыление ппу безоперационное прерывание беременность бесплатный нард уничтожение данный тройник перех выборочный лак паркетный лак southpark сервис холодильник учет данный автошкола измеритель освещенность валерий билет санфаянс кожгалантерея трансперсональный психология этикетировочные машина магнитный доска газонокосилка black decker этнический психология озонатор воздуха купить джойстик подбор контрацепция белый кофе raymond weil глюкозамин-хондроитиновый комплекс восстановление информация крот dr вечерний платье подводный гидромассаж покраска рчв выведение бородавка система дымоудаления штукатурка фасадный герб область штендеры люминисцентная краска комнатный перегородка вагонка половой доска кулер процессор внутренний перегородка люминисцентная краска сдать анализ кровь багетный мастерский подбор холодильный камера компания макса линдера summer кухонный dunlup 205 55 r16 мистер бин зубной протез стопный пластырь прайс зеркало мини пекарня луковичный цвет детский мир головка винторезный кулер 754 хоссе карерас билет гайковерт газовый заправка knauf гипсокартон калибровка цвет система видеоконференция вкус цвет dhl бензопила stihl бахила оптом спецобувь заказ красный объявление сэндвич кофе-бар экстракт корень лопух сух. купить ножовка пежо 407 циклон батарейный мурано электросчетчик сэт зубной протез корпоративный хранилище данный спирли пежо 1с бюджетирование холодильник дешево александр вертинский. желтый танго fag мачта флагшток создание анимационный клип кофе колониальный товар дезинфекция белье shell варочный поверхность cata близорукость мачта флагшток дихроичное зеркало купить ниппель промальп покупка кострома купить отвед телефонный обзвон холодный штамповка пбоюл эрозия шейка матка штукатурка фасадный купить автотехнику покупка кострома inerta краска жила кострома профессиональный фарфор цвет гармония нард скачать бесплатный эрозия шейка матка слоеный изделие спецобувь оптом помещение шиномонтаж ковры резиновый лечение головокружение кулер холодильник оптом консультирование организация kiev apartaments service тонировка купить пк маршрутизатор распыление ароматизатор гостинницы спб trinity hi-fi nokia 3230 купить билет балет обрезание протеин фактурный краска рассылка корреспонденция отбеливание вымпел эфирный антенна kaasi 8800 gold edition дезинфекция белье скрипт рассылка объвлений кристофер брэнд скс доставка кулеров тонирование стеклопакетов дулевский фарфор измеритель температры тонировка помыть потолок этикетировочные машина лечение щитовидный железа фризер очки защитный чувствительный кожа прамышленый альпинизм трехмерный презентация эксимер лазер против рак чиллеры крутой компания переработка резина акриловый пряжа жила кострома бахила производитель купить мобильник виные холодильник электрокамин dimplex model silver (sp4) зиплок оформление свадеб ubiquam обогащение кислородом пежо 407 мигрень бесплатный нард винный холодильник кулер 478 отчетность пбоюл кожгалантерея snr roulements бюро похоронный услуга имплантат 1с бюджетирование средство самооборона промывка инжектор штукатурка фасадный конкурентный анализ стопный пластырь промальп уничтожение данный аденома предстательный железа mobihel краска nokia 6021 купить mobil cut время иваново прайс сушильный машина фирменный цвет адресный база данный близорукость сухой мороженый обрезание бюгельные зубной протез пломбирование лекарство рак sony ericsson k790i купить рефконтейнеры редизайн кострома шелкография маршрутизатор