Обсуждение статьи тематического каталога: Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward route nat firewall)Ссылка на текст статьи: http://www.opennet.me/base/net/ipfw_multiroute.txt.html
>options HZ=1000 # кол-во просматриваемых пакетов в очереди при шейпингеЯ как-то не понял этот момент :)
># клиента 192.168.0.3 маскируем адресом 194.1.1.202
>map rl0 192.168.0.3/24 -> 194.1.1.202/32 proxy port ftp ftp/tcpну если клиента, то наверное /32, или я опять чего-то не понял ?
# следующие три правила перенаправляют пакеты на альтернативный шлюз для сети 194.1.1.200/29А перед этими тремя правилами, _возможно_, надо добавить правила, которые разрешат прохождение пакетов в другие локальные подсетки (иначе пакет отправят на внешний рутер и там потеряют, не будет работать соединение из локальной сети с внешним айпи сервера).
Пардон за неточность. Спасибо, что поправили. :) Насчет клиента - совершенно верно, маскируем его 32 битами (если речь идет не о сети а об отдельном клиенте). А насчет перенаправления пакетов - перед правилами форвардинга - можно добавить правило
/sbin/ipfw add pass all from me to any keep-state
Почему-то не работает =( Все на гейт по-умолчанию уходит...
>Почему-то не работает =( Все на гейт по-умолчанию уходит...опция IPFIREWALL_FORWARD в ядре присутствует?
> pass all from me to any keep-stateОпасное правило, вы тем самым даёте возможность вашему маршрутизатору инициировать соединения самостоятельно. Маршрутизатор не должен иметь возможности сам устанавливать соединения с кем либо.
Да присуствует..Вот все настроечки, если ничего не забыл упомянуть:
--------------------------
rc.conf
defaultrouter="1.1.1.1"
ifconfig_fxp0="inet 1.1.1.2 netmask 255.255.255.240"
ifconfig_vr0="inet 2.2.2.2 netmask 255.255.255.0"
ifconfig_fxp1="inet 192.168.5.1 netmask 255.255.255.0"firewall_enable="YES"
firewall_script="/usr/local/scripts/replug/rc.firewall"
ipnat_enable="YES"
ipnat_program="/sbin/ipnat -CF -f"
ipnat_rules="/usr/local/scripts/replug/ipnat.rules"
ipnat_flags=""
--------------------------
ipnat.rules
map fxp0 192.168.5.0/24 -> 1.1.1.2/32 proxy port ftp ftp/tcp
map fxp0 192.168.5.0/24 -> 1.1.1.2/32 portmap tcp/udp auto
map fxp0 192.168.5.0/24 -> 1.1.1.2/32map vr0 192.168.5.105/32 -> 2.2.2.2/32 proxy port ftp ftp/tcp
map vr0 192.168.5.105/32 -> 2.2.2.2/32 portmap tcp/udp auto
map vr0 192.168.5.105/32 -> 2.2.2.2/32
Ну например, пустить какой-то хост, через другого провайдера. Правила натирования местами менять пробовал.
--------------------------
rc.firewall
#### localnets
${ipfw} add 00005 pass all from any to any via lo0
${ipfw} add 00006 deny all from any to 127.0.0.0/8
${ipfw} add 00020 pass all from ${localnet} to any via ${local_iface}
${ipfw} add 00030 pass all from any to ${localnet} via ${local_iface}#### counts
${ipfw} add 0010 count ip from any to ${localnet} 3389 via tun*
${ipfw} add 0011 count ip from ${localnet} 3389 to any via tun*
${ipfw} add 0012 count ip from any to any in via ${out_iface}
${ipfw} add 0013 count ip from any to any out via ${out_iface}${ipfw} add fwd 1.1.1.1 all from 1.1.1.2 to not me
#${ipfw} add 00016 fwd 192.168.5.1,8080 tcp from ${localnet} to any 80 via ${local_iface}
#${ipfw} add 00015 fwd 192.168.5.1,2121 tcp from ${localnet} to any 21 via ${local_iface}${ipfw} add 0500 allow icmp from any to any
${ipfw} add allow all from any to any frag#### allow VPN
${ipfw} add 1000 allow all from any to any via gif*
${ipfw} add 1100 allow all from any to any via tun*
${ipfw} add 1200 allow udp from "table(1)" to "table(1)" isakmp
${ipfw} add 1300 allow esp from "table(1)" to "table(1)"
${ipfw} add 1400 allow ipencap from "table(1)" to "table(1)"
${ipfw} add 1500 allow gre from any to ${out_ip}
${ipfw} add 1600 allow gre from ${out_ip} to any#### security
${ipfw} add 15000 pass udp from any to any via ${out_iface}
${ipfw} add 15010 pass tcp from any 20 to ${out_ip} 1024-65534 via ${out_iface}
${ipfw} add 15010 pass tcp from any 1024-65534 to ${out_ip} 1024-65534 via ${out_iface}
#${ipfw} add 15020 pass tcp from ${out_ip} 1024-65534 to any 1024-65534 via ${out_iface}
${ipfw} add 15050 pass tcp from ${out_ip} 1024-65535 to any via ${out_iface}
${ipfw} add 15060 pass tcp from any to ${out_ip} 1024-65535 via ${out_iface} established
${ipfw} add 65534 deny log all from any to anyядро
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options DUMMYNEToptions IPFILTER
options IPFILTER_LOGОС: FreeBSD 6.2-RELEASE-p9
Вот примерно так пытался сделать, не получается. Каждую пинуту по статичным маршрутам ещё делаю пинги для переключения на резервный канал.
Фаирвол показал сейчас как есть, при тестах убирал запреты.
Я так понимаю, что все пакеты пуляются по дефотроуту, то есть даже при поступлении пакета на 2.2.2.2 с него идет на 1.1.1.1..
Читал, что в случае с pf/ipf все много проще и видел правила с организацией маршрутов для интерфейса. Где-то что-то я недопонимаю.. Посоветуйте. Я ipfw\ipnat тока вчера настроил по ману, может как-то неправильно сделано..
Спасибо. С наступающим.
В догонку: я не понимаю почему раньше проблем с фрагментированными пакетами не было (я даже не задумывался о них), а теперь пришлось их разрешить, т.к. в /var/log/securityDec 29 12:01:34 rto kernel: ipfw: 65534 Deny TCP 195.16.50.18 1.1.1.2 in via fxp0 (frag 33180:8@1472)
Dec 29 12:01:34 rto kernel: ipfw: 65534 Deny TCP 195.16.50.18 1.1.1.2 in via fxp0 (frag 33181:8@1472)
Dec 29 12:01:36 rto kernel: ipfw: 65534 Deny TCP 195.16.50.18 1.1.1.2 in via fxp0 (frag 35141:8@1472)
Dec 29 12:01:40 rto kernel: ipfw: 65534 Deny TCP 195.16.50.18 1.1.1.2 in via fxp0 (frag 40387:8@1472)
Dec 29 12:01:48 rto kernel: ipfw: 65534 Deny TCP 195.16.50.18 1.1.1.2 in via fxp0 (frag 47718:8@1472Это при входе на интернет-банк клиент страницку.
А вывод о том, что все идет через дефалтгейтвей по логам видно было:
Dec 29 00:28:35 rto kernel: ipfw: 65534 Deny TCP 192.168.5.105:1159 195.161.112.6:80 out via fxp0ipmon настроить не получилось.. пусто в логе.
Спасибо. С наступающим.
> options HZ=1000 # кол-во просматриваемых пакетов в очереди при шейпингебред сивой кабылы
это во первых не количество, а частота опроса девайса при активном device polling
во вторых к шейперу не иммет никакого отношения
во вторых постановка задачи сама по себе не понятна, соответственно непонятные и все последующие действия