еще раз — 1. изучение iptables — полностью на вашей совести. пусть люди сами изучают 2. если понять фишку с маркировкой пакетов, то потом можно ее использовать при создании других правил как маршрутизации, так и фильтрации. считаю, что этот момент полезен и не столь очевиден при самостоятельном изучении как SNAT и MASQUERADE
>В очередной раз повторюсь, что использование SNAT в данном случае лучше чем >MASQUERADE. >Использование MASQUERADE вообще оправданно только в случае динамического IP на внешнем интерфейсе. > > >Не очень понимаю зачем нужно маркировать пакеты, если прямо в POSTROUTING можно >задавать условие -d
Уважаемый demon не могли бы вы привести кусок примера ?? просто получилось у меня только с использованием меток.. но он мешают при написании скрипта с шейпеньем. кстати неукого не завалялся скриптик 🙂 Т.З. дано два канала 1)eth1-унлим 2)eth2-обычный ну и мега сеть 10.x.x.x с внутренней маршрутизацией OSPF(L3 коммутаторы) где дефолтный гетвей наш линукс сервер. билинг создает правило 10.1.1.1 на первый интерфейси ограничиваем его 128к, а на второй интерфейс 10.1.1.2 и на скорость наплевать. сделал пока только первое. а вот с двумя интерфейсами уже нет так как метка уже стоит.
1.3 , rusya ( ok ), 16:40, 22/04/2008 [ответить] [﹢﹢﹢] [ · · · ]
+ / –
а какой айпишник указать в качестве гейта во второй локальной подсети? Или поднимать виртуальный интерфейс? Или что?
Странный пример в статье. На мой взгляд SNAT превосходит по производительности MASQUERADE, метки тоже не очень оправданы в принципи. Любую маршрутизацию которую надо сделать можно загнать в соответсвующие таблицы и не напрягать ядро левой работой с разбором меток. год назад делал объединение 5 каналов из одной подсети. К стати если случайно забанится один ипшник, то часть конектов будет попадать в мертвое соединение.
хм! а если надо одну и туже сеть например 192.168.0.0/24 пускать в инет по разному например 80 8080 и т.д. порты через одного прова а фтп почту и т.д. через другого как быть? и как интересно резолвится днс в данном случае если дефолтный маршрут только один у него и днс свой соответственно а второго прова свой днс который уже не резолвится если есть основной маршрут
сразу после строки ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1 table T1 пишет: RTNETLINK answers: Invalid argument и Error: an inet adress is expected rather than «table»
#все пакеты, которые попали в цепочку 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
POTROUTING заменить на POsTROUTING
далее в файле роутинг GW1=»1.1.1.1″ # гейт первого провайдера. GW2=»2.2.2.1″ # гейт второго провайдера.
заменить GW на GW_INET
кажется по мелочевке всё, это глупые ошибки, остальные ошибки можно увидеть тут сравнив ваш оригинал с моей рабочей версией: http://www.opennet.ru/openforum/vsluhforumID6/19056.html#0
объясните дураку как сделать доступным сервер в локалке по 2 провайдерам? я уже с ума сошел данным способом описанном здесь, да и вариантом попроще, доступен только сервер для 2 провайдеров, но не сервер в локальной сети
ip route add $INET_GATE dev $INET_IF src $INET_IP table T1 ip route add default via $INET_GATE table T1 ip route add $INET_GATE dev $INET_IF src $INET_IP
ip route add 127.0.0.0/8 dev lo table T1
ip route add $INET_GATEE dev $INET_IFF src $INET_IPP table T2 ip route add default via $INET_GATEE table T2 ip route add $INET_GATEE dev $INET_IFF src $INET_IPP
ip route add 127.0.0.0/8 dev lo table T2
ip route add $INET_GATE dev $INET_IF src $INET_IP ip route add $INET_GATEE dev $INET_IFF src $INET_IPP
ip route add default via $INET_GATE
ip rule add fwmark 101 table T1 ip rule add fwmark 102 table T2
iptables -t nat -A PREROUTING -d $INET_IP -p tcp -m multiport —dports 80 -j MARK —set-mark 101 iptables -t nat -A PREROUTING -d $INET_IPP -p tcp -m multiport —dports 80 -j MARK —set-mark 102
ниже 2 правила судя по логам отрабатывают iptables -A PREROUTING -t nat -d $INET_IP -p tcp -m multiport —dports 80 -j DNAT —to-destination 192.168.0.2 iptables -A PREROUTING -t nat -d $INET_IPP -p tcp -m multiport —dports 80 -j DNAT —to-destination 192.168.0.10
робит: iptables -t filter -A FORWARD -i $INET_IF -o $LAN_IF -d 192.168.0.2 -j ACCEPT а это уже нет: iptables -t filter -A FORWARD -i $INET_IFF -o $LAN_IF -d 192.168.0.10 -j ACCEPT
хм.. навороченное решение, наверное есть какие то плюсы, я решил ту же проблему несколько иначе, возможно кому то пригодится. сначала все как в примере, добавляем таблицы в /etc/iproute2/rt_tables 100 vlan2 (или ваши имена) 200 vlan2 300 vlan2 #vlan2 — подсеть 1 #vlan3 — подсеть 2 #vlan4 — подсеть 3 ip rule add from 192.168.0.0/26 table vlan2 #добавляем подсети в таблицы ip rule add from 192.168.0.64/26 table vlan3 ip rule add from 192.168.0.128/26 table vlan4 ip route add from 192.168.0.0/26 default via 192.168.2.186 dev br0 table vlan2 #добавляем роутер по умолчанию для этих подсеток ip route add from 192.168.0.64/26 default via 192.168.2.6 dev br0 table vlan3 ip route add from 192.168.0.128/26 default via 192.168.2.6 dev br0 table vlan4
Просмотр и построение таблиц маршрутизации в Linux
Содержание:
Что такое маршрутизация
Вся цифровая информация передаётся по сети в виде пакетов данных. По пути от отправителя к адресату они проходят через цепочку промежуточных устройств – маршрутизаторов (роутеров) и/или соответственно настроенных компьютеров.
Маршрутизация – это процесс определения пути (сетевого маршрута) для установки соединения между хост-устройствами. Этот путь настраивается как внутри локального устройства, так и на маршрутизаторе.
Построение сетевого маршрута происходит на основе информации из таблиц маршрутизации. Для их формирования применяются протоколы маршрутизации или инструкции сетевого администратора.
Каждая таблица содержит ряд параметров, позволяющих правильно идентифицировать и читать сетевой маршрут. Таблица содержит минимум 5 разделов:
Destination (Target). IP-адрес сети назначения – конечной цели для передаваемых данных.
Netmask (Genmask). Маска сети.
Gateway. IP-адрес шлюза, через который можно добраться до цели.
Interface. Адрес сетевого интерфейса, по которому доступен шлюз.
Опционально в таблице также может содержаться следующая информация:
адрес отправителя (source);
размер TCP-окна (window);
максимальная величина пакета (MSS) и типы записей.
Как посмотреть таблицу маршрутизации
Таблицу маршрутизации в Linux (например, в популярных серверных ОС типа Ubuntu или CentOS) можно посмотреть с помощью нескольких команд.
Команда route
Программа используется для настройки параметров статической маршрутизации. Просмотр таблицы можно осуществить с помощью команды:
Команда netstat
Утилита используется для сбора информации о состоянии сетевых соединений. Вывести таблицу можно с помощью команды:
Построение таблицы маршрутизации
Существует несколько основных утилит для настройки таблицы маршрутизации (добавления, обновления, удаления старых и новых маршрутов):
Route. Устаревшая утилита, входящая в состав пакета net-tools. Служит для отображения таблицы маршрутизации и построения статических маршрутов.
IP Route. Обновленный инструмент, призванный заменить Route. Имеет большую функциональность, по сравнению со своим предшественником.
Оба инструмента могут использоваться для выполнения аналогичных задач. Далее будет рассмотрен синтаксис каждого в пределе основных возможностей.
Route
Команда имеет следующий вид:
Ключи
-f – очистка таблиц от записей всех шлюзов.
-p – сохранение маршрута в качестве постоянного при использовании ADD. По умолчанию все маршруты временные и после перезагрузки системы сбрасываются.
Основные опции (command)
add – добавление маршрута.
del – удаление маршрута.
replace – замена маршрута.
change – изменение или настройка параметров маршрута.
Обозначения
[destination] – адрес сети назначения.
[MASKnetmask] – маска подсети.
[gateway] – адрес шлюза.
[METRICmetric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
[IFinterface] – сетевой интерфейс.
Опции для указания вводных данных
-net – целевая сеть.
-host – целевой хост.
gw – шлюз (Gateway).
dev – сетевой интерфейс.
netmask – маска подсети.
metric – метрика.
IP Route
Команда имеет следующий вид:
Основные опции (command)
add – добавление маршрута.
del – удаление маршрута.
replace – замена маршрута.
change – изменение или настройка параметров маршрута.
Обозначения
[destination] – адрес сети назначения.
[MASKnetmask] – маска подсети.
[gateway] – адрес шлюза.
[METRICmetric] – числовой показатель, задающий предпочтительность маршрута (используется в том случае, если устройство является маршрутизатором).
[IFinterface] – сетевой интерфейс.
Опции для указания вводных данных
via – используется в значении «через» для указания шлюза.
dev – сетевой интерфейс.
netmask – маска подсети.
metric – метрика.
Примеры статической маршрутизации
Составление нового маршрута
Можно представить два офиса: A и B. В каждом стоят маршрутизаторы на Linux, которые соединены между собой IP-IP туннелем.
Маршрутизатор A имеет IP-адрес — 192.168.1.1, а маршрутизатор B — 192.168.1.2.
Чтобы подключение к локальной сеть маршрутизатора A стало возможным из локальной сети маршрутизатора B и наоборот, нужно прописать на маршрутизаторе B:
Будет произведена установка шлюза «192.168.1.1» для сети «172.16.10.0/24».
Также необходимо прописать на маршрутизаторе A обратный маршрут в локальную сеть маршрутизатора B:
Изменение локальной сети
В случае изменения локальной сети маршрутизатора B, необходимо удалить старую запись:
А после добавить новый маршрут на маршрутизаторе А:
Изменение адреса тоннеля
Если на маршрутизаторе B изменится IP-адрес туннеля, то следует также актуализировать адрес шлюза на маршрутизаторе А:
После выполнения команды адрес шлюза для подсети «172.16.10.0/24» будет изменён.
Изменение провайдера
Чтобы перенаправить трафик через другого провайдера («ISP2»), следует изменить маршрут «по умолчанию» («default»):
Начни экономить на хостинге сейчас — 14 дней бесплатно!