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

Исходное сообщение
"распределение трафика между каналами FreeBSD, ipfw nat"

Отправлено synemo , 04-Сен-06 13:29 
имется 2 выхода в интернет:
fxp0: ip 222.222.222.130 mask 255.255.255.224 gateway 222.222.222.129
fxp1: ip 111.111.111.244 mask 255.255.255.248 gateway 111.111.111.245
локалка:
dc0_alias0: ip 192.168.10.1 mask 255.255.255.128
dc0: ip 192.168.10.130 mask 255.255.255.128

нужно сеть 192.168.10.0/25 направлять в интернет через 111.111.111.245, а 192.168.10.128/25 - через 222.222.222.129

ядро собрано с параметрами:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPDIVERT
options DUMMYNET

скрипт firewall'а:
natd -a 111.111.111.245 -p 8668 -u -s -m
natd -a 222.222.222.129 -p 8669 -u -s -m

${fwcmd} add divert 8668 ip from 192.168.10.0/25 to any
${fwcmd} add fwd 111.111.111.245 ip from 111.111.111.244 to any via fxp1
${fwcmd} add divert 8668 ip from any to 111.111.111.244 via fxp1

${fwcmd} add divert 8669 ip from 192.168.10.128/25 to any
${fwcmd} add fwd 222.222.222.129 ip from 222.222.222.130 to any via fxp0
${fwcmd} add divert 8669 ip from any to 222.222.222.130 via fxp0

в rc.conf присутствуют строки:
natd_enable="YES"
gateway_enable="YES"
natd_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.rules"

вопрос.
почему выход в интернет работает только по одному каналу, причем только по тому, который указан в качестве default в самой системе?
оба канала работоспособны, проверено. система FreeBSD 5.4 Release


Содержание

Сообщения в этом обсуждении
"распределение трафика между каналами FreeBSD, ipfw nat"
Отправлено Serjant , 04-Сен-06 14:54 
>скрипт firewall'а:
>natd -a 111.111.111.245 -p 8668 -u -s -m
>natd -a 222.222.222.129 -p 8669 -u -s -m

Здесь, видимо должно быть:

natd -a 111.111.111.244 -p 8668 -u -s -m
natd -a 222.222.222.130 -p 8669 -u -s -m


"распределение трафика между каналами FreeBSD, ipfw nat"
Отправлено synemo , 05-Сен-06 05:51 
>Здесь, видимо должно быть:
>
>natd -a 111.111.111.244 -p 8668 -u -s -m
>natd -a 222.222.222.130 -p 8669 -u -s -m

да, должно быть так. но пробовал и так и эдак.
мне где-то попадальсь, что правило fwd должно быть раньше divert. но мне кажется, что тогда все это лишается смысла. кто скажет какой должен быть порядок правил?


"распределение трафика между каналами FreeBSD, ipfw nat"
Отправлено TAB , 05-Сен-06 10:25 
Подобную ситуацию разрулил при помощи сквида и tcp_outgoing_address. Пакеты от одной сети выходят из сквида с адресом одного интерфейса, другой сети с адресом другого. А в файерволе
ipfw fwd gw1 tcp from ip1 to not local/net
а на gw2 пакеты идут по умолчанию.

Здесь же думаю можно попробовать в правилах fwd убрать via fxp1 и via fxp0.


"распределение трафика между каналами FreeBSD, ipfw nat"
Отправлено TAB , 05-Сен-06 10:30 
P.S. Только что посмотрел у меня сначала идёт divert, а после него forward.

"распределение трафика между каналами FreeBSD, ipfw nat"
Отправлено synemo , 07-Сен-06 11:49 
а может быть такое, что в 5.4 где-то ошибка в самом ipfw или nat?

"распределение трафика между каналами FreeBSD, ipfw nat"
Отправлено Serjant , 07-Сен-06 13:29 
>а может быть такое, что в 5.4 где-то ошибка в самом ipfw
>или nat?


Была ошибка fwd то ли в 5.3, то ли в 5.4. Щас уже не помню. Сам 2 дня промучался пока ответ где-то эдесь не нашёл.


"распределение трафика между каналами FreeBSD, ipfw nat"
Отправлено Serjant , 07-Сен-06 13:33 
>>а может быть такое, что в 5.4 где-то ошибка в самом ipfw
>>или nat?
>
>
>Была ошибка fwd то ли в 5.3, то ли в 5.4. Щас
>уже не помню. Сам 2 дня промучался пока ответ где-то эдесь
>не нашёл.

Во, нашёл:
http://www.opennet.me/tips/info/802.shtml


"распределение трафика между каналами FreeBSD, ipfw nat"
Отправлено synemo , 11-Сен-06 16:22 
>>>а может быть такое, что в 5.4 где-то ошибка в самом ipfw
>>>или nat?
>>
>>
>>Была ошибка fwd то ли в 5.3, то ли в 5.4. Щас
>>уже не помню. Сам 2 дня промучался пока ответ где-то эдесь
>>не нашёл.
>
>Во, нашёл:
>http://www.opennet.me/tips/info/802.shtml


спасибо!
проблема решалось добавлением в ядро строки
options   IPFIREWALL_FORWARD_EXTENDED
только что она делает описания не нашел.
и еще одна ссылочка по теме http://www.unixfaq.ru/index.pl?req=qs&id=507