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

Исходное сообщение
"Netacct-mysql 0.73 и SNAT"

Отправлено Igor , 23-Июн-04 23:50 
  Здравствуйте.
  
  У меня стоит сервер на 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. Извеняюсь за столь большое сообщение :-).


Содержание

Сообщения в этом обсуждении
"Netacct-mysql 0.73 и SNAT"
Отправлено Beginner , 28-Июн-04 11:20 
Не совсем понял чем считается трафик - iptables  или чем-то другим?

"Netacct-mysql 0.73 и SNAT"
Отправлено Achist , 28-Июн-04 11:41 
>Не совсем понял чем считается трафик - iptables  или чем-то другим?
>


Он считает через libcap просто у тя в конфиге сети не определены и он читает всеподрят даже твой внутренний траф