URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 82959
[ Назад ]

Исходное сообщение
"Разрулить два канала на FreeBSD"

Отправлено blackjackchik , 19-Ноя-08 19:09 
Привет всем.
Понимаю что тема заезженная но всетаки
Есть шлюз в интернет на фре.
Есть два канала в инет, первый по кабелю - по умолчанию default route, второй через дсл рутер.
Пять локальных подсетей.
Как бы всетаки прикрутить еще дсл, т.е. выпускать в инет определенных пользолвателей или целую подсеть через него?
Вот конфиг фаервола.
#!/bin/sh

ipfw='/sbin/ipfw -q'
net22='172.16.22.0/24'       # наша локальная сеть
net23='172.16.23.0/24'
net24='172.16.24.0/24'
net25='172.16.25.0/24'
net26='172.16.26.0/24'
net27='172.16.27.0/24'
net29='172.16.29.0/24'
net28='172.16.28.0/24'
net30='172.16.30.0/24'
net31='172.16.31.0/24'
net32='172.16.32.0/24'
net33='172.16.33.0/24'
net34='172.16.34.0/24'       # наша локальная сеть
net35='172.16.35.0/24'
net36='172.16.36.0/24'
net37='172.16.37.0/24'
net38='172.16.38.0/24'
net39='172.16.39.0/24'
net40='172.16.40.0/24'
net41='172.16.41.0/24'
net42='172.16.42.0/24'
net43='172.16.43.0/24'
net44='172.16.44.0/24'
net45='172.16.45.0/24'
net46='172.16.46.0/24'
net47='172.16.47.0/24'
net48='172.16.48.0/24'
net49='172.16.49.0/24'
net50='172.16.50.0/24'
net100='172.16.100.0/24'

${ipfw} -f table 5 flush
${ipfw} table 5 add ${net22}
${ipfw} table 5 add ${net23}
${ipfw} table 5 add ${net24}
${ipfw} table 5 add ${net25}
${ipfw} table 5 add ${net26}
${ipfw} table 5 add ${net27}
${ipfw} table 5 add ${net28}
${ipfw} table 5 add ${net29}
${ipfw} table 5 add ${net30}
${ipfw} table 5 add ${net31}
${ipfw} table 5 add ${net32}
${ipfw} table 5 add ${net33}
${ipfw} table 5 add ${net34}
${ipfw} table 5 add ${net35}
${ipfw} table 5 add ${net36}
${ipfw} table 5 add ${net37}
${ipfw} table 5 add ${net38}
${ipfw} table 5 add ${net39}
${ipfw} table 5 add ${net40}
${ipfw} table 5 add ${net41}
${ipfw} table 5 add ${net42}
${ipfw} table 5 add ${net43}
${ipfw} table 5 add ${net44}
${ipfw} table 5 add ${net45}
${ipfw} table 5 add ${net46}
${ipfw} table 5 add ${net47}
${ipfw} table 5 add ${net48}
${ipfw} table 5 add ${net49}
${ipfw} table 5 add ${net50}
${ipfw} table 5 add ${net100}


ifout='dc0'               # интерфейс смотрящий в инт
iflocal23='vlan23'              # интерфейс смотрящий в ЛС
iflocal26='vlan26'
iflocal22='vlan22'
iflocal24='vlan11'
iflocal25='vlan25'
iflocal27='vlan27'
iflocal28='vlan28'
iflocal29='vlan29'
iflocal30='vlan30'
iflocal31='vlan31'
iflocal32='vlan32'
iflocal33='vlan33'
iflocal34='vlan34'
iflocal35='vlan35'
iflocal36='vlan36'
iflocal37='vlan37'
iflocal38='vlan38'
iflocal39='vlan39'
iflocal40='vlan40'
iflocal41='vlan41'
iflocal42='vlan42'
iflocal43='vlan43'
iflocal44='vlan44'
iflocal45='vlan45'
iflocal46='vlan46'
iflocal47='vlan47'
iflocal48='vlan48'
iflocal49='vlan49'
iflocal50='vlan50'
iflocal100='vlan100'

${ipfw} -f flush

${ipfw} -f pipe flush
#########
${ipfw} pipe 1 config bw 3Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 2 config bw 3Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 3 config bw 3Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 4 config bw 3Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 5 config bw 3Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 6 config bw 3Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 7 config bw 3Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 8 config bw 3Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 9 config bw 7Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 10 config bw 7Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 11 config bw 3Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 12 config bw 3Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 13 config bw 64Kbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 14 config bw 64Kbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 15 config bw 128Kbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 16 config bw 64Kbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 17 config bw 256Kbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 18 config bw 256Kbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 19 config bw 3000Kbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 20 config bw 3000Kbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 21 config bw 512Kbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 22 config bw 256Kbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 23 config bw 7Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 24 config bw 7Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 25 config bw 7Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 26 config bw 7Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 27 config bw 7Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 28 config bw 7Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 29 config bw 7Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 30 config bw 7Mbit/s mask src-ip 0XFFFFFFFF
${ipfw} pipe 31 config bw 3Mbit/s mask dst-ip 0XFFFFFFFF
${ipfw} pipe 32 config bw 3Mbit/s mask src-ip 0XFFFFFFFF

${ipfw} add 20 check-state #+

${ipfw} add 25 allow ip from any to any via lo0 #+

${ipfw} add 30 allow ip from me to any keep-state #+

#${ipfw} add 5 deny all from any to any 8167
${ipfw} add 35 allow all from any to any 2350
${ipfw} add 40 allow ip from "table(5)" to "table(5)"

#${ipfw} add 11 deny ip from any to me 80 via ${ifout}
${ipfw} add 50 allow ip from any to me 6666,6667,6668,6669,6670

#${ipfw} add 20 count all from any to any via $ifout in
#${ipfw} add 21 count all from any to any via $ifout out
${ipfw} add 200 deny ip from "table(5)" to any 25,110,143

${ipfw} add 220 deny ip from not ${net22} to any via ${iflocal22} in #+
${ipfw} add 220 deny ip from not ${net23} to any via ${iflocal23} in #+
${ipfw} add 220 deny ip from not ${net24} to any via ${iflocal24} in #+
${ipfw} add 220 deny ip from not ${net25} to any via ${iflocal25} in #+
${ipfw} add 220 deny ip from not ${net26} to any via ${iflocal26} in #+
${ipfw} add 220 deny ip from not ${net27} to any via ${iflocal27} in #+
${ipfw} add 220 deny ip from not ${net28} to any via ${iflocal28} in #+
${ipfw} add 220 deny ip from not ${net29} to any via ${iflocal29} in #+
${ipfw} add 220 deny ip from not ${net30} to any via ${iflocal30} in #+
${ipfw} add 220 deny ip from not ${net31} to any via ${iflocal31} in #+
${ipfw} add 220 deny ip from not ${net32} to any via ${iflocal32} in #+
${ipfw} add 220 deny ip from not ${net33} to any via ${iflocal33} in #+
${ipfw} add 220 deny ip from not ${net34} to any via ${iflocal34} in #+
${ipfw} add 220 deny ip from not ${net35} to any via ${iflocal35} in #+
${ipfw} add 220 deny ip from not ${net36} to any via ${iflocal36} in #+
${ipfw} add 220 deny ip from not ${net37} to any via ${iflocal37} in #+
${ipfw} add 220 deny ip from not ${net38} to any via ${iflocal38} in #+
${ipfw} add 220 deny ip from not ${net39} to any via ${iflocal39} in #+
${ipfw} add 220 deny ip from not ${net40} to any via ${iflocal40} in #+
${ipfw} add 220 deny ip from not ${net41} to any via ${iflocal41} in #+
${ipfw} add 220 deny ip from not ${net42} to any via ${iflocal42} in #+
${ipfw} add 220 deny ip from not ${net43} to any via ${iflocal43} in #+
${ipfw} add 220 deny ip from not ${net44} to any via ${iflocal44} in #+
${ipfw} add 220 deny ip from not ${net45} to any via ${iflocal45} in #+
${ipfw} add 220 deny ip from not ${net46} to any via ${iflocal46} in #+
${ipfw} add 220 deny ip from not ${net47} to any via ${iflocal47} in #+
${ipfw} add 220 deny ip from not ${net48} to any via ${iflocal48} in #+
${ipfw} add 220 deny ip from not ${net49} to any via ${iflocal49} in #+
${ipfw} add 220 deny ip from not ${net50} to any via ${iflocal50} in #+
${ipfw} add 220 deny ip from not ${net100} to any via ${iflocal100} in #+

${ipfw} add 240 deny ip from any to not me via ${ifout} in #+
${ipfw} add allow tcp from any to me ssh

# NAT
#${ipfw} add 250 divert 8778 ip from 172.16.26.3 to any
#${ipfw} add 251 fwd 192.168.101.101 ip from 172.16.26.3 to any out
#${ipfw} add 252 divert 8778 ip from any to 172.16.26.3

${ipfw} add 260 divert natd all from any to not "table(5)" via ${ifout}
${ipfw} add 270 allow ip from any to not "table(5)" via ${ifout} out


${ipfw} add 310 allow tcp from any to me 80
${ipfw} add 310 allow tcp from any to me 3128
${ipfw} add 310 allow tcp from any to me 81
${ipfw} add 310 allow tcp from any to me 443


${ipfw} add 330 allow icmp from any to me

${ipfw} add 340 allow udp from any to me 53 via ${iflocal23}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal23}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal22}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal22}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal24}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal24}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal25}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal25}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal26}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal26}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal27}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal27}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal28}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal28}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal29}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal29}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal30}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal30}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal31}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal31}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal32}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal32}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal33}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal33}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal34}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal34}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal35}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal35}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal36}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal36}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal37}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal37}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal38}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal38}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal39}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal39}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal40}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal40}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal41}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal41}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal42}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal42}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal43}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal43}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal44}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal44}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal45}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal45}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal46}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal46}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal47}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal47}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal48}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal48}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal49}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal49}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal50}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal50}
${ipfw} add 340 allow udp from any to me 53 via ${iflocal100}
${ipfw} add 340 allow tcp from any to me 53 via ${iflocal100}


${ipfw} add 350 allow udp from any to me 7723 via ${iflocal22}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal23}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal24}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal25}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal26}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal27}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal28}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal29}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal30}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal31}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal32}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal33}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal34}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal35}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal36}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal37}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal38}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal39}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal40}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal41}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal42}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal43}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal44}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal45}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal46}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal47}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal48}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal49}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal50}
${ipfw} add 350 allow udp from any to me 7723 via ${iflocal100}
${ipfw} add 400 deny ip from any to me

${ipfw} add 450 allow ip from any to any via ${ifout}
${ipfw} add 500 fwd 127.0.0.1,3128 tcp from 172.16.22.0/24 to any 80 via ${iflocal22}
${ipfw} add 500 fwd 127.0.0.1,3128 tcp from 172.16.23.0/24 to any 80 via ${iflocal23}
${ipfw} add 500 fwd 127.0.0.1,3128 tcp from 172.16.24.0/24 to any 80 via ${iflocal24}
${ipfw} add 500 fwd 127.0.0.1,3128 tcp from 172.16.25.0/24 to any 80 via ${iflocal25}
${ipfw} add 500 fwd 127.0.0.1,3128 tcp from 172.16.26.0/24 to any 80 via ${iflocal26}
${ipfw} add 500 fwd 127.0.0.1,3128 tcp from 172.16.31.0/24 to any 80 via ${iflocal31}
${ipfw} add 500 fwd 127.0.0.1,3128 tcp from 172.16.32.0/24 to any 80 via ${iflocal32}
${ipfw} add 500 fwd 127.0.0.1,3128 tcp from 172.16.100.0/24 to any 80 via ${iflocal100}
${ipfw} add 65400 deny all from any to any


Содержание

Сообщения в этом обсуждении
"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 10:42 
эта система не предназначена для мультироутинга - этим занимается линукс
сам на него перешел изза мультилинков
читай linux advanced routing howto

"Разрулить два канала на FreeBSD"
Отправлено swm , 20-Ноя-08 10:58 
>эта система не предназначена для мультироутинга - этим занимается линукс

Ну... слово ПОКА пропущено :) Хотя линукс - да, новые фишки в нем быстрее появляются.

Касательно проблемы - во FreeBSD (как и в линуксе) есть policy based routing. Он позволяет выбирать маршрут (и соответственно шлюз) на основе адреса отправителя пакета.
Так что если нужно жестко поделить "РС1 ходит через шлюз А, а РС2 через шлюз В" (ну или подсети вместо конкретных РС) - то самое оно ... Поиском по этому форуму пройдись, точно было, сам отсюда брал :)

Вот если станет вопрос о балансировке между каналами без настроек у провайдера - это гораздо интереснее :). Линукс говорят умеет, а на Фре все хуже..


"Разрулить два канала на FreeBSD"
Отправлено blackjackchik , 20-Ноя-08 11:13 
>[оверквотинг удален]
>routing. Он позволяет выбирать маршрут (и соответственно шлюз) на основе адреса
>отправителя пакета.
>Так что если нужно жестко поделить "РС1 ходит через шлюз А, а
>РС2 через шлюз В" (ну или подсети вместо конкретных РС) -
>то самое оно ... Поиском по этому форуму пройдись, точно было,
>сам отсюда брал :)
>
>Вот если станет вопрос о балансировке между каналами без настроек у провайдера
>- это гораздо интереснее :). Линукс говорят умеет, а на Фре
>все хуже..

Блин, а зря что на фрю до сих пор не портировали iproute2


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 11:22 
>
>Блин, а зря что на фрю до сих пор не портировали iproute2
>

уже портировали только релиз бета
у мну 4 канала пришлось с фти перейти на линукс
скажу честно не жалею - имхо линукс оч гобкая система в плание балансировки


"Разрулить два канала на FreeBSD"
Отправлено Aess , 20-Ноя-08 11:24 
>>
>>Блин, а зря что на фрю до сих пор не портировали iproute2
>>
>
>уже портировали только релиз бета
>у мну 4 канала пришлось с фти перейти на линукс
>скажу честно не жалею - имхо линукс оч гобкая система в плание
>балансировки

У меня два канала. 3-ий будет на днях. На Линухах юзаю скрипт писаный на коленке ))


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 11:27 
>
>У меня два канала. 3-ий будет на днях. На Линухах юзаю скрипт
>писаный на коленке ))

а нам какая польза от того что ты такой умный?
похвастаться решил?


"Разрулить два канала на FreeBSD"
Отправлено blackjackchik , 20-Ноя-08 11:33 
Я б тоже перешол, но биллинг написанный под фрю стоит на этом серваке - его нельзя трогать


"Разрулить два канала на FreeBSD"
Отправлено blackjackchik , 20-Ноя-08 11:35 
>Я б тоже перешол, но биллинг написанный под фрю стоит на этом
>серваке - его нельзя трогать

Кроме того мне в отличие от линукса нравиться ipfw в фре.
Получаеться палка в двух концах.


"Разрулить два канала на FreeBSD"
Отправлено Aess , 20-Ноя-08 12:48 
>>
>>У меня два канала. 3-ий будет на днях. На Линухах юзаю скрипт
>>писаный на коленке ))
>
>а нам какая польза от того что ты такой умный?
>похвастаться решил?

Да нет ) инфу я накопал тут же ) могу выложить свой скрипт ) но его тут можно накопать. есси комуто лень искать могу дать 344830057


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 13:11 

>
>Да нет ) инфу я накопал тут же ) могу выложить свой
>скрипт ) но его тут можно накопать. есси комуто лень искать
>могу дать 344830057

как ты шейпиш трафик по юзерам?
у меня сейчас разбивка на каналы по 512 кбит и все юзеры разбиты на группы и каждая группа в отдельный канал
но это плохо
сейчас пытаюсь включить поддержку patch-o-matic там есть опция nth - поставлю каждый н-ый пакет в н-ый канал
имхо самый верныый балланс нагрузки
поделись своим опытом


"Разрулить два канала на FreeBSD"
Отправлено Aess , 20-Ноя-08 13:26 
>[оверквотинг удален]
>>могу дать 344830057
>
>как ты шейпиш трафик по юзерам?
>у меня сейчас разбивка на каналы по 512 кбит и все юзеры
>разбиты на группы и каждая группа в отдельный канал
>но это плохо
>сейчас пытаюсь включить поддержку patch-o-matic там есть опция nth - поставлю каждый
>н-ый пакет в н-ый канал
>имхо самый верныый балланс нагрузки
>поделись своим опытом

А никак )
Риально када один канал забит система сама кидает пакет во второй канал. ИМХО удобно, тока таблицы маршрутизации раздуваютьси.


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 13:46 
>
>А никак )
>Риально када один канал забит система сама кидает пакет во второй канал.
>ИМХО удобно, тока таблицы маршрутизации раздуваютьси.

то есть ты скорость не режешь?
получается что ты выделяешь соединению всю полосу пропучкания?
а почему ты решил что таблицы раздуваются?
откуда ты брал таблицы для мультироутинга?
я брал из вышеуказанной статьи - все работает даже и не смотрю в них


"Разрулить два канала на FreeBSD"
Отправлено Aess , 20-Ноя-08 14:26 
>[оверквотинг удален]
>>А никак )
>>Риально када один канал забит система сама кидает пакет во второй канал.
>>ИМХО удобно, тока таблицы маршрутизации раздуваютьси.
>
>то есть ты скорость не режешь?
>получается что ты выделяешь соединению всю полосу пропучкания?
>а почему ты решил что таблицы раздуваются?
>откуда ты брал таблицы для мультироутинга?
>я брал из вышеуказанной статьи - все работает даже и не смотрю
>в них

Принцып создания таблиц нарыл в интеренте ) Скорость не режу. Раздуваютьси в смысле добавляетьси несколько таблиц и основная становитьси здаровая. не сильно удобочитаемо.
Кста слышал дето че новые версии бсд по дефолту поддерживають два канала.


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 19:05 
>
>Принцып создания таблиц нарыл в интеренте ) Скорость не режу. Раздуваютьси в
>смысле добавляетьси несколько таблиц и основная становитьси здаровая. не сильно удобочитаемо.
>
>Кста слышал дето че новые версии бсд по дефолту поддерживають два канала.
>

я таблицы мультироутинга взял из мануала один к одному работают как часы мой тебе совет возьми оттуда там будет одна маин и по одной на каждый интерфейс
а что такое два канала если нужно разрулить несколько интерфейсов?


"Разрулить два канала на FreeBSD"
Отправлено Aess , 21-Ноя-08 12:34 
>[оверквотинг удален]
>>Принцып создания таблиц нарыл в интеренте ) Скорость не режу. Раздуваютьси в
>>смысле добавляетьси несколько таблиц и основная становитьси здаровая. не сильно удобочитаемо.
>>
>>Кста слышал дето че новые версии бсд по дефолту поддерживають два канала.
>>
>
>я таблицы мультироутинга взял из мануала один к одному работают как часы
>мой тебе совет возьми оттуда там будет одна маин и по
>одной на каждый интерфейс
>а что такое два канала если нужно разрулить несколько интерфейсов?

Два канала - всмысле два дефолт гэйта поддреживает


"Разрулить два канала на FreeBSD"
Отправлено kam , 20-Ноя-08 11:37 
>Вот если станет вопрос о балансировке между каналами без настроек у провайдера
>- это гораздо интереснее :). Линукс говорят умеет, а на Фре
>все хуже..

А можно про балансировку подробнее? В чём там проблема?


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 11:53 

>
>А можно про балансировку подробнее? В чём там проблема?

linux advanced routing & traffic control


"Разрулить два канала на FreeBSD"
Отправлено blackjackchik , 20-Ноя-08 12:45 
>>Вот если станет вопрос о балансировке между каналами без настроек у провайдера
>>- это гораздо интереснее :). Линукс говорят умеет, а на Фре
>>все хуже..
>
>А можно про балансировку подробнее? В чём там проблема?

Насколько я осведомлен в этих вопросах, то для небольших сетей можно пользоваться линуксом для балансировки. В случае же с большими сетями, следует использовать сиско и BGP


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 13:48 
>
>Насколько я осведомлен в этих вопросах, то для небольших сетей можно пользоваться
>линуксом для балансировки. В случае же с большими сетями, следует использовать
>сиско и BGP

А что такого может циско чего не может линукс?

или циска написана на сверхязыке?
а то что циска сама все разруливает и тут не надо мозгов а на линуксе нужны и мозги и руки то это другой разговор


"Разрулить два канала на FreeBSD"
Отправлено blackjackchik , 20-Ноя-08 13:55 
>[оверквотинг удален]
>>Насколько я осведомлен в этих вопросах, то для небольших сетей можно пользоваться
>>линуксом для балансировки. В случае же с большими сетями, следует использовать
>>сиско и BGP
>
>А что такого может циско чего не может линукс?
>
>или циска написана на сверхязыке?
>а то что циска сама все разруливает и тут не надо мозгов
>а на линуксе нужны и мозги и руки то это другой
>разговор

Может быть и так, но я в данный момент не могу установить линукс.


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 14:04 
>
>Может быть и так, но я в данный момент не могу установить
>линукс.

где-то я читал что на фре как-то можно разрулить два канала
более того на фре разруливают трафик пона внешний и внутренний и за рубеж и интранет
только забыл где видел  - искать надо
мне он не помог или я плохо разбирался


"Разрулить два канала на FreeBSD"
Отправлено blackjackchik , 20-Ноя-08 14:37 
>>
>>Может быть и так, но я в данный момент не могу установить
>>линукс.
>
>где-то я читал что на фре как-то можно разрулить два канала
>более того на фре разруливают трафик пона внешний и внутренний и за
>рубеж и интранет
>только забыл где видел  - искать надо
>мне он не помог или я плохо разбирался

Может вот тут http://ipfw.ism.kiev.ua/pbr.html ?
Но у меня проблема в том, что я не могу поднять нат на втором интерфейсе посокльку он уже поднят на дсл рутере. Если же все-таки создавать подключений на фре переведя дсл рутер в режим бриджа, то через несколько минут подключение ппп0 падает поскольку модем находится от фри на расстоянии 9 свичей, т.е. почти через всю локальную сеть.


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 20-Ноя-08 18:54 
>
>Может вот тут http://ipfw.ism.kiev.ua/pbr.html ?
>Но у меня проблема в том, что я не могу поднять нат
>на втором интерфейсе посокльку он уже поднят на дсл рутере. Если
>же все-таки создавать подключений на фре переведя дсл рутер в режим
>бриджа, то через несколько минут подключение ппп0 падает поскольку модем находится
>от фри на расстоянии 9 свичей, т.е. почти через всю локальную
>сеть.

насколько мне известно, система ничего не знает об устройствах и тем более службах на другом конце второго интерфейса
я тоже не смог разрулить второй нат: второй нат создал, к порту привязал и на этом мануал по нату во фре заканчивается мне проще было сделать все заново
жду рабочие примеру с неподдельным любопытством
пол-года назад поднимал эту тему на трех форумах - никто ничего не смог предложить
так что заинтригован


"Разрулить два канала на FreeBSD"
Отправлено Zuram , 21-Ноя-08 11:53 
>[оверквотинг удален]
>
>насколько мне известно, система ничего не знает об устройствах и тем более
>службах на другом конце второго интерфейса
>я тоже не смог разрулить второй нат: второй нат создал, к порту
>привязал и на этом мануал по нату во фре заканчивается мне
>проще было сделать все заново
>жду рабочие примеру с неподдельным любопытством
>пол-года назад поднимал эту тему на трех форумах - никто ничего не
>смог предложить
>так что заинтригован

#!/bin/sh -

# Suck in the configuration variables.
if [ -z "${source_rc_confs_defined}" ]; then
    if [ -r /etc/defaults/rc.conf ]; then
        . /etc/defaults/rc.conf
        source_rc_confs
    elif [ -r /etc/rc.conf ]; then
        . /etc/rc.conf
    fi
fi

setup_loopback () {
    ############
    # Only in rare cases do you want to change these rules
    #
    ${fwcmd} add 500 pass all from any to any via lo0
    ${fwcmd} add 510 deny all from any to 127.0.0.0/8
    ${fwcmd} add 520 deny all from 127.0.0.0/8 to any
}

############
# Set quiet mode if requested
#
case ${firewall_quiet} in
[Yy][Ee][Ss])
    fwcmd="/sbin/ipfw -q"
    ;;
*)
    fwcmd="/sbin/ipfw"
    ;;
esac

############
# Flush out the list before we begin.
#
${fwcmd} -f flush

moldnets_file="/data/moldnets.txt"
localnet_table="10"
vpnnet_table="11"
expiredaccounts="12"
moldnet_table="100"
internaliface="Local"
mtciface="MTC"
starnetiface="Starnet"
netgraphifaces="ng*"
moldovaviastarnet_table="50"
moldovaviamtc_table="51"
moldovaviabothlinks_table="52"
moldovaviastarnet_mtcdown_table="53"
moldovaviamtc_starnetdown_table="54"
worldviastarnet_table="60"
worldviamtc_table="61"
worldviabothlinks_table="62"
worldviastarnet_mtcdown_table="63"
worldviamtc_starnetdown_table="64"
mtcauthpage="86.106.213.42"
admintable="15"
mtcipaddr="80"
starnetipaddr="90"
routeviamtc="81"
routeviastarnet="91"

setup_loopback

####################################################################
# Add ISP ip addresses
#
${fwcmd} table ${starnetipaddr} flush
${fwcmd} table ${starnetipaddr} add 89.28.98.xxx
${fwcmd} table ${mtcipaddr} flush
${fwcmd} table ${mtcipaddr} add 89.41.67.xxx

####################################################################
# Create Routing table
#
${fwcmd} table ${routeviamtc} flush
${fwcmd} table ${routeviamtc} add 89.41.67.0/24
${fwcmd} table ${routeviamtc} add 86.106.213.42
${fwcmd} table ${routeviamtc} add 212.0.200.58
${fwcmd} table ${routeviamtc} add 212.0.219.3
${fwcmd} table ${routeviastarnet} flush
${fwcmd} table ${routeviastarnet} add 89.28.98.0/24
${fwcmd} table ${routeviastarnet} add 217.26.150.4
${fwcmd} table ${routeviastarnet} add 87.248.160.5

####################################################################
# Add admin ip's to table
#
${fwcmd} table ${admintable} flush
${fwcmd} table ${admintable} add 192.168.15.253
${fwcmd} table ${admintable} add 192.168.15.13

####################################################################
# Add local networks to table
#
${fwcmd} table ${localnet_table} flush
${fwcmd} table ${localnet_table} add 192.168.65.0/24


####################################################################
# Add vpn networks to table
#
${fwcmd} table ${vpnnet_table} flush
${fwcmd} table ${vpnnet_table} add 192.168.15.0/24


####################################################################
# Add moldavian networks to table
#
${fwcmd} table ${moldnet_table} flush
while read net; do ${fwcmd} table ${moldnet_table} add $net > /dev/null ; done < $moldnets_file


####################################################################
# Separate traffic by interfaces
#

${fwcmd} add 1000 skipto 2000 ip from any to any via ${internaliface}
${fwcmd} add 1010 skipto 3000 ip from any to any via ${netgraphifaces}
${fwcmd} add 1020 skipto 4000 ip from any to any in recv ${mtciface}
${fwcmd} add 1030 skipto 5000 ip from any to any in recv ${starnetiface}
${fwcmd} add 1040 skipto 6000 ip from me to any out xmit ${mtciface}
${fwcmd} add 1050 skipto 6000 ip from me to any out xmit ${starnetiface}
${fwcmd} add 1060 skipto 10000 ip from any to any out xmit ${mtciface}
${fwcmd} add 1070 skipto 10000 ip from any to any out xmit ${starnetiface}
${fwcmd} add 1100 deny ip from any to any


####################################################################
# Filter traffic via Internal interface
#

${fwcmd} add 2000 allow ip from "table(${localnet_table})" to "table(${localnet_table})" via ${internaliface}
${fwcmd} add 2010 deny ip from any to any via ${internaliface}


####################################################################
# Filter traffic via VPN interfaces
#

${fwcmd} add 3000 deny ip from not "table(${admintable})" to ${mtcauthpage} in recv ${netgraphifaces}
#${fwcmd} add 3010 tee 4001 ip from any to any via ${netgraphifaces} in
#${fwcmd} add 3020 tee 4002 ip from any to any via ${netgraphifaces} out
${fwcmd} add 3030 allow ip from "table(${vpnnet_table})" to any in recv ${netgraphifaces}
${fwcmd} add 3040 allow ip from any to "table(${vpnnet_table})" out xmit ${netgraphifaces}
${fwcmd} add 3050 deny ip from any to any via  ${netgraphifaces}


####################################################################
# Filter incoming traffic via MTC interface
#

${fwcmd} add 4000 count ip from not "table(${moldnet_table})" to any in recv ${mtciface}
${fwcmd} add 4010 count ip from "table(${moldnet_table})" to any in recv ${mtciface}
${fwcmd} add 4020 deny ip from any to not me in recv ${mtciface}
${fwcmd} add 4040 divert 1000 ip from any to any in recv ${mtciface}
${fwcmd} add 4050 queue 1000 ip from not "table(${moldnet_table})" to any in recv ${mtciface}
${fwcmd} add 4060 queue 1010 ip from any to any in recv ${mtciface}
${fwcmd} add 4070 skipto 6000 ip from any to me in recv ${mtciface}
${fwcmd} add 4080 skipto 10000 tag 1 ip from any to any in recv ${mtciface} keep-state


####################################################################
# Filter incoming traffic via Starnet interface
#

${fwcmd} add 5000 count ip from not "table(${moldnet_table})" to any in recv ${starnetiface}
${fwcmd} add 5010 count ip from "table(${moldnet_table})" to any in recv ${starnetiface}
${fwcmd} add 5020 deny ip from any to not me in recv ${starnetiface}
${fwcmd} add 5040 divert 2000 ip from any to any in recv ${starnetiface}
${fwcmd} add 5050 queue 3000 ip from not "table(${moldnet_table})" to any in recv ${starnetiface}
${fwcmd} add 5060 queue 3010 ip from any to any in recv ${starnetiface}
${fwcmd} add 5070 skipto 6000 ip from any to me in recv ${starnetiface}
${fwcmd} add 5080 skipto 10000 tag 2 ip from any to any in recv ${starnetiface} keep-state

####################################################################
# NAT section - outgoing/incoming traffic from/to me
#
#
# NAT special networks from/to me
#
${fwcmd} add 6000 check-state
${fwcmd} add 6010 skipto 20000 tag 3 ip from "table(${starnetipaddr})" to "table(${routeviamtc})" out keep-state
${fwcmd} add 6020 skipto 25000 tag 4 ip from "table(${mtcipaddr})" to "table(${routeviastarnet})" out keep-state
${fwcmd} add 6030 skipto 20000 tag 3 ip from "table(${mtcipaddr})" to any out keep-state
${fwcmd} add 6040 skipto 25000 tag 4 ip from  "table(${starnetipaddr})" to any out keep-state
${fwcmd} add 6050 skipto 20000 tag 3 tcp from "table(${moldnet_table})" to me dst-port 21,22,1723,24554,49152-65535 in recv ${mtciface} setup keep-state
${fwcmd} add 6060 skipto 25000 tag 4 tcp from "table(${moldnet_table})" to me dst-port 21,22,1723,24554,49152-65535 in recv ${starnetiface} setup keep-state
${fwcmd} add 6070 skipto 20000 tag 3 icmp from any to me in recv ${mtciface} keep-state
${fwcmd} add 6080 skipto 25000 tag 4 icmp from any to me in recv ${starnetiface} keep-state
${fwcmd} add 6130 skipto 20000 tag 3 gre from any to me in recv ${mtciface} keep-state
${fwcmd} add 6140 skipto 25000 tag 4 gre from any to me in recv ${starnetiface} keep-state
${fwcmd} add 6500 deny ip from any to me in recv ${mtciface}
${fwcmd} add 6510 deny ip from any to me in recv ${starnetiface}

####################################################################
# NAT outgoing packets
#
${fwcmd} add 10000 check-state
${fwcmd} add 10010 skipto 20000 ip from any to any tagged 1
${fwcmd} add 10020 skipto 25000 ip from any to any tagged 2
#
# NAT special networks from all other users
#
${fwcmd} add 10110 skipto 20000 ip from any to "table(${routeviamtc})" out
${fwcmd} add 10120 skipto 25000 ip from any to "table(${routeviastarnet})" out
#
# NAT outgoing requests via MTC when Starnet is down
#
${fwcmd} add 10150 skipto 20000 ip from "table(${moldovaviamtc_starnetdown_table})" to "table(${moldnet_table})"
${fwcmd} add 10160 skipto 20000 ip from "table(${worldviamtc_starnetdown_table})" to not "table(${moldnet_table})"
#
# NAT outgoing requests via Starnet when MTC is down
#
${fwcmd} add 10170 skipto 25000 ip from "table(${moldovaviastarnet_mtcdown_table})" to "table(${moldnet_table})"
${fwcmd} add 10180 skipto 25000 ip from "table(${worldviastarnet_mtcdown_table})" to not "table(${moldnet_table})"
#
# NAT outgoing request via MTC interface
#
${fwcmd} add 10190 skipto 20000 ip from "table(${moldovaviamtc_table})" to "table(${moldnet_table})"
${fwcmd} add 10200 skipto 20000 ip from "table(${worldviamtc_table})" to not "table(${moldnet_table})"
#
# NAT outgoing request via Starnet interface
#
${fwcmd} add 10210 skipto 25000 ip from "table(${moldovaviastarnet_table})" to "table(${moldnet_table})"
${fwcmd} add 10220 skipto 25000 ip from "table(${worldviastarnet_table})" to not "table(${moldnet_table})"
#
# Drop other packets
#
${fwcmd} add 10500 deny ip from any to any


####################################################################
# NAT section - outgoing via MTC interface
#

${fwcmd} add 20000 allow ip from any to any in recv ${mtciface} tagged 1
${fwcmd} add 20010 allow ip from any to any in recv ${mtciface} tagged 3
${fwcmd} add 20020 pipe 200 ip from any to not "table(${moldnet_table})"
${fwcmd} add 20030 pipe 210 ip from any to any
${fwcmd} add 20040 queue 2000 ip from any to any
${fwcmd} add 20050 divert 1000 ip from any to any
${fwcmd} add 20060 count ip from any to any not diverted
${fwcmd} add 20070 skipto 40000 ip from any to any


####################################################################
# NAT section - outgoing via Starnet interface
#

${fwcmd} add 25000 allow ip from any to any in recv ${starnetiface} tagged 2
${fwcmd} add 25010 allow ip from any to any in recv ${starnetiface} tagged 4
${fwcmd} add 25020 pipe 400 ip from any to not "table(${moldnet_table})"
${fwcmd} add 25030 pipe 410 ip from any to any
${fwcmd} add 25040 queue 4000 ip from any to any
${fwcmd} add 25050 divert 2000 ip from any to any
${fwcmd} add 25060 count ip from any to any not diverted
${fwcmd} add 25070 skipto 40000 ip from any to any


####################################################################
# Separate outgoing traffic via interfaces
#

${fwcmd} add 40000 allow ip from any to "table(${mtcipaddr})" in recv ${mtciface} tagged 3
${fwcmd} add 40010 allow ip from any to "table(${starnetipaddr})" in recv ${starnetiface} tagged 4
${fwcmd} add 40020 skipto 45000 ip from "table(${mtcipaddr})" to any
${fwcmd} add 40030 skipto 50000 ip from "table(${starnetipaddr})" to any
${fwcmd} add 40100 deny ip from any to any


####################################################################
# All Outgoing traffic via MTC Interface
#

${fwcmd} add 45000 count ip from me to not "table(${moldnet_table})" out
${fwcmd} add 45010 count ip from me to "table(${moldnet_table})" out
${fwcmd} add 45020 pipe 200 ip from me to not "table(${moldnet_table})" not diverted
${fwcmd} add 45030 pipe 210 ip from me to any not diverted
${fwcmd} add 45040 queue 2000 ip from me to any not diverted
${fwcmd} add 45050 fwd 89.41.67.1 ip from me to any
${fwcmd} add 45060 skipto 65500 ip from any to any


####################################################################
# All Outgoing traffic via Starnet Interface
#

${fwcmd} add 50000 count ip from me to not "table(${moldnet_table})" out
${fwcmd} add 50010 count ip from me to "table(${moldnet_table})" out
${fwcmd} add 50020 pipe 400 ip from me to not "table(${moldnet_table})" not diverted
${fwcmd} add 50030 pipe 410 ip from me to any not diverted
${fwcmd} add 50040 queue 4000 ip from me to any not diverted
${fwcmd} add 50050 fwd 89.28.98.1 ip from me to any
${fwcmd} add 50060 skipto 65500 ip from any to any


####################################################################
# Shaper section
#

. /usr/local/etc/rc.d/rc.firewall.shaper

к этому всему делу прикручен скриптик проверяющий жывость каналов и в случае если один из них отвалился - заворачивает весь траффик через второй.


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 21-Ноя-08 18:05 
>[оверквотинг удален]
># Shaper section
>#
>
>. /usr/local/etc/rc.d/rc.firewall.shaper
>
>
>
>к этому всему делу прикручен скриптик проверяющий жывость каналов и в случае
>если один из них отвалился - заворачивает весь траффик через второй.
>

жаль не на чем проверить - спасибо за конфиги на досуге разберу


"Разрулить два канала на FreeBSD"
Отправлено RSG , 21-Ноя-08 10:35 
>А что такого может циско чего не может линукс?

Например MSDP.


>или циска написана на сверхязыке?
>а то что циска сама все разруливает и тут не надо мозгов
>а на линуксе нужны и мозги и руки то это другой
>разговор

Правильно! Все эти CCNA,CCNP,CCIE для дураков! ;)


2blackjackchik:
В Вашем случае можно обойтись (как уже было сказано policy routing). Темболее что Вы его уже используете (man 8 ipfw искать fwd).
По поводу NAT- ничего не запрещает Вам запустить два процесса natd, хотя я бы NAT реализовывал средствами pf (man 8 pfctl).


"Разрулить два канала на FreeBSD"
Отправлено swm , 25-Ноя-08 14:11 
>>А что такого может циско чего не может линукс?
>
>Например MSDP.

Еще EIGRP. Он и балансировку между канами умеет и bandwith utilization...


"Разрулить два канала на FreeBSD"
Отправлено RSG , 25-Ноя-08 15:14 
>>>А что такого может циско чего не может линукс?
>>
>>Например MSDP.
>
>Еще EIGRP.

Ну EIGRP, все же, является проприетарным, как сейчас принято говорить, протоколом.  А вот MSDP, на сколько мне известно, нет.

>Он и балансировку между канами умеет и bandwith utilization...

Это фитчи equal-cost multipath в IOS, а не EIGPR как протокола.



"Разрулить два канала на FreeBSD"
Отправлено Том Сойер , 20-Ноя-08 15:30 
Да вы гоните , особенно про то, что фря не умеет :)
Сегодня выложу конфиг.

"Разрулить два канала на FreeBSD"
Отправлено blackjackchik , 20-Ноя-08 16:36 
>Да вы гоните , особенно про то, что фря не умеет :)
>
>Сегодня выложу конфиг.

Жду. Буду очень благодарен.


"Разрулить два канала на FreeBSD"
Отправлено swm , 21-Ноя-08 09:05 
>Да вы гоните , особенно про то, что фря не умеет :)
>Сегодня выложу конфиг.

Ну и где конфиг? Без ехидства, просто действительно тема интересная.


"Разрулить два канала на FreeBSD"
Отправлено Том Сойер , 25-Ноя-08 11:21 
>>Да вы гоните , особенно про то, что фря не умеет :)
>>Сегодня выложу конфиг.
>
>Ну и где конфиг? Без ехидства, просто действительно тема интересная.

извините, работы много. конфиг будет


"Разрулить два канала на FreeBSD"
Отправлено rusych , 22-Ноя-08 01:59 
>Привет всем.
>Понимаю что тема заезженная но всетаки
>Есть шлюз в интернет на фре.
>Есть два канала в инет, первый по кабелю - по умолчанию default
>route, второй через дсл рутер.
>Пять локальных подсетей.
>Как бы всетаки прикрутить еще дсл, т.е. выпускать в инет определенных пользолвателей
>или целую подсеть через него?
>Вот конфиг фаервола.

Балансировка нагрузки исходящего трафика
(http://www.opennet.me/base/net/pf_faq.txt.html)

   Пулы адресов могут использоваться для балансировки нагрузки между
   двумя и более внешними каналами с использованием опции route-to в
   случае невозможности организовать динамическую маршрутизацию
   (например, с использованием протокола BGP4). Совместное использование
   route-to и пула адресов round-robin исходящие соединения могут быть
   распределены между разными провайдерами.

   В качестве дополнительной информации необходимо указать адреса
   маршрутизаторов для каждого Интернет-соединения. Это необходимо для
   опции route-to, дабы управлять исходящими пакетами.

   Этот пример покажет нам балансировку нагрузки между двумя каналами:

    lan_net = "192.168.0.0/24"
    int_if  = "dc0"
    ext_if1 = "fxp0"
    ext_if2 = "fxp1"
    ext_gw1 = "68.146.224.1"
    ext_gw2 = "142.59.76.1"

    pass in on $int_if route-to \
      { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
      from $lan_net to any keep state

   Опция route-to используется для приема трафика на внутреннем
   интерфейсе и назначения ему внешнего сетевого интерфейса и шлюза,
   таким образом обеспечивая балансировку. Обратите внимание, что опция
   route-to должна быть указана в каждом правиле, предназначенном для
   балансировки трафика. Ответные пакеты приходят на тот интерфейс, с
   которого ушел запрос и они будут перенаправлены во внутрь как обычно.

   Для гарантии того, что пакеты с $ext_if1 всегда направляются к
   $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

   В заключение хочу сказать, что NAT можно использовать на каждом из
   внешних интерфейсов:

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

   Полный пример балансировки исходящего трафика будет выглядеть так:

    lan_net = "192.168.0.0/24"
    int_if  = "dc0"
    ext_if1 = "fxp0"
    ext_if2 = "fxp1"
    ext_gw1 = "68.146.224.1"
    ext_gw2 = "142.59.76.1"

    #  nat outgoing connections on each internet interface
    nat on $ext_if1 from $lan_net to any -> ($ext_if1)
    nat on $ext_if2 from $lan_net to any -> ($ext_if2)
    
    #  default deny
    block in  from any to any
    block out from any to any

    #  pass all outgoing packets on internal interface
    pass out on $int_if from any to $lan_net
    #  pass in quick any packets destined for the gateway itself
    pass in quick on $int_if from $lan_net to $int_if
    #  load balance outgoing tcp traffic from internal network.
    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
    #  load balance outgoing udp and icmp traffic from internal network
    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

    #  general "pass out" rules for external interfaces
    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
    
    #  route packets from any IPs on $ext_if1 to $ext_gw1 and the same for
    #  $ext_if2 and $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


"Разрулить два канала на FreeBSD"
Отправлено handler2006 , 23-Ноя-08 17:32 
где же вы раньше были со своими конфигами - пришлось перейти на линукс и обратно нет желания перенастраиваться
а тогда долго голову ломал и безрезультатно

"Разрулить два канала на FreeBSD"
Отправлено blackjackchik , 25-Ноя-08 10:49 
Сделал так.
На фре перед основным дивертом указал два правила
ipfw add 250 fwd 192.168.1.1 ip from "table(6)" to any
ipfw add 251 skipto 310 ip from any to "table(6)"

В тейбл 6 заношу нужные адреса или подсети

Дсл модем перестариваю в режим роутера с внутернним адресом 192.168.1.1 и на этом же модеме прописываю статические маршруты в нужные мне подсети через роутер на фре
Destination  Mask          Gateway
172.16.23.0  255.255.255.0 192.168.1.2

192.168.1.2 - адрес интерфейса на фре которій смотрит на дсл роутер.

Вот и все.


"Разрулить два канала на FreeBSD"
Отправлено sia , 15-Дек-08 19:30 
Постоянно всплывает тема про несколько каналов.
У меня на работе 4-е внешних канала, и в добавок на всех редиректы по входу
на разные локальные машины и службы. Все спокойно разруливается на фре, подсчитывается
и шейпиться. Лучше использовать netgraph и таблицы в ipfw. Просто вдумчиво почитайте man-ы.

"Разрулить два канала на FreeBSD"
Отправлено Anonym , 23-Дек-08 14:25 
>handler2006
>где же вы раньше были со своими конфигами - пришлось перейти на
>линукс и обратно нет желания перенастраиваться
>а тогда долго голову ломал и безрезультатно

а вы гуглом научитесь пользоваться
в нете статьей валом
а вы от кривизны рук да какой то %$%^$^%$ линух перешли