Проблема: ng_ipacct+racoon+gif

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
sm4sh
проходил мимо
Сообщения: 8
Зарегистрирован: 2011-03-21 11:41:49

Проблема: ng_ipacct+racoon+gif

Непрочитанное сообщение sm4sh » 2011-03-21 12:09:17

Всем здравствуйте. Ситуация такая: для связи с удаленными филиалами организованы защищенные каналы посредством gif и ipsec-tools (racoon). После этого появилась задача считать трафик на gif-интерфейсах, так как в некоторых точках инет небезлимитный. Мой выбор пал на ng_ipacct+mysql+ipfw. Вот с этим и возникла небольшая проблемка. Исходящий трафик считается нормально, а входящий трафик не весь попадает в статистику. Насколько я знаю, после срабатывания tee, пакет должен приниматься. А в итоге некоторые пакеты проходят "мимо" tee и попадают на нижние правила. И если не добавить еще одно правило в ipfw для "отброшенных" пакетов, то, например, DNS-запросы на разных концах туннеля не работают... В общем, прошу помощи :)

Конфиги такие (FreeBSD 8.1):

Код: Выделить всё

/etc/rc.firewall
	${fwcmd} add allow ipencap from me to RemoteRealIP
	${fwcmd} add allow ipencap from RemoteRealIP to me
	${fwcmd} add tee 4001 ip from 192.168.0.0/16 to 192.168.0.0/16 in via gif0
	${fwcmd} add tee 4002 ip from 192.168.0.0/16 to 192.168.0.0/16 out via gif0
	${fwcmd} add allow all from 192.168.0.0/16 to 192.168.0.0/16 via gif0

/usr/local/etc/ng_ipacct.conf
	#ng_ipacct_enable="YES"
	ng_ipacct_modules_load="YES"
	ng_ipacct_modules_list="netgraph ng_ether ng_cisco ng_socket ng_tee ng_ipacct"
	ng_ipacct_interfaces="gif0"
	# GIF 0
	ng_ipacct_gif0_dlt="RAW"
	ng_ipacct_gif0_start='
			mkpeer ipacct dummy dummy
			name .:dummy %%iface%%_ip_acct

			mkpeer %%iface%%_ip_acct: ksocket  %%iface%%_in inet/raw/divert
			name %%iface%%_ip_acct:%%iface%%_in  ks_%%iface%%_in
			msg ks_%%iface%%_in:  bind inet/0.0.0.0:4001

			mkpeer %%iface%%_ip_acct: ksocket %%iface%%_out inet/raw/divert
			name %%iface%%_ip_acct:%%iface%%_out ks_%%iface%%_out
			msg ks_%%iface%%_out: bind inet/0.0.0.0:4002

			rmhook .:dummy
	'
	ng_ipacct_gif0_stop='
			shutdown %%iface%%_ip_acct:
	'
	ng_ipacct_gif0_checkpoint_script="/root/ng_ipacct.sh gif0"
	ng_ipacct_gif0_threshold="15000"        # '5000' by default
	ng_ipacct_gif0_verbose="yes"            # 'yes' by default
	ng_ipacct_gif0_savetime="yes"           # 'no' by default

/etc/sysctl.conf
	sysctl net.inet.ipsec.filtertunnel=1

/etc/rc.conf
	cloned_interfaces="gif0"
	gif_interfaces="gif0"
	ifconfig_gif0="inet MyLocalIP RemoteLocalIP netmask 255.255.255.255"
	gifconfig_gif0="MyRealIP RemoteRealIP"
	stat_routes="branch1"
	route_branch1="-net RemoteLocalNetwork/24 -iface gif0"
Если еще какие конфиги нужны, пишите - выложу.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
vadim64
майор
Сообщения: 2098
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Проблема: ng_ipacct+racoon+gif

Непрочитанное сообщение vadim64 » 2011-03-30 21:34:58

а как проводили вот эти вот наблюдения какие пакеты считаются а какие нет?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

sm4sh
проходил мимо
Сообщения: 8
Зарегистрирован: 2011-03-21 11:41:49

Re: Проблема: ng_ipacct+racoon+gif

Непрочитанное сообщение sm4sh » 2011-04-06 8:05:02

vadim64 писал(а):а как проводили вот эти вот наблюдения какие пакеты считаются а какие нет?
Настроил по такой же схеме сбор статистики на удаленном сервере и сравнил размеры трафика за день. Выполнил один и тот же запрос на обоих серверах. И если на одном сервере сумма была на десятки мегабайт, то на втором - сотни килобайт. Получается, что исходящий трафик считается без проблем, а входящий (дешифрованный) - практически не проходит через ipfw.

Вообще, когда настроил, трафик через gif-интрефейсы вообще не считался. Где-то в документации нашел, что нужно включить фильтрацию туннеля: sysctl net.inet.ipsec.filtertunnel=1. Включил, пришлось добавить правила для ipencap. После этого все закрутилось.

Нашел еще один косяк. Некоторый трафик не попадает в правила tee (или возвращается) и продолжает спускаться по правилам дальше. Например, туда совсем не попадают dns-запросы. Как вообще работает этот tee - загадка. В одном месте читаю, что посылаются копии пакетов, а сами пакеты должны обрабатываться следующими правилами. В другом - что пакет, попавший на tee, автоматически принимается. Где правда?

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: Проблема: ng_ipacct+racoon+gif

Непрочитанное сообщение rmn » 2011-04-06 12:48:01

а если заюзать другой способ настройки ng_ipacct?

ng_ipacct.conf

Код: Выделить всё

ng_ipacct_interfaces="igb0"
ng_ipacct_modules_load="YES"
ng_ipacct_modules_list="ng_ipacct"

ng_ipacct_default_ether_start='
        mkpeer %%iface%%: tee lower right
        name %%iface%%:lower %%iface%%_tee
        connect %%iface%%: lower upper left

        mkpeer %%iface%%_tee: ipacct right2left %%iface%%_in
        name %%iface%%_tee:right2left %%iface%%_ip_acct
        connect %%iface%%_tee: %%iface%%_ip_acct: left2right %%iface%%_out
'

ng_ipacct_default_ether_stop='
        shutdown %%iface%%_ip_acct:
        shutdown %%iface%%_tee:
        shutdown %%iface%%:
'

ng_ipacct_bpf_ether_start='
        mkpeer %%iface%%: tee lower right
        name %%iface%%:lower %%iface%%_tee
        connect %%iface%%: lower upper left

        mkpeer %%iface%%_tee: bpf right2left %%iface%%_in
        name %%iface%%_tee:right2left %%iface%%_bpf
        connect %%iface%%_tee: right2left left2right %%iface%%_out

        mkpeer %%iface%%_bpf: ipacct %%iface%%_match_in %%iface%%_in
        name %%iface%%_bpf:%%iface%%_match_in %%iface%%_ip_acct
        connect %%iface%%_bpf: %%iface%%_ip_acct: %%iface%%_match_out %%iface%%_out
'

ng_ipacct_bpf_ether_stop='
        shutdown %%iface%%_ip_acct:
        shutdown %%iface%%_bpf:
        shutdown %%iface%%_tee:
        shutdown %%iface%%:
'

ng_ipacct_igb0_dlt="EN10MB"      # required line; see ipacctctl(8)
ng_ipacct_igb0_threshold="400000" # '5000' by default
ng_ipacct_igb0_verbose="yes"     # 'yes' by default
ng_ipacct_igb0_savetime="yes"     # 'yes' by default
ng_ipacct_igb0_start=${ng_ipacct_default_ether_start}
ng_ipacct_igb0_stop=${ng_ipacct_default_ether_stop}

ng_ipacct_igb0_checkpoint_script="/usr/local/freebit/ipacct.php igb0"
в ipfw ничего никуда заворачивать не нужно

sm4sh
проходил мимо
Сообщения: 8
Зарегистрирован: 2011-03-21 11:41:49

Re: Проблема: ng_ipacct+racoon+gif

Непрочитанное сообщение sm4sh » 2011-04-07 3:11:26

Этот конфиг работает только для физических интерфейсов. Для gif я использовал пример №3 из ng_ipacct.conf.sample.
А может все-же дело не в ng_ipacct, а в шифровании? На выходных попробую его отключить и проверить.