Не стандартный шлюз с подсчетом трафика
Добавлено: 2015-02-10 4:55:07
Не стандартный шлюз с подсчетом трафика.
Есть шлюз фря 9.2х32. Служба mpd5 подымает одну впнку ng0, чтобы на сервере появился интернет. Далее mpd5 разрешает 10 людям подключаться к себе из разных подсетей(всего из 10). 172.20.0.0/24,172.20.1.0/24 и так 10 сетей.
Сессии подымаются, все хорошо, хочется считать с помощью программы ipacctd, скрипт написан на РНР, он запускает ipacctd на 20000 порту(так повелось) и 20001 (вход и выход соответственно).
Это часть скрипта который считает трафик ipacctd.
Трафик считается, все хорошо, в базу мускуля падает, суммируется, но считается не только интернет, но и + локальный трафик, то есть между впнками, между пользователями, и тд и тп. Посоветовали выше правила которое разрешает идти адресам в мир, написать правило которое будет разрешать общение пользователям по локальной сети и между собой, раньше чем в мир. Так и локалка не будет считаться а только мир, но почему то не получилось.
Это правила для локальной сети, 192.168.10.0/24 это адреса для пользователей.
Это правила для мира, кто в 20 таблице тот ходит, кто нет, тот нет.
Вопрос, где еще что написать чтобы локальный трафик не считался?
Без этого правила нету интернета у пользователей. Адрес 192.168.100.22/32 это адрес который получает сам шлюз при подключении впнки.
Есть шлюз фря 9.2х32. Служба mpd5 подымает одну впнку ng0, чтобы на сервере появился интернет. Далее mpd5 разрешает 10 людям подключаться к себе из разных подсетей(всего из 10). 172.20.0.0/24,172.20.1.0/24 и так 10 сетей.
Сессии подымаются, все хорошо, хочется считать с помощью программы ipacctd, скрипт написан на РНР, он запускает ipacctd на 20000 порту(так повелось) и 20001 (вход и выход соответственно).
Это часть скрипта который считает трафик ipacctd.
Код: Выделить всё
/usr/local/sbin/ipacctd -m 900000 -v -p 20000 -f /mnt/ramdisk/ipacctd.in
/sbin/ipfw -q add 16000 divert 20000 all from any to any via ng* out
/usr/local/sbin/ipacctd -m 900000 -v -p 20001 -f /mnt/ramdisk/ipacctd.out
/sbin/ipfw -q add 16001 divert 20001 all from any to any via ng* in
Код: Выделить всё
${ipfw} 50 allow all from 172.17.12.236/32 to me keep-state
${ipfw} 50 allow all from ${vlan20},${vlans200},${usernet},${worknet},${bibl},${local} to me 21,22,80,443,1723,22,161,23,5006
${ipfw} 50 allow all from me to ${vlan20},${vlans200},${usernet},${worknet},${bibl},${local} 21,22,80,443,1723,22,161,23,5006
${ipfw} 50 allow all from 192.168.10.0/24 to ${bibl},${local},${worknet},${vlan20},${vlans200},${usernet},${vpn} via ng*
${ipfw} 50 allow all from ${bibl},${local},${worknet},${vlan20},${vlans200},${usernet},${vpn} to 192.168.10.0/24 via ng*
Код: Выделить всё
${ipfw} 20000 allow all from table\(20\) to any via ng*
${ipfw} 20001 allow all from any to table\(20\) via ng*
Вопрос, где еще что написать чтобы локальный трафик не считался?
Код: Выделить всё
# cat /etc/ipnat.sh
map ng0 from 192.168.10.0/24 to any -> 192.168.100.22/32