имется 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
>скрипт 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
>Здесь, видимо должно быть:
>
>natd -a 111.111.111.244 -p 8668 -u -s -m
>natd -a 222.222.222.130 -p 8669 -u -s -mда, должно быть так. но пробовал и так и эдак.
мне где-то попадальсь, что правило fwd должно быть раньше divert. но мне кажется, что тогда все это лишается смысла. кто скажет какой должен быть порядок правил?
Подобную ситуацию разрулил при помощи сквида и tcp_outgoing_address. Пакеты от одной сети выходят из сквида с адресом одного интерфейса, другой сети с адресом другого. А в файерволе
ipfw fwd gw1 tcp from ip1 to not local/net
а на gw2 пакеты идут по умолчанию.Здесь же думаю можно попробовать в правилах fwd убрать via fxp1 и via fxp0.
P.S. Только что посмотрел у меня сначала идёт divert, а после него forward.
а может быть такое, что в 5.4 где-то ошибка в самом ipfw или nat?
>а может быть такое, что в 5.4 где-то ошибка в самом ipfw
>или nat?
Была ошибка fwd то ли в 5.3, то ли в 5.4. Щас уже не помню. Сам 2 дня промучался пока ответ где-то эдесь не нашёл.
>>а может быть такое, что в 5.4 где-то ошибка в самом ipfw
>>или nat?
>
>
>Была ошибка fwd то ли в 5.3, то ли в 5.4. Щас
>уже не помню. Сам 2 дня промучался пока ответ где-то эдесь
>не нашёл.
>>>а может быть такое, что в 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