Биллинговая система Nodeny
28 Марта 2024, 20:16:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2 3 ... 6
  Печать  
Автор Тема: два провайдера 2 шлюза  (Прочитано 59959 раз)
killall
NoDeny
Пользователь
*

Карма: 2
Offline Offline

Сообщений: 29


Торент-трекер без рейтинга Reliz.org.ua


Просмотр профиля WWW Email
« : 14 Апреля 2010, 13:39:19 »

подскажите возможноли реализовать:
1. есть 2 прова (P1, P2)
2. 2 шлюза (PS1,PS2)
Требуеться:
Порт 80 пускать через провайдера P1 шлюз PS1.
Весть остальной трафик через P2 шлюз PS2.
defaultrouter=PS1.
Как реальзовать через pf.
Записан

Торент-трекер без рейтинга Reliz.org.ua
killall
NoDeny
Пользователь
*

Карма: 2
Offline Offline

Сообщений: 29


Торент-трекер без рейтинга Reliz.org.ua


Просмотр профиля WWW Email
« Ответ #1 : 14 Апреля 2010, 14:02:46 »

на данный момент найдена такой конфиг
Цитировать
lan_net = "192.168.0.0/24"
int_if  = "vlan2"

ext_if1 = "vlan3"
ext_if2 = "vlan4"

ext_gw1 = "10.128.0.1"
ext_gw2 = "172.28.0.1"

#  nat исходящие соединения на каждый интерфейс Интернета
nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)

#  по дефолту deny
block in  from any to any
block out from any to any

#  pass all исходящие пакеты на внутреннем интерфейсе
pass out on $int_if from any to $lan_net

#  pass in quick any пакеты, предназначенные для шлюза itself
pass in quick on $int_if from $lan_net to $int_if

#  балансировка исходящего tcp трафика от внутренней сети.
pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin proto tcp from $lan_net to any flags S/SA modulate state

#  балансировка исходящего udp и icmp трафика от внутренней сети
pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin proto { udp, icmp } from $lan_net to any keep state

#  Общие "pass out" правила для внешних интерфейсов
pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp } from any to any keep state
pass out on $ext_if2 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if2 proto { udp, icmp } from any to any keep state

#  маршрутизации пакетов с любого IP-адреса на $ext_if1 to $ext_gw1 и та же для $ext_if2 и $ext_gw2
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any

Как сделать так, чтобы 80 порт ходил через шлюз 2.
все остальное через шлюз1
Записан

Торент-трекер без рейтинга Reliz.org.ua
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1444



Просмотр профиля
« Ответ #2 : 14 Апреля 2010, 14:33:55 »

устанавливается прокси-сервер, и при помощи множественных таблиц маршрутизации (setfib) указывается на какой шлюз он должен работать. Все остальные решения скорее всего будут либо высоконагруженные, либо криво работать.
Записан
Александр (AleksHr)
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 324


Просмотр профиля
« Ответ #3 : 14 Апреля 2010, 15:00:03 »

устанавливается прокси-сервер, и при помощи множественных таблиц маршрутизации (setfib) указывается на какой шлюз он должен работать. Все остальные решения скорее всего будут либо высоконагруженные, либо криво работать.

Вот тут рулит микротик  Веселый. У меня после билинга стоит шлюз на микротике, там такая маршрутизация рещается за 5 минут, если начинать с 0 за день реально разобратся в микротике. А на фре ооооочень и даже очеееень сложно. + на микротике ето практически никакой серйезной нагрузкы не вызовет.
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 848


44306843
Просмотр профиля WWW Email
« Ответ #4 : 14 Апреля 2010, 15:02:57 »

Вот тут рулит микротик  Веселый. У меня после билинга стоит шлюз на микротике, там такая маршрутизация рещается за 5 минут, если начинать с 0 за день реально разобратся в микротике. А на фре ооооочень и даже очеееень сложно. + на микротике ето практически никакой серйезной нагрузкы не вызовет.

Вам пора уже деньги с фирмы микротик брать за рекламу :-)
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1444



Просмотр профиля
« Ответ #5 : 14 Апреля 2010, 15:08:01 »

да чего там сложного?
Пересобрать ядро - 20 минут + кофе попьете
Установить проксю - еще 20 минут + кофе
Настроить проксю по готовым конфигам еще час, это если в первый раз
Настроить биллинг для работы с проксей по этому форуму, это тоже час в первый раз
Запустить проксю с опцией setfib 1 - 5 минут
Дальше чай, кофе, пирожные, можно с девушкой.
Где тот день? который надо потратить чтобы разобраться с вашим микротиком? )))
« Последнее редактирование: 14 Апреля 2010, 15:09:45 от cell » Записан
smallcms
NoDeny
Старожил
*

Карма: 64
Offline Offline

Сообщений: 280



Просмотр профиля WWW
« Ответ #6 : 14 Апреля 2010, 15:52:20 »

подскажите возможноли реализовать:
1. есть 2 прова (P1, P2)
2. 2 шлюза (PS1,PS2)
Требуеться:
Порт 80 пускать через провайдера P1 шлюз PS1.
Весть остальной трафик через P2 шлюз PS2.
defaultrouter=PS1.
Как реальзовать через pf.

Возможно. Дарю:

Код:
set limit states 128000
set optimization aggressive

lan_net = "192.168.0.0/16"
int_if  = "xl0"
ext_if1 = "vr0"
ext_if2 = "vr1"
ext_gw1 = "192.168.30.1"
ext_gw2 = "192.168.31.1"

nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)

pass out on $int_if from any to $lan_net
pass in quick on $int_if from $lan_net to $int_if

#TEMPORARY FIX FOR PORT 80
pass in quick on $int_if proto tcp from $lan_net to any port 80

pass in on $int_if route-to \
    { ($ext_if2 $ext_gw2) } round-robin \
    proto tcp from $lan_net to any flags S/SA modulate state
pass in on $int_if route-to \
    { ($ext_if2 $ext_gw2) } round-robin \
    proto { udp, icmp } from $lan_net to any keep state

pass out on $ext_if2 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if2 proto { udp, icmp } from any to any keep state

В настоящее время не использую, поэтому за 100% работоспособность не ручаюсь, но тем не менее именно этим вариантом разносил 80 и всё остальное по двум каналам.
Записан

killall
NoDeny
Пользователь
*

Карма: 2
Offline Offline

Сообщений: 29


Торент-трекер без рейтинга Reliz.org.ua


Просмотр профиля WWW Email
« Ответ #7 : 14 Апреля 2010, 16:08:01 »

И так, сам отвечаю на свой вопрос.
Поковорявшись в изложеном мною выше конфиге немного его переделал.
Даже немного перевыполнил задуманое.

Дано:
2 прова.
пров 1: fxp0 шлюз ссс.ссс.ссс.ссс (онже прописан в дефаултроутер)
пров 2: xl0  шлюз nnn.nnn.nnn.nnn
Файл с списком юаикс сетей.
Значит конфиг умеет:
1. Весь 80 порт шлет через провайдера 2.
2. Все остальные ТСП порты которые направленны в юаикс делает роунд робин. Тоесть сумирует два канала.
3. Все остальные ТСП порты которые направленны НЕ в юаикс идут по дафаулт роутер.
4. udp, icmp которые направленны в юаикс делает роунд робин. Тоесть сумирует два канала.
5. udp, icmp которые НЕ направленны в юаикс пускает через дефаулт.
Собственно теперь сам скрипт.
Прошу раскритиковать и указать на ошибки.
Код:
lan_net = "10.110.0.0/24"
int_if  = "re0"

ext_if1 = "fxp0"
ext_if2 = "xl0"

ext_gw1 = "ссс.ссс.ссс.ссс"
ext_gw2 = "nnn.nnn.nnn.nnn"
table <ua-ix> persist file "/usr/local/nodeny/prefixes.txt"
#  nat исходящие соединения на каждый интерфейс Интернета
nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)
#  pass all исходящие пакеты на внутреннем интерфейсе
pass out on $int_if from any to $lan_net

#  pass in quick any пакеты, предназначенные для шлюза itself
pass in quick on $int_if from $lan_net to $int_if


#  Принимаем http трафик и пускаем его через шлюз $ext_gw2
pass in on $int_if route-to {($ext_if2 $ext_gw2)} inet proto tcp from $lan_net to !$lan_net port 80 flags S/SA modulate state
#  Принимаем остальной трафик и если он направлен в юаикс отправляем через 2 провайдера сразу
pass in on $int_if route-to {($ext_if1 $ext_gw1), (ext_if2 $ext_gw2)} round-robin sticky-address  proto {tcp} from $lan_net to <ua-ix> port {1:79 81:65444} flags S/SA modulate s

#  Принимаем остальной трафик и если он направлен !!!!!НЕ!!!!! в юаикс отправляем через шлюз $ext_gw1 который прописан в defaultrouter

#  Принимаем udp и icmp ели предназначены для юаикса пускаем через два провайдера сразу..
pass in on $int_if route-to {($ext_if1 $ext_gw1), (ext_if2 $ext_gw2) } round-robin sticky-address proto {udp,icmp } from $lan_net to <ua-ix> keep state

#  Общие "pass out" правила для внешних интерфейсов
pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp } from any to any keep state
pass out on $ext_if2 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if2 proto { udp, icmp } from any to any keep state

#  маршрутизации пакетов с любого IP-адреса на $ext_if1 to $ext_gw1 и та же для $ext_if2 и $ext_gw2
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any.
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any
Записан

Торент-трекер без рейтинга Reliz.org.ua
Unix
Гость
« Ответ #8 : 14 Апреля 2010, 21:22:48 »

И как в работе оно?  Уже проверял?
Записан
killall
NoDeny
Пользователь
*

Карма: 2
Offline Offline

Сообщений: 29


Торент-трекер без рейтинга Reliz.org.ua


Просмотр профиля WWW Email
« Ответ #9 : 14 Апреля 2010, 22:51:32 »

И как в работе оно?  Уже проверял?
проверил, пашет Улыбающийся
Записан

Торент-трекер без рейтинга Reliz.org.ua
killall
NoDeny
Пользователь
*

Карма: 2
Offline Offline

Сообщений: 29


Торент-трекер без рейтинга Reliz.org.ua


Просмотр профиля WWW Email
« Ответ #10 : 15 Апреля 2010, 13:43:28 »

Окончательный обкатанный вариант. Возможности теже, только icmp идет по разным каналов в зависимости от направления. + испарвленны ошибки в синтаксисе.
Код:
lan_net = "10.110.0.0/24"
int_if  = "re0"

ext_if1 = "fxp0"
ext_if2 = "xl0"

ext_gw1 = "ссс.ссс.ссс.ссс"
ext_gw2 = "nnn.nnn.nnn.nnn"
table <ua-ix> persist file "/usr/local/nodeny/prefixes.txt"
#  nat исходящие соединения на каждый интерфейс Интернета
nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)
#  pass all исходящие пакеты на внутреннем интерфейсе
pass out on $int_if from any to $lan_net

#  pass in quick any пакеты, предназначенные для шлюза itself
pass in quick on $int_if from $lan_net to $int_if

#  Принимаем http трафик и пускаем его через шлюз $ext_gw2
pass in on $int_if route-to { ($ext_if2 $ext_gw2) } inet proto tcp from $lan_net to !$lan_net port {80 443} flags S/SA modulate state

#  Принимаем остальной трафик и если он направлен в юаикс отправляем через 2 провайдера сразу
pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin sticky-address  proto {tcp} from $lan_net to <ua-ix> port {1:79 81:442 444:65500} flags S/SA

#  Принимаем остальной трафик и если он направлен !!!!!НЕ!!!!! в юаикс отправляем через шлюз $ext_gw1 который прописан в defaultrouter
pass in on $int_if route-to { ($ext_if1 $ext_gw1) } inet  proto {tcp} from $lan_net to !<ua-ix> port {1:79 81:442 444:65500} flags S/SA

#  Принимаем udp ели предназначены для юаикса пускаем через два провайдера сразу..
pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin proto { udp } from $lan_net to <ua-ix> keep state

#  Принимаем udp если не пренодлежит юаиксу пускаем через шлюз 1.
pass in on $int_if route-to { ($ext_if1 $ext_gw1) } inet proto { udp } from $lan_net to !<ua-ix> keep state

#  Принимаем icmp если пренодлежит юаиксу пускаем через шлюз 2.
pass in on $int_if route-to { ($ext_if2 $ext_gw2) } inet proto { icmp } from $lan_net to <ua-ix> keep state

#  Принимаем icmp если не пренодлежит юаиксу пускаем через шлюз 1.
pass in on $int_if route-to { ($ext_if1 $ext_gw1) } inet proto { icmp } from $lan_net to !<ua-ix> keep state



#  Общие "pass out" правила для внешних интерфейсов
pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp } from any to any keep state
pass out on $ext_if2 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if2 proto { udp, icmp } from any to any keep state

#  маршрутизации пакетов с любого IP-адреса на $ext_if1 to $ext_gw1 и та же для $ext_if2 и $ext_gw2
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any.
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any

« Последнее редактирование: 15 Апреля 2010, 13:48:51 от killall » Записан

Торент-трекер без рейтинга Reliz.org.ua
killall
NoDeny
Пользователь
*

Карма: 2
Offline Offline

Сообщений: 29


Торент-трекер без рейтинга Reliz.org.ua


Просмотр профиля WWW Email
« Ответ #11 : 15 Апреля 2010, 16:29:36 »

И всетаки баг есть в логи сыпиться:
Код:
pr 15 17:24:49 server last message repeated 75 times
Apr 15 17:24:49 server kernel: arpresolve: can't allocate llinfo for 10.110.1.1
Apr 15 17:24:49 server kernel: arpresolve: can't allocate llinfo for *****ip*****
Apr 15 17:24:49 server kernel: arpresolve: can't allocate llinfo for 10.110.1.1
Apr 15 17:24:49 server kernel: arpresolve: can't allocate llinfo for 10.110.1.1
Apr 15 17:24:50 server kernel: arpresolve: can't allocate llinfo for *****ip*****
Apr 15 17:24:50 server kernel: arpresolve: can't allocate llinfo for 10.110.1.1
Apr 15 17:24:50 server last message repeated 4 times
Apr 15 17:24:50 server kernel: arpresolve: can't allocate llinfo for *****ip*****
Apr 15 17:24:51 server last message repeated 5 times
Apr 15 17:24:51 server kernel: arpresolve: can't allocate llinfo for 10.110.1.1
Apr 15 17:24:51 server last message repeated 2 times
Apr 15 17:24:52 server kernel: arpresolve: can't allocate llinfo for *****ip*****
Apr 15 17:24:52 server kernel: arpresolve: can't allocate llinfo for 10.110.1.1
Apr 15 17:24:52 server last message repeated 5 times
Записан

Торент-трекер без рейтинга Reliz.org.ua
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1444



Просмотр профиля
« Ответ #12 : 15 Апреля 2010, 16:44:22 »

Ежики плакали, кололись но все равно продолжали жрать кактусы.
Записан
killall
NoDeny
Пользователь
*

Карма: 2
Offline Offline

Сообщений: 29


Торент-трекер без рейтинга Reliz.org.ua


Просмотр профиля WWW Email
« Ответ #13 : 15 Апреля 2010, 17:10:44 »

Ежики плакали, кололись но все равно продолжали жрать кактусы.
Согласен, но все пашет прекрасно. Система работает стабильно. Отключил запись етих сообщений в лог. подожду пока чтото случиться
« Последнее редактирование: 15 Апреля 2010, 17:16:38 от killall » Записан

Торент-трекер без рейтинга Reliz.org.ua
killall
NoDeny
Пользователь
*

Карма: 2
Offline Offline

Сообщений: 29


Торент-трекер без рейтинга Reliz.org.ua


Просмотр профиля WWW Email
« Ответ #14 : 15 Апреля 2010, 18:11:46 »

Согласен, но все пашет прекрасно. Система работает стабильно. Отключил запись етих сообщений в лог. подожду пока чтото случиться
Ежики плакали, кололись но все равно продолжали жрать кактусы. И ВСЕТАКИ НАЖРАЛИСЬ
ошибка найдена:)))))))))
почемуто пагубным окозалось
Код:
sticky-address
в строке
Код:
pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin sticky-address proto {tcp} from $lan_net to <ua-ix> port {1:79 81:442 444:65500} flags S/SA modulate state
Если сделать
Код:
pass in on $int_if route-to { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin proto {tcp} from $lan_net to <ua-ix> port {1:79 81:442 444:65500} flags S/SA modulate state
ТО ВСЕ ПРЕКРАСНО.
« Последнее редактирование: 15 Апреля 2010, 18:16:10 от killall » Записан

Торент-трекер без рейтинга Reliz.org.ua
Страниц: [1] 2 3 ... 6
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!