LINUX.ORG.RU
ФорумAdmin

Netacct-mysql и SNAT


0

0

Здравствуйте. У меня стоит сервер на Mandrake Linux 10, MySQL 4.0.18 и netacct-mysql 0.73. Есть 2 интерфейса: eth0(192.168.11.1) - смотрит в локальную сеть, eth1(192.168.246.130) - смотрит на роутер с ip 192.168.246.129, а тот дальше к провайдеру, ну это не столь важно.

Так вот, я использую iptables и SNAT, правило следующее: iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.246.130

Если я хочу разрешить доступ клиентам в Интернет (по умолчанию в iptbales все пакеты в таблице FORWARD - DROP, PREROUTING & POSTROUTING - ACCEPT), то добавляю правило в таблицу FORWARD: iptables -D FORWARD -p ALL -s 192.168.11.100 -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT iptables -D FORWARD -p ALL -d 192.168.11.100 -j ACCEPT

Если хочу запретить, то просто удаляю эти правила.

Я считаю трафик netacct-mysql 0.73 с полным логинингом. Вот конфиг: mysql_user acct mysql_password ******** mysql_host localhost mysql_database netacct mysql_table accounting

pidfile /var/run/nacctd.pid flush 300 fdelay 60 file /var/log/net-acct dumpfile /var/log/net-acct-dump

notdev eth1 device eth0 iflimit eth0

ignoremask 255.255.255.0 ignorenet 127.0.0.0 255.0.0.0 debug 2 debugfile /tmp/nacctd.debug

headers lo 14 12 headers eth 14 12

hostlimit 192.168.11.100 hostlimit 192.168.11.101 hostlimit 192.168.11.102 hostlimit 192.168.11.103 hostlimit 192.168.11.104

Судя из конфига, я считаю трафик для клиентов указаных в hostlimit на интерфейсе eth0, т.е. на том, который смотрит в локальную сеть.

Вопорс у меня в следующем: даже если я запрещаю доступ клиентам в инет (см. выше), то все равно при активности клиента (когда он шлет пакеты в Интернет), netacct все равно считает их и пишет в базу. Понятно, что он и должен считать, так как они проходят eth0 интерфейс, но дальше на eth1 не идут, из-за правил в таблице FORWARD. Если в конфиге netacct я меняю eth0 на eth1, то из-за SNAT, все адреса клиентов меняются на адрес eth1 интерфейса и получается, что я не могу разделить трафик по клиентам. Как можно сделать так, чтобы трафик считался на eth1 интерфейсе и его можно было разделить по клиентам, т.е. чтобы netacct видел адреса клиентов а не адрес после SNAT. Или сделать так, чтобы трафик считался на eth0 интерфейсе, но при закрытии доступа в Интернет, не считался netacct-ом трафик. Он конечно не большой (даже лучше сказать маленький), но все равно как-то неправильно получается.

Спасибо за помощь. P.S. Извеняюсь за столь большое сообщение :-).

Забей на это. Так как в этом нет ничего страшного net-acct врет наа копейки и в болльшую сторону. Если это тебя крайне не устраивает переходи на ulogd-mysql

WhiteFox
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.