Люди помогите!Есть сервер FreeBSD 4.9 на нем 3 сетевухи:
sk0 - внутренний интерфейс
fxp0 - внешний интерфейс 1 | natd -n fxp0 -p 8668
fxp1 - внешний интерфейс 2 | natd -n fxp1 -p 8778Ну то есть два ната запущено на двух внешних интерфейсов с целью подключения двух каналов для разделения трафика по портам.
Есть два DSL канала- один для одного интерфейса, другой для другого. У каждого есть свой ай пи исвой гейт.
Одна проблема... Как присвоить каждому интерфейсу свой гейт?
А то
default router
в
rc.confпо моему можт быть только один.
Как решить проблему?
никак :-(
>никак :-(
Нее, ну должно же быть какое торешение...
>>никак :-(
>
>
>Нее, ну должно же быть какое торешение...pf
опиши поточнее что ты хочеш сделать.
я могу предположить что это какой то балансинг
(между 2мя провами например ...)суть в том что дефаултроут он 1, но ты можеш манипулировать
следующим ip куда пойдет покет в зависимости от исходного ip,
скажем слать все пакеты из одной подсети через 1ю сетевуху а из другой
через 2ю.
если это решение - то читать про source routing.=========================
FreeBSD, Linux
Администрирование и Консультации
http://aka-root.com/
>опиши поточнее что ты хочеш сделать.
>я могу предположить что это какой то балансинг
>(между 2мя провами например ...)
>
>суть в том что дефаултроут он 1, но ты можеш манипулировать
> следующим ip куда пойдет покет в зависимости от исходного ip,
>скажем слать все пакеты из одной подсети через 1ю сетевуху а из
>другой
>через 2ю.
>если это решение - то читать про source routing.
>Да это именно типа балансинга, только два канала от одного прова.
На двух внешних сетевухах запущенно 2 ната, как показано в начале, а правилами:#${ipfw} add 100 divert 8668 tcp from any to any http,ftp
#${ipfw} add 101 skipto 111 tcp from any to any http,ftp
#${ipfw} add 102 divert 8668 tcp from any http,ftp to any
#${ipfw} add 103 skipto 111 tcp from any http,ftp to any
#${ipfw} add 105 divert 8778 ip from any to anyТо есть весь http i ftp должны идти через первый канал, а все остальное через второй. фактически при так построенных правилах соответсвующая активность есть на обоих картах, но как проверить действительно ли каждый тип трафика идет в свой канал, а то ведб теоретичски возможно, что просто трафик с двух натов сливается в один гейт, разве нет?
>
>Да это именно типа балансинга, только два канала от одного прова.
>
тогда по договоренности с провайдером поднимай протокол маршрутизации
на своем серваке.
>никак :-(
Bred. Hotjabi tak:
http://www.opennet.me/opennews/art.shtml?num=2659
>>никак :-(
>Bred. Hotjabi tak:
>http://www.opennet.me/opennews/art.shtml?num=2659Вот их пример.
route add 195.40.1.0 -netmask 255.255.255.0 -gateway 194.72.46.6 -gateway 194.72.46.62route add 195.40.0.0
-pathmetric 20 -gateway 194.72.46.6
-pathmetric 5 -gateway 194.72.46.62Но в данном случае это два гета к одному интерфейсу, а как это будет выглядеть в моем случае (два интерфейса и каждому свой гейт) нужны ли будут метрики?
>>>никак :-(
>>Bred. Hotjabi tak:
>>http://www.opennet.me/opennews/art.shtml?num=2659
>
>Вот их пример.
>route add 195.40.1.0 -netmask 255.255.255.0 -gateway 194.72.46.6 -gateway 194.72.46.62
>
>route add 195.40.0.0
> -pathmetric 20 -gateway 194.72.46.6
>
> -pathmetric 5 -gateway 194.72.46.62
>
>
>Но в данном случае это два гета к одному интерфейсу, а как
>это будет выглядеть в моем случае (два интерфейса и каждому свой
>гейт) нужны ли будут метрики?
netstat -rn ?
>netstat -rn ?Начало, там дальше мдут все клиентские настройки.
Internet:
Destination Gateway Flags Refs Use Netif Expi
re
default 217.159.173.33 UGSc 12 1116749 fxp0
127.0.0.1 127.0.0.1 UH 0 0 lo0
192.168.3 link#1 UC 0 0 sk0
192.168.3.8/32 00:07:95:e9:ec:59 ULS2c 0 0 sk0
192.168.3.10/32 00:10:60:f7:07:37 ULS2c 0 0 sk0Завершение
192.168.5.58/32 00:40:f4:88:57:2e ULS2c 0 0 sk0
192.168.5.80/32 00:80:1e:13:b1:1f ULS2c 0 0 sk0
192.168.120 link#1 UC 0 0 sk0
192.168.250 link#1 UC 0 0 sk0
213.35.220.252/30 link#3 UC 0 0 fxp1
217.159.173.32/30 link#2 UC 1 0 fxp0
217.159.173.33 00:a0:c5:3a:02:95 UHLW 11 0 fxp0 11
31Internet6:
Destination Gateway Flags
Netif Expire
::1 ::1 UH
lo0
fe80::%sk0/64 link#1 UC
sk0
fe80::20e:a6ff:fe21:a5fa%sk0 00:0e:a6:21:a5:fa UHL
lo0
fe80::%fxp0/64 link#2 UC
fxp0
fe80::208:c7ff:feaa:c63a%fxp0 00:08:c7:aa:c6:3a UHL
lo0
fe80::%fxp1/64 link#3 UC
fxp1
fe80::208:c7ff:fe9a:8223%fxp1 00:08:c7:9a:82:23 UHL
lo0
fe80::%lo0/64 fe80::1%lo0 Uc
lo0
fe80::1%lo0 link#5 UHL
lo0
ff01::/32 ::1 U
lo0
ff02::%sk0/32 link#1 UC
sk0
ff02::%fxp0/32 link#2 UC
fxp0
ff02::%fxp1/32 link#3 UC
fxp1
ff02::%lo0/32 ::1 UC
lo0
>>netstat -rn ?
>
>Начало, там дальше мдут все клиентские настройки.
>Internet:
>Destination Gateway
> Flags
> Refs Use Netif Expi
>
>re
>default
>217.159.173.33 UGSc
> 12 1116749 fxp0
>127.0.0.1 127.0.0.1
> UH
> 0
> 0 lo0
>192.168.3 link#1
>
>UC 0
> 0
>sk0
>192.168.3.8/32 00:07:95:e9:ec:59 ULS2c
> 0 0
> sk0
>192.168.3.10/32 00:10:60:f7:07:37 ULS2c
> 0 0
> sk0
>
>Завершение
>
>192.168.5.58/32 00:40:f4:88:57:2e ULS2c
> 0 0
> sk0
>192.168.5.80/32 00:80:1e:13:b1:1f ULS2c
> 0 0
> sk0
>192.168.120 link#1
> UC
> 0
> 0 sk0
>192.168.250 link#1
> UC
> 0
> 0 sk0
>213.35.220.252/30 link#3
> UC
> 0 0
> fxp1
>217.159.173.32/30 link#2
> UC
> 1 0
> fxp0
>217.159.173.33 00:a0:c5:3a:02:95 UHLW
> 11 0
> fxp0 11
>31
>
>Internet6:
>Destination
>
>Gateway
>
> Flags
> Netif Expire
>::1
>
> ::1
>
>
> UH
> lo0
>fe80::%sk0/64
> link#1
>
>
>UC
> sk0
>fe80::20e:a6ff:fe21:a5fa%sk0 00:0e:a6:21:a5:fa
> UHL
> lo0
>fe80::%fxp0/64
> link#2
>
> UC
>
> fxp0
>fe80::208:c7ff:feaa:c63a%fxp0 00:08:c7:aa:c6:3a
> UHL
> lo0
>fe80::%fxp1/64
> link#3
>
> UC
>
> fxp1
>fe80::208:c7ff:fe9a:8223%fxp1 00:08:c7:9a:82:23
> UHL
> lo0
>fe80::%lo0/64
> fe80::1%lo0
>
> Uc
> lo0
>fe80::1%lo0
>
>link#5
>
> UHL
> lo0
>ff01::/32
>
> ::1
>
> U
> lo0
>ff02::%sk0/32
> link#1
>
>
>UC
> sk0
>ff02::%fxp0/32
> link#2
>
> UC
>
> fxp0
>ff02::%fxp1/32
> link#3
>
> UC
>
> fxp1
>ff02::%lo0/32
> ::1
>
>
> UC
> lo0
Nu tak i pi6i:
route add default -gateway <gateway_ip_1> -gateway <gateway_ip_2>No est odno no. Vse eto meroprijatije budet rabotat tolko dla ishoda6ego trafika. Trafik skazem kotorij pri6el s 1 interfeisa i obratno bil otoslan 4erez 2, vse ravno budet prihodit 4erez 1. T.e. ishodnije adresa ne menajutca.
P.S. Zavisimost metrik o4en prostaja. Oni rabotajut kak s4et4iki. Prohoda6ij paket umen6ajet metriku dla puti. Kogda ona ravna nulu proishodit pereklu4enije na vtoroi put. Potom opjat do nula i t.d.
>>>никак :-(
>>Bred. Hotjabi tak:
>>http://www.opennet.me/opennews/art.shtml?num=2659
>
>Вот их пример.
>route add 195.40.1.0 -netmask 255.255.255.0 -gateway 194.72.46.6 -gateway 194.72.46.62
>
>route add 195.40.0.0
> -pathmetric 20 -gateway 194.72.46.6
>
> -pathmetric 5 -gateway 194.72.46.62
>
>
>Но в данном случае это два гета к одному интерфейсу, а как
>это будет выглядеть в моем случае (два интерфейса и каждому свой
>гейт) нужны ли будут метрики?да, интересно, а кто нить в живую делал это ?
и насколько от метрики зависит кол-во проходящего трафика ?
Лююди....Так как же с проблемой разобраться... клиенты беснуются...
>Лююди....
>
>Так как же с проблемой разобраться... клиенты беснуются...посмотри это: http://www.opennet.me/opennews/art.shtml?num=4003
а вообще, была такая фишка - пытался на pf сделать под FreeBSD 5.x :(
получилось... только на модемах... и получилось ровно пополам...
т.е. не порядка 50 Kbps на каждом - а по 25 :(если у тебя получиться (времени нет самому ковырять :( напиши сюда в форум.
удачи.
Должно быть решение....
>Должно быть решение....А кто что думает про это:
http://lists.freebsd.org/pipermail/freebsd-net/2004-March/00...
>>Должно быть решение....
>
>А кто что думает про это:
>http://lists.freebsd.org/pipermail/freebsd-net/2004-March/00...Psy ja uzhe zaputalsa v tom 4to imenno ti ho4e6 sdelat.
Ja ze napisal:
route add default -gateway <gateway_1> -gateway <gateway_2>U4itivaja 4to gateway_1 i gateway_2 nahodatca v pramoi vidimosti no na raznih if, dla nih budet takze sdelana zapis v routing tablice i associirovana s raznimi if. A posemu esli tak to i paketi, kotorije budut posilatca v zavisimosti ot algoritma to na odin to na drugoi gateway, toze budut posilatca to na odin to na drugoi interfeis.
4to e6e nuzno ?Edinstvennoje ograni4enije est, kotorije ja napisal vi6e.
а прокинуть принудительно пакеты в каналы через ipfw не покатить
ipfw add fwd gw_int1 from ip_int1 to any
ipfw add fwd gw_int2 from ip_int2 to anyза синтаксис не ручаюсь
но такое работало для сети с 2-мя подситями и 2-мя ISPмаршруты статичные до шлюзов
а НАТ адреса нужные подкидывает
Люди, а все заработало... так как хотелось...
>Люди, а все заработало... так как хотелось...
I kak sdelal ?
ага давай колись что и как ?
>Есть два DSL канала- один для одного интерфейса, другой для другого. У
>каждого есть свой ай пи исвой гейт.
>
>Одна проблема... Как присвоить каждому интерфейсу свой гейт?
>А то
>default router
>в
>rc.conf
>
>по моему можт быть только один.
>
>Как решить проблему?
PPP multilink поверх UDP c default gate на него,
но сначала статика на ppp сервер.
Плиз, а по конкретней можешь? а то у меня таже проблема...
Если надо только исходящий трафик делить, то
-----------
#!/bin/shwhile [1]; do
route change default $def_gate_1
sleep 0.3
route change default $def_gate_2
sleep 0.7
done
-----------
ну либо написать на Си нормальную программулькуесли надо с трансляцией, то ipfw fwd
>если надо с трансляцией, то ipfw fwd
Именно это и надо было делать с самого начала!
Пример:rl0 -> Первый ифайс во вне
rl1 -> Второй ифайс во внеrc.conf:
defaultrouter="${rl1_gateway_ip}"
rc.local:
/sbin/natd -n rl0 -p 8660
/sbin/natd -n rl1 -p 8661rc.firewall:
${fwcmd} add 1100 divert 8660 tcp from ${local_ip} to not ${rl0_ip} 22,25,53,80,110,6667
${fwcmd} add 1110 fwd ${rl0_gateway_ip} tcp from ${rl0_ip} to not ${local_ip}
${fwcmd} add 1120 divert 8660 all from not ${rl0_ip},${local_ip} to ${rl0_ip}
${fwcmd} add 1150 pass all from any to ${rl0_ip}
${fwcmd} add 1150 pass all from ${rl0_ip} to any
${fwcmd} add 1999 divert 8661 all from ${local_ip} to not ${rl1_ip}
${fwcmd} add 2000 divert 8661 all from not ${rl1_ip},${local_ip}
${fwcmd} add 2010 pass all from any to ${local_ip}
${fwcmd} add 2010 pass all from ${local_ip} to any
${fwcmd} add 2100 pass all from any to ${rl1_ip}
${fwcmd} add 2100 pass all from ${rl1_ip} to anyЭтот пример можно комментировать очень долго и нудно, я скажу лишь пару слов.
Правила тестировались на FreeBSD 4.7, 4.8, 4.9, 4.10, c ipfw2. Если у вас с ipfw(1) не работает, попробуйте убрать "not ${ip}" и вмето него вставить "any". "not" нужен для того чтобы локальные адресса не дивертировались, т.к. нам это не нужно.
Порядковые номера могут быть на ваше усмотрение, рекоммендую в начале разрешить трафик lo0, зашититься от спуфа, запретить некоторые типы ICMP, разрешить внутренний трафик и т.д., и т.п.
А если говорить о серьёзном управлении системой и сетью в целом, надо переходить на pf(ipf). ipnat, который работает с ipf на много гибче natd, да и функции получше.Удачной "трафикофильтрации"...