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

Исходное сообщение
"Тематический каталог: Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward route nat firewall)"

Отправлено auto_topic , 18-Дек-07 07:25 
Обсуждение статьи тематического каталога: Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward route nat firewall)

Ссылка на текст статьи: http://www.opennet.me/base/net/ipfw_multiroute.txt.html


Содержание

Сообщения в этом обсуждении
"Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward route nat firewall)"
Отправлено PavelR , 18-Дек-07 07:25 
>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

А перед этими тремя правилами, _возможно_, надо добавить правила, которые разрешат прохождение пакетов в другие локальные подсетки (иначе пакет отправят на внешний рутер и там потеряют, не будет работать соединение из локальной сети с внешним айпи сервера).



"Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward route nat firewall)"
Отправлено Дмитрий , 21-Дек-07 01:52 
Пардон за неточность. Спасибо, что поправили. :) Насчет клиента - совершенно верно, маскируем его 32 битами (если речь идет не о сети а об отдельном клиенте). А насчет перенаправления пакетов - перед правилами форвардинга - можно добавить правило
/sbin/ipfw add pass all from me to any keep-state

"Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward..."
Отправлено max , 29-Дек-07 00:35 
Почему-то не работает =( Все на гейт по-умолчанию уходит...

"Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward..."
Отправлено dm80 , 29-Дек-07 13:43 
>Почему-то не работает =( Все на гейт по-умолчанию уходит...

опция IPFIREWALL_FORWARD в ядре присутствует?



"Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward..."
Отправлено Кирилл , 11-Янв-08 16:22 
> pass all from me to any keep-state

Опасное правило, вы тем самым даёте возможность вашему маршрутизатору инициировать соединения самостоятельно. Маршрутизатор не должен иметь возможности сам устанавливать соединения с кем либо.


"Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward..."
Отправлено max , 29-Дек-07 15:50 
Да присуствует..

Вот все настроечки, если ничего не забыл упомянуть:
--------------------------
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/32

map 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         DUMMYNET

options         IPFILTER
options         IPFILTER_LOG

ОС:  FreeBSD 6.2-RELEASE-p9

Вот примерно так пытался сделать, не получается. Каждую пинуту по статичным маршрутам ещё делаю пинги для переключения на резервный канал.

Фаирвол показал сейчас как есть, при тестах убирал запреты.

Я так понимаю, что все пакеты пуляются по дефотроуту, то есть даже при поступлении пакета на 2.2.2.2 с него идет на 1.1.1.1..

Читал, что в случае с pf/ipf все много проще и видел правила с организацией маршрутов для интерфейса. Где-то что-то я недопонимаю.. Посоветуйте. Я ipfw\ipnat тока вчера настроил по ману, может как-то неправильно сделано..

Спасибо. С наступающим.


"Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward..."
Отправлено conf , 29-Дек-07 16:01 
В догонку: я не понимаю почему раньше проблем с фрагментированными пакетами не было (я даже не задумывался о них), а теперь пришлось их разрешить, т.к. в /var/log/security

Dec 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 fxp0

ipmon настроить не получилось.. пусто в логе.

Спасибо. С наступающим.


"Мультироутинг во FreeBSD, IPNAT + IPFW (ipfw freebsd forward route nat firewall)"
Отправлено Pahanivo , 21-Фев-08 21:10 
> options         HZ=1000   # кол-во просматриваемых пакетов в очереди при шейпинге

бред сивой кабылы
это во первых не количество, а частота опроса девайса при активном device polling
во вторых к шейперу не иммет никакого отношения
во вторых постановка задачи сама по себе  не понятна, соответственно непонятные и все последующие действия