The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Маршрутизация, выбор провайдера для адресов "
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от Alexovi4 (ok) on 20-Авг-09, 11:19 
Требуется настроить выбор одного из двух провайдеров для выхода в интернет для различных адресов одной большой локальной сети.
Это получилось реализовать 2 способами, теперь надо выбрать какой из них является оптимальным с точки зрения производительности работы, легкости управления списком адресов для выход через первого или второго провайдера.
Допустим есть локалка 192.168.1.0/24, имеющая выход в интернет через ПЕРВОГО провайдера. А надо для адреса 192.168.1.5 настроить выход через ВТОРОГО провайдера.
Два решения (добавляем в нижеприведенный скрипт):
   1) использовать маркировку пакетов:
iptables -t mangle -A PREROUTING -s 192.168.1.5 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j MARK --set-mark 20
iptables -t nat -A POSTROUTING -m mark --mark 10 -j SNAT --to-source $IP_PROV2
iptables -t nat -A POSTROUTING -m mark --mark 20 -j SNAT --to-source $IP_PROV1
ip rule add fwmark 10 lookup T_PROV2
ip rule add fwmark 20 lookup T_PROV1
   2) используя данные команды:
iptables -t nat -A POSTROUTING -s 192.168.1.5 -o $IF_PROV2 -j SNAT --to-source $IP_PROV2
ip rule add from 192.168.10.2 lookup T_PROV2 pref 2001
---------------------------------------------------------------------
#!/bin/bash
echo "1">/proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t mangle -F
ip route flush table T_PROV1
ip route flush table T_PROV2
iptables -t nat -A POSTROUTING -s $NET_LOCAL1 -o $IF_PROV1 -j SNAT --to-source $IP_PROV1
    #T_PROV1
    ip route add $NET_LOCAL1 dev $IF_LOCAL1 src $IP_LOCAL1 table T_PROV1
    ip route add $NET_PROV1 dev $IF_PROV1 src $IP_PROV1 table T_PROV1
    ip route add $NET_LOCAL2 dev $IF_LOCAL2 src $IP_LOCAL2 table T_PROV1
    ip route add $NET_PROV2 dev $IF_PROV2  src $IP_PROV2 table T_PROV1
    ip route add default via $GW_PROV1 table T_PROV1
    ip route add 127.0.0.0/8 dev lo table T_PROV1
    #T_PROV2
    ip route add $NET_PROV2 dev $IF_PROV2 src $IP_PROV2 table T_PROV2
    ip route add $NET_PROV1 dev $IF_PROV1 src $IP_PROV1 table T_PROV2
    ip route add $NET_LOCAL2 dev $IF_LOCAL2 src $IP_LOCAL2 table
    ip route add $NET_LOCAL1 dev $IF_LOCAL1 src $IP_LOCAL1 table T_PROV2
    ip route add default via $GW_PROV2 table T_PROV2
    ip route add 127.0.0.0/8 dev lo table T_PROV2
    #main
    ip route add $NET_LOCAL1 dev $IF_LOCAL1 src $IP_LOCAL1
    ip route add $NET_PROV1 dev $IF_PROV1 src $IP_PROV1
    ip route add $NET_PROV2 dev $IF_PROV2 src $IP_PROV2
    ip route add $NET_LOCAL2 dev $IF_LOCAL2 src $IP_LOCAL1
    ip route add default via $GW_PROV2
  
    ip rule delete table T_PROV1
    ip rule delete table T_PROV1
    ip rule delete table T_PROV2
    ip rule delete table T_PROV2
    ip rule delete table T_PROV1
    ip rule delete table T_PROV1
    ip rule delete table T_PROV2
    ip rule delete table T_PROV2

     ip rule add from $IP_PROV1 lookup T_PROV1 pref 2010
     ip rule add from $IP_PROV2 lookup T_PROV2 pref 2020
     ip rule add from $NET_LOCAL1 lookup T_PROV1 pref 2030
     ip rule add from $NET_LOCAL2 lookup T_PROV2 pref 2040
ip route flush cache
exit 0.
----------------------------------------------------------
Подскажите как управлять выбором провайдера для выхода в интернет для конкретных адресов локальной сети? Как это можно реализовать (подгружать из файла, руками добавлять правила iptable для адреса)?
Какие варианты решения данного вопроса существуют ещё?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от Rom1 (ok) on 24-Авг-09, 23:13 
>Подскажите как управлять выбором провайдера для выхода в интернет для конкретных адресов
>локальной сети? Как это можно реализовать (подгружать из файла, руками добавлять
>правила iptable для адреса)?
>Какие варианты решения данного вопроса существуют ещё?

Все правильно сделал. В iptables ручками, а точнее скриптом, записываешь хосты, и пакеты от каждого маркируешь так чтобы уходили через тот или иной шлюз.
Можно еще использовать u32, но суть/скорость от этого не меняется.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от ALex_hha (ok) on 24-Авг-09, 23:17 
> Подскажите как управлять выбором провайдера для выхода в интернет для конкретных адресов локальной сети?

# ip rule add from 192.168.127.100 table T_PROV1
# ip rule add from 192.168.127.200 table T_PROV2

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от Alexovi4 (ok) on 27-Авг-09, 14:18 
>> Подскажите как управлять выбором провайдера для выхода в интернет для конкретных адресов локальной сети?
>
># ip rule add from 192.168.127.100 table T_PROV1
># ip rule add from 192.168.127.200 table T_PROV2

Этого будет недостаточно, необходимо будет ещё добавлять правила SNAT для каждого узла, переводимого с одного провайдера на другого:
iptables -t nat -A POSTROUTING -s 192.168.127.200 -o $IF_PROV2 -j SNAT --to-source $IP_PROV2.

По крайней мере, у меня только такая схема заработала.
Но в этом случае для оперативного перевода на другого прова требуется добавления уже 2 строк (ip rule и iptables).

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от ALex_hha (ok) on 27-Авг-09, 14:37 
>>> Подскажите как управлять выбором провайдера для выхода в интернет для конкретных адресов локальной сети?
>>
>># ip rule add from 192.168.127.100 table T_PROV1
>># ip rule add from 192.168.127.200 table T_PROV2
>
>Этого будет недостаточно, необходимо будет ещё добавлять правила SNAT для каждого узла,
>переводимого с одного провайдера на другого:
>iptables -t nat -A POSTROUTING -s 192.168.127.200 -o $IF_PROV2 -j SNAT --to-source
>$IP_PROV2.

ну это же очевидно, что НАТ должен быть сделан для обоих провайдеров

>По крайней мере, у меня только такая схема заработала.
>Но в этом случае для оперативного перевода на другого прова требуется добавления
>уже 2 строк (ip rule и iptables).

А кто тебе мешает добавить сразу две строки в iptables?

# iptables -t nat -A POSTROUTING -s 192.168.127.0/24 -o $IF_PROV2 -j SNAT --to-source
$IP_PROV1
# iptables -t nat -A POSTROUTING -s 192.168.127.0/24 -o $IF_PROV1 -j SNAT --to-source
$IP_PROV1

они никак не мешают друг другу. А через кого именно выходить указывай с помощью ip rule

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от Alexovi4 (ok) on 27-Авг-09, 15:12 
>ну это же очевидно, что НАТ должен быть сделан для обоих провайдеров

Это понятно, я имел в виду что для каждого вновь добавляемого узла к ISP2 надо прописывать, допустим, такую строчку:

iptables -t nat -A POSTROUTING -s 192.168.127.1 -o $IF_PROV2 -j SNAT --to-source
$IP_PROV2

># iptables -t nat -A POSTROUTING -s 192.168.127.0/24 -o $IF_PROV2 -j SNAT
>--to-source
>$IP_PROV1
># iptables -t nat -A POSTROUTING -s 192.168.127.0/24 -o $IF_PROV1 -j SNAT
>--to-source
>$IP_PROV1
>
>они никак не мешают друг другу. А через кого именно выходить указывай
>с помощью ip rule

А вот такое решение в голову не приходило ((( Спасибо, попробуем

А вот про ip rule вы мне не подскажите ещё?
1) Подскажите, где и как в системе можно смотреть в какое из правил (ip rule) попадают пакеты?
2) Как правильно читать правила ip rule? Для примера: ip rule add from 11.11.11.11 lookup table T1 (я читаю так: для пакета пришедшего с адреса 11.11.11.11 искать маршрут в таблице T1, или здесь надо так: для пакета отправляемого с адреса 11.11.11.11 искать саршрут в таблице T1). А вообще как, ip rule работают как для исходящих, так и для входящих пакетов?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от ALex_hha (ok) on 27-Авг-09, 15:39 
>>ну это же очевидно, что НАТ должен быть сделан для обоих провайдеров
>
>Это понятно, я имел в виду что для каждого вновь добавляемого узла
>к ISP2 надо прописывать, допустим, такую строчку:

если адреса из одной подсети, то легче прописать сразу всю подсеть. Будет завсисить от самой задачи

>[оверквотинг удален]
>А вот такое решение в голову не приходило ((( Спасибо, попробуем
>А вот про ip rule вы мне не подскажите ещё?
>1) Подскажите, где и как в системе можно смотреть в какое из
>правил (ip rule) попадают пакеты?
>2) Как правильно читать правила ip rule? Для примера: ip rule add
>from 11.11.11.11 lookup table T1 (я читаю так: для пакета пришедшего
>с адреса 11.11.11.11 искать маршрут в таблице T1, или здесь надо
>так: для пакета отправляемого с адреса 11.11.11.11 искать саршрут в таблице
>T1). А вообще как, ip rule работают как для исходящих, так
>и для входящих пакетов?

где то я уже видел этот вопрос ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от Alexovi4 (ok) on 27-Авг-09, 15:18 
А ещё поднимается сразу вопрос о производительности.
Какой вариант будет работать быстрее, если количество узлов, которые надо раскидывать по провайдерам будет приблизительно 500?
1) Маркировка (iptables), выбор маршрута в ip rule fwmark.
2) Добавление ip rule для каждого узла?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от ALex_hha (ok) on 27-Авг-09, 15:41 
>А ещё поднимается сразу вопрос о производительности.
>Какой вариант будет работать быстрее, если количество узлов, которые надо раскидывать по
>провайдерам будет приблизительно 500?
>1) Маркировка (iptables), выбор маршрута в ip rule fwmark.
>2) Добавление ip rule для каждого узла?

Вот тут не подскажу, не занимался такой задачей.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Маршрутизация, выбор провайдера для адресов "  +/
Сообщение от Rom1 (ok) on 27-Авг-09, 22:54 
>А ещё поднимается сразу вопрос о производительности.
>Какой вариант будет работать быстрее, если количество узлов, которые надо раскидывать по
>провайдерам будет приблизительно 500?
>1) Маркировка (iptables), выбор маршрута в ip rule fwmark.
>2) Добавление ip rule для каждого узла?

Одинаково будет. Лично мне проще с iptables.
Вот по теме: https://www.opennet.ru/openforum/vsluhforumID1/86158.html

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру