маршрутизатор
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 купить
рефконтейнеры
редизайн кострома
шелкография
маршрутизатор