Настройка квот в IPTABLES

Нужно поставить ограничение трафика на внутреннюю сеть, т.е. чтобы конкретный IP не использовал свыше 100mb upload и download в день, потом, по истечении 24 часов, обнулять и заново считать.
Сеть такая: Инет идёт через 3G Router(192.168.1.1)- это wlan1, на нём запущен DHCP и DNS сервер. На целевой машине, т.е. этой, которая будет являтся роутером и ограничителем трафика, wlan1 имеет адресс 192.168.1.110(прописан статически, dns/gw 192.168.1.1). Второй интерфейс, это wlan0, который Инет не имеет(беспроводной, но это не столь важно), вот к нему, подсоединено несколько компьютеров, которым нужно ограничить трафик. Адресс wlan0 целевой машины(роутера)- 172.16.0.100 (dns и шлюз не прописаны). Далее, в качестве свитча в wlan0, выступает беспроводной роутер, который уже разветляет сеть и к которому подключены машины, которым надо ограничить Инет: 172.16.0.101 172.16.0.102 172.16.0.103.
Собственно, что у меня получилось пока: по образцу составил правила для Iptables, запустил, Инет на машинах wlan0 заработал. Но я не могу разобраться с квотами, в конфиге они прописаны, но работают или нет, не знаю, хотелось бы как-то глянуть, где этот трафик считается. И второе не понятно: свои правила я сохранил в /var/lib/iptables/rules-save, и когда запускаю iptables, он удаляет в правилах мои коментарии и пишет свои, почему ?
Вот оригинал того, что я кладу в rules-save:

#wlan1 has internet and wlan0 not
#wlan1 192.168.1.0
#wlan0 172.16.0.0
#/var/lib/iptables/rules-save
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

# allow local loopback connections
-A INPUT -i lo -j ACCEPT

# drop INVALID connections
-A INPUT   -m state --state INVALID -j DROP
-A OUTPUT  -m state --state INVALID -j DROP
-A FORWARD -m state --state INVALID -j DROP

# allow all established and related
-A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# allow connections to my ISP's DNS servers
-A OUTPUT -d 192.168.1.1 -m state --state NEW -p udp --dport 53 -o wlan1 -j ACCEPT
-A FORWARD -d 192.168.1.1 -m state --state NEW -p udp --dport 53 -i wlan0 -o wlan1 -j ACCEPT

# allow outgoing connections to web servers
-A OUTPUT  -d 0/0 -m state --state NEW -p tcp -m multiport --dport http,https -o wlan1 -j ACCEPT
-A FORWARD -d 0/0 -m state --state NEW -p tcp -m multiport --dport http,https -o wlan0 -i wlan0 -j ACCEPT

#allow pings
-A OUTPUT -d 0/0 -p icmp -m icmp --icmp-type echo-reply -o wlan1 -j ACCEPT
-A FORWARD -d 0/0 -p icmp -m icmp --icmp-type echo-reply -o wlan1 -i wlan0 -j ACCEPT

#QUOTA for iPs in wlan0
-A FORWARD -s 172.16.0.101 -m quota --quota 104857600 -j ACCEPT
-A FORWARD -d 172.16.0.101 -m quota --quota 104857600 -j ACCEPT
-A FORWARD -s 172.16.0.102 -m quota --quota 104857600 -j ACCEPT
-A FORWARD -d 172.16.0.102 -m quota --quota 104857600 -j ACCEPT
-A FORWARD -s 172.16.0.103 -m quota --quota 104857600 -j ACCEPT
-A FORWARD -d 172.16.0.103 -m quota --quota 104857600 -j ACCEPT

# log all other attempted out going connections
-A OUTPUT -o wlan1 -j LOG
-A FORWARD -j LOG

# default is to DROP out-going connections
COMMIT
*nat

# set up IP forwarding and nat
-A POSTROUTING -o wlan1 -j SNAT --to 192.168.1.110
COMMIT

Запускаю, gateway dem #/etc/init.d/iptables start и вот что показывает таблица:


gateway dem # iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere            state INVALID 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            state INVALID 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     udp  --  anywhere             192.168.1.1         state NEW udp dpt:domain 
ACCEPT     tcp  --  anywhere             anywhere            state NEW multiport dports http,https 
ACCEPT     icmp --  anywhere             anywhere            icmp echo-reply 
ACCEPT     all  --  172.16.0.101         anywhere            quota: 104857600 bytes
ACCEPT     all  --  anywhere             172.16.0.101        quota: 104857600 bytes
LOG        all  --  anywhere             anywhere            LOG level warning 

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            state INVALID 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     udp  --  anywhere             192.168.1.1         state NEW udp dpt:domain 
ACCEPT     tcp  --  anywhere             anywhere            state NEW multiport dports http,https 
ACCEPT     icmp --  anywhere             anywhere            icmp echo-reply 
LOG        all  --  anywhere             anywhere            LOG level warning 

gateway dem # iptables -L -t nat
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  anywhere             anywhere            to:192.168.1.110 

останавливаю /etc/init.d/iptables stop , и вот что происходит с /var/lib/iptables/rules-save:

# Generated by iptables-save v1.4.6 on Sun Jan  2 02:46:06 2011
*nat
:PREROUTING ACCEPT [30:11067]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [21:1765]
:POSTROUTING ACCEPT [0:0]
[18:1157] -A POSTROUTING -o wlan1 -j SNAT --to-source 192.168.1.110 
COMMIT
# Completed on Sun Jan  2 02:46:06 2011
# Generated by iptables-save v1.4.6 on Sun Jan  2 02:46:06 2011
*mangle
:PREROUTING ACCEPT [164:62977]
:INPUT ACCEPT [45:13066]
:FORWARD ACCEPT [63:28039]
:OUTPUT ACCEPT [43:5763]
:POSTROUTING ACCEPT [105:34027]
COMMIT
# Completed on Sun Jan  2 02:46:06 2011
# Generated by iptables-save v1.4.6 on Sun Jan  2 02:46:06 2011
*filter
:INPUT DROP [3:84]
:FORWARD DROP [0:0]
:OUTPUT DROP [5:729]
[0:0] -A INPUT -i lo -j ACCEPT 
[0:0] -A INPUT -m state --state INVALID -j DROP 
[35:11944] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
[0:0] -A FORWARD -m state --state INVALID -j DROP 
[61:27918] -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
[1:73] -A FORWARD -d 192.168.1.1/32 -i wlan0 -o wlan1 -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT 
[0:0] -A FORWARD -i wlan0 -o wlan1 -p tcp -m state --state NEW -m multiport --dports 80,443 -j ACCEPT 
[0:0] -A FORWARD -i wlan0 -o wlan1 -p icmp -m icmp --icmp-type 0 -j ACCEPT 
[1:48] -A FORWARD -s 172.16.0.101/32 -m quota --quota 104857600 -j ACCEPT 
[0:0] -A FORWARD -d 172.16.0.101/32 -m quota --quota 104857600 -j ACCEPT 
[0:0] -A FORWARD -j LOG 
[0:0] -A OUTPUT -m state --state INVALID -j DROP 
[18:3044] -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
[14:916] -A OUTPUT -d 192.168.1.1/32 -o wlan1 -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT 
[2:120] -A OUTPUT -o wlan1 -p tcp -m state --state NEW -m multiport --dports 80,443 -j ACCEPT 
[0:0] -A OUTPUT -o wlan1 -p icmp -m icmp --icmp-type 0 -j ACCEPT 
[3:252] -A OUTPUT -o wlan1 -j LOG 
COMMIT
# Completed on Sun Jan  2 02:46:06 2011

Почему он его изменяет ? Как сделать чтоб все мои комментарии оставались и ничего не сжималось как он делает? Я подумывал что проблема в /etc/conf.d/iptables, по умолчанию там стоит что надо сохранять текущее положение счётчиков при останове:

IPTABLES_SAVE="/var/lib/iptables/rules-save"

# Options to pass to iptables-save and iptables-restore 
SAVE_RESTORE_OPTIONS="-c"

# Save state on stopping iptables
SAVE_ON_STOP="yes"

P.S. Пока это первый этап, тобишь разобраться с счётчиком трафика и скриптом, второй это уже будет cron и автоматическое обнуление трафика после 24 часов для каждого IP.
P.P.S Там у меня в скрипте ошибка в пробросе ping пакетов, исправлю, пока это не столь важно.


gateway dem # ping mail.ru
PING mail.ru (94.100.191.204) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

С Новымъ Годомъ!

Попробуйте --match quota2 из пакета net-firewall/xtables-addons,
только не забудьте про параметр --name Ваше_Название.
Ежели чего получится - рад за Вас :D

До квот ещё добраться нужно,

До квот ещё добраться нужно, для начала хочется разобраться с /var/lib/iptables/rules-save, почему после останова iptables, он видоизменяется? Может я не туда свой скрипт вставляю?

Demontager написал(а): До

Demontager написал(а):
До квот ещё добраться нужно, для начала хочется разобраться с /var/lib/iptables/rules-save, почему после останова iptables, он видоизменяется? Может я не туда свой скрипт вставляю?

В файле /etc/conf.d/iptables
строка
SAVE_ON_STOP="no"

Demontager написал(а): До

Demontager написал(а):
До квот ещё добраться нужно, для начала хочется разобраться с /var/lib/iptables/rules-save, почему после останова iptables, он видоизменяется? Может я не туда свой скрипт вставляю?

Может и не туда, смотря что задумано. Там iptables сохраняет свои настройки.

Почему видоизменяется?!

Нууу, man iptables :-D
Для начала, давайте слегка рассмотрим Ваш скрипт...
Думаю, стоит заменить это (вообще не знаю - зачем сие?) -

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

, на что-то, подобное этому:

eval /sbin/iptables --policy INPUT DROP
eval /sbin/iptables --policy OUTPUT DROP
eval /sbin/iptables --policy FORWARD DROP

после чего можно смело удалить:

-A INPUT   -m state --state INVALID -j DROP
-A OUTPUT  -m state --state INVALID -j DROP
-A FORWARD -m state --state INVALID -j DROP

т.к. всё, что не соответствует критериям в наборах правил с ACCEPT, пойдёт в /dev/null.
Цепочка ниже:
-A FORWARD -s 172.16.0.101 -m quota --quota 104857600 -j ACCEPT,
у Вас не отработает, ибо выше по тексту скрипта у Вас написано правило:
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Кстати,
--match quota,
входящий(ая) (не знаю, как правильно) в стандартный "набор"
net-firewall/iptables,
насколько я понимаю, использует один счётчик на интерфейс, так что у Вас не получится задуманное, пробуйте
net-firewall/xtables-addons
- он позволяет создавать именованные "считалки" в директории /proc отдельно для каждого правила/набора правил.
(Взято из man xtables-addons)

А что означает это -
-A POSTROUTING -o wlan1 -j SNAT --to 192.168.1.110?
Вам стоит взглянуть на вывод команды
iptables --jump SNAT --help.
За сим откланиваюсь - лень писать :-)

Спасибо, немножко взяв

Спасибо, немножко взяв информации от сюда и от манов и с irc, удалось всётаки настроить квоты и я добился того что задумал, вот так вот.
Я не использовал rules-save, а создал отдельно скрипт, и это проще для моего пониманиия, пока что.

#!/bin/bash
#wlan1 has internet and wlan0 not
#wlan1 192.168.1.0
#wlan0 172.16.0.0
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
iptables -t nat -F OUTPUT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# allow local loopback connections
iptables -A INPUT -i lo -j ACCEPT

# drop INVALID connections
iptables -A INPUT   -m state --state INVALID -j DROP
iptables -A OUTPUT  -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

# allow all established and related
iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

#allow pings
iptables -A INPUT -p icmp -j ACCEPT
#iptables -A FORWARD -p icmp -j ACCEPT

#QUOTA for iPs in wlan0
iptables -A FORWARD -s 172.16.1.101 -m quota --quota 3146000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.101 -m quota --quota 13636000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.102 -m quota --quota 3146000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.102 -m quota --quota 13636000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.103 -m quota --quota 3146000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.103 -m quota --quota 13636000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.104 -m quota --quota 3146000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.104 -m quota --quota 13636000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.105 -m quota --quota 3146000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.105 -m quota --quota 13636000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.113 -m quota --quota 104857600 -j ACCEPT
iptables -A FORWARD -d 172.16.1.113 -m quota --quota 104857600 -j ACCEPT

# log all other attempted out going connections
iptables -A OUTPUT -o wlan1 -j LOG
iptables -A FORWARD -j LOG

# default is to DROP out-going connections

# set up IP forwarding and nat
iptables -t nat -A POSTROUTING -o wlan1 -j SNAT --to 192.168.1.110

Этот скрипт положил в /etc/cron.daily, и в кроне его прописал на запуск раз в 24 часа.
И вот та картина, которую и хотел получить:

gateway dem # iptables -nv -L FORWARD
Chain FORWARD (policy DROP 45 packets, 2751 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           state INVALID 
    0     0 ACCEPT     all  --  *      *       172.16.1.101         0.0.0.0/0           quota: 3146000 bytes
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            172.16.1.101        quota: 13636000 bytes
    0     0 ACCEPT     all  --  *      *       172.16.1.102         0.0.0.0/0           quota: 3146000 bytes
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            172.16.1.102        quota: 13636000 bytes
   26  1687 ACCEPT     all  --  *      *       172.16.1.103         0.0.0.0/0           quota: 3146000 bytes
   12  1441 ACCEPT     all  --  *      *       0.0.0.0/0            172.16.1.103        quota: 13636000 bytes
  288 90845 ACCEPT     all  --  *      *       172.16.1.104         0.0.0.0/0           quota: 3146000 bytes
  204 43117 ACCEPT     all  --  *      *       0.0.0.0/0            172.16.1.104        quota: 13636000 bytes
    0     0 ACCEPT     all  --  *      *       172.16.1.105         0.0.0.0/0           quota: 3146000 bytes
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            172.16.1.105        quota: 13636000 bytes
    0     0 ACCEPT     all  --  *      *       172.16.1.113         0.0.0.0/0           quota: 104857600 bytes
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            172.16.1.113        quota: 104857600 bytes
   45  2751 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 

Там видно что левые пакеты отбрасываются от незанесённых в список IP, также работает счётчик байтов. При привышении лимита, срабатывает DROP, вообщем, всё как и хотел. Да, модуль quota у меня в ядре есть (2.6.36), так что ничего ставить не пришлось.
Двигатель прогресса не стоит на месте и тут руки зачесались прикрепить эти правила к SQUID. Т.е., как я себе это представляю: Для пущего экономства трафика, как можно больше выдавать пакетов из кеша SQUID. Предварительно узнал у юзеров нашей локальной сети, кто чем чаще всего пользуется и куда заходит, оказалось это mail.ru, yahoo.com, facebook, новостные сайты. Вот если бы как можно больше удалось закешировать это и заодно прибавилось бы скорости загрузки, было бы вообще чудесно. Собственно, с чего можно тут начать? Маны по squid немного прочёл, и также с примерами, но нужна помощь с данной обстановкой, т.е. нужно squid привязать к этому скрипту и вторая цель - сделать это так, чтобы не пришлось вмешиваться в настройку других компьютеров (прописывать порт squid в браузере и т.д.).

Цитата:
А что означает это -
-A POSTROUTING -o wlan1 -j SNAT --to 192.168.1.110?

Это так настроен нат, у меня роутер имеет статический адресс, поэтому MASQUERDING тут не нужен.

-A POSTROUTING -o wlan1 -j

-A POSTROUTING -o wlan1 -j SNAT --to 192.168.1.110
Это правило у вас написано не правильно, должно быть так:
-A POSTROUTING -o wlan1 -j SNAT --to-source 192.168.1.110

Тогда странно, у меня и без

Тогда странно, у меня и без "source" работает

Так и не получилось с

Так и не получилось с перенаправлением в SQUID, что- то не так я делаю, зарисовал сеть схематично, для наглядности:

В скрипт добавил:

#REDIRECT to SQUID
iptables -t nat -A PREROUTING -s 172.16.0.0/24 -i wlan1  -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.110:3128

Но трафик 80 порта от клиентов в сети 172.16.0.0 в SQUID не идёт, почему ?
Весь код скрипта:

#!/bin/bash
#wlan0 has internet and wlan1 not
#wlan0 192.168.0.0
#wlan1 172.16.0.0
set -x
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
iptables -t nat -F OUTPUT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# allow local loopback connections
iptables -A INPUT -i lo -j ACCEPT

# drop INVALID connections
iptables -A INPUT   -m state --state INVALID -j DROP
iptables -A OUTPUT  -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

# allow all established and related
iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

#allow pings
iptables -A INPUT -p icmp -j ACCEPT

#QUOTA for iPs in wlan1
iptables -A FORWARD -s 172.16.1.101 -m quota --quota 6291000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.101 -m quota --quota 10490000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.102 -m quota --quota 10490000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.102 -m quota --quota 16781000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.103 -m quota --quota 10490000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.103 -m quota --quota 20980000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.104 -m quota --quota 10490000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.104 -m quota --quota 16781000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.105 -m quota --quota 10490000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.105 -m quota --quota 16781000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.106 -m quota --quota 10490000 -j ACCEPT
iptables -A FORWARD -d 172.16.1.106 -m quota --quota 16781000 -j ACCEPT
iptables -A FORWARD -s 172.16.1.107 -m quota --quota 104857600 -j ACCEPT
iptables -A FORWARD -d 172.16.1.107 -m quota --quota 104857600 -j ACCEPT

#REDIRECT to SQUID
iptables -t nat -A PREROUTING -s 172.16.0.0/24 -i wlan1  -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.110:3128

#log all other attempted out going connections
iptables -A OUTPUT -o wlan0 -j LOG
iptables -A FORWARD -j LOG

# set up IP forwarding and nat
iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to-source 192.168.1.110

Попробуйте так:iptables -t

Попробуйте так:
iptables -t nat -A PREROUTING ! -d 172.16.0.0/24 -i wlan1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

И не забудьте повесить проксю на 172.16.1.110, при условии что внутренний IP у вас такой, а не как на схеме 172.168.1.110.

Я вообще перед запуском какого либо сервиса проверяю что-бы он висел только там где это надо, а не на 0.0.0.0, проверить это можно так: netstat -lpn

Да, там ошибка на картинке, я

Com-P,
Да, там ошибка на картинке, я потом заметил, написал механически 8-ку, а сеть настроена 172.16.1.100
Путём эксперемента, проверил, без ошибок выполняется редирект либо:

iptables -t nat -A PREROUTING ! -d 172.16.0.0/24 -i wlan1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

или так

iptables -t nat -A PREROUTING -s 172.16.0.0/24 -i wlan1  -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.110:3128

(по крайней мере iptables ничего по этому поводу не пишет).
Думаю тогда проблема со SQUID теперь, вот такой конфиг сейчас:

http_port 192.168.1.110:3128  transparent
acl all src all
acl client_network src 192.168.1.110
acl localnet src 127.0.0.1/32
acl mynet src 172.16.1.0/24
visible_hostname myhost
http_access allow client_network
http_access allow localnet
http_access allow mynet
http_access deny all
access_log /var/log/squid/access.log squid

но он пишет пару замечаний:

gateway dem # /etc/init.d/squid start
squid                | * Initializing cache directory /var/cache/squid .. [ ok ]
squid                | * Starting squid ...
squid                |2011/01/10 00:25:39| WARNING: (B) '::/0' is a subnetwork of (A) '::/0'
squid                |2011/01/10 00:25:39| WARNING: because of this '::/0' is ignored to keep splay tree searching predictable
squid                |2011/01/10 00:25:39| WARNING: You should probably remove '::/0' from the ACL named 'all' 

не могу сообразить что надо удалить, это что - '::/0' ?

И после запуска squid, netstat показывает:

gateway dem #  netstat -lpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      5239/smbd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      5108/cupsd          
tcp        0      0 192.168.1.110:3128      0.0.0.0:*               LISTEN      32447/(squid)       
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      5239/smbd           
udp        0      0 192.168.1.110:137       0.0.0.0:*                           5248/nmbd           
udp        0      0 172.16.1.110:137        0.0.0.0:*                           5248/nmbd           
udp        0      0 0.0.0.0:137             0.0.0.0:*                           5248/nmbd           
udp        0      0 192.168.1.110:138       0.0.0.0:*                           5248/nmbd           
udp        0      0 172.16.1.110:138        0.0.0.0:*                           5248/nmbd           
udp        0      0 0.0.0.0:138             0.0.0.0:*                           5248/nmbd           
udp        0      0 0.0.0.0:631             0.0.0.0:*                           5108/cupsd          
udp        0      0 0.0.0.0:34213           0.0.0.0:*                           32447/(squid)

В своём браузере прописал HTTP прокси 192.168.1.110:3128, при хождении в Инет только сплошные "TCP_MISS", в /var/log/squid/access.log.
и главная проблема- когда что-то браузю в Инете через компьютер клиента в логе access.log ничего не появляется. Получается трафик от клиентов в SQUID не заруливается ?
P.S. Вот ещё нашёл, в одном HOWTO заворачивание трафика в squid выполняется таким образом:
цитата:


Желающим сделать прозрачное проксирование необходимо изменить в конфиге squid.conf одну строчку
Код:

...
http_port 3128 transparent
...

Затем для заворачивание нужных портов на сквид прописывается правило
Код:

iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128

Во первых: зачем вам прокся

Во-первых, зачем вам прокся на внешнем интерфейсе? Предлагаю сделать так:

http_port 172.16.1.110:3128 transparent protocol=http
icp_port 0
redirect_rewrites_host_header off

acl lo src 127.0.0.1/32
acl mynet src 172.16.1.0/24
acl CONNECT method CONNECT
acl SSL_ports port 443 563
acl Safe_ports port 80 210 119 70 21 1025-65535

visible_hostname myhost
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access allow lo
http_access allow mynet
http_access deny all

access_log /var/log/squid/access.log squid
cache_log /dev/null
cache_store_log /dev/null

Не помню с какой версии кальмара, но правило acl all src all или acl all src 0.0.0.0/0 прописывать не надо.
Заворачивание на проксю лучше делать через REDIRECT, при условии заворачивания в приделах одного хоста.

В браузере ничего прописывать не надо, ибо прокси у вас прозрачный.

Во-вторых, в конфиге самбы надо добавить или изменить следующие:

bind interfaces only = yes
interfaces = wlan1 lo
hosts allow = 172.16.1.0/24 127.0.0.1
hosts deny = 0.0.0.0/0

Опять же зачем вам самба на внешнем интерфейсе?

Совсем забыл, при

Совсем забыл, при использовании прокси вам надо будет перепродумать квоты, ибо трафик на проксю через FORWARD не проходит.

Изначально у меня не было

Изначально у меня не было сети (до настройки лимитов) 172.16.0.0, ,был один интерфейс 192.168.1.0, поэтому SAMBA и стоит так, т.е. клиент подключался к роутеру 192.168.1.1 и мог открыть у меня шары SAMBA.
Вот, не понял этого:

Цитата:
Заворачивание на проксю лучше делать через REDIRECT, при условии заворачивания в приделах одного хоста

Как это заворачивание в пределах одного хоста?
Может всё таки проблема в настройке TP-LINK, то что трафик не идёт в SQUID(хотя я склоняюсь к вашей версии, ну и скрин подтверждает что FORWARD идёт мимо сервисов)?

На клиентах, для примера возьму 172.16.1.107, при подключении к TP-LINK автоматом назаначается такое:
IP:172.16.1.107
gw:172.16.1.110
dns:192.168.1.1
mask:255.255.0.0
Трасировка на клиенте до 192.168.1.1, даёт такое:
[01]172.16.1.110 (7ms)
[02] 192.168.1.1 (14ms)

Вот сами внутренние настройки роутера TP-LINK (172.16.0.1):
LAN ( локальная сеть роутера)

DHCP (прописано откуда он должен брать Инет и DNS)

FORWARDING (вот тут немного странно, я пытался пробросить (1712) порт для SSH, чтоб можно было с клиентской машины (wlan1 172.16.0.0) логится в LINUX-ROUTER, но конекта не получилось, хотя пинг есть и с SAMBA тоже самое не вышло.)

ADDRESS RESERVATION ( тут я привязал к MAC адрессам IP, чтоб каждый всегда имел один и тот же IP:

Хорошо, а если переделывать квоты через REDIRECT, то как это будет выглядить ?

Действие REDIRECT - Выполняет

Действие REDIRECT - Выполняет перенаправление пакетов и потоков на другой порт той же самой машины. К примеру, можно пакеты, поступающие на HTTP порт перенаправить на порт HTTP proxy. Действие REDIRECT очень удобно для выполнения "прозрачного" проксирования (transparent proxying), когда машины в локальной сети даже не подозревают о существовании прокси.

Вам не нужен FORWARDING на TP-LINK, вам на TP-LINK надо разрешить весь трафик из локалки до роутера. То что делаете вы, это проброс портов, вам это не надо. Проще идти сразу на роутер. Посмотрите политики на TP-LINK, возможно у вас там что-то закрыто.

Квоты я считаю имеет смысл настраивать в билинговой системе, у меня к примеру стоит NeTAMS.

Как я видел по листингу netstat, ssh у вас не поднят.

А вообще я вам настоятельно рекомендую вкурить вот это.

Т.е. я не смогу использовать

Т.е. я не смогу использовать квоты в связке с IPTABLES+SQUID? Либо SQUID+и внешний биллинг, либо IPTABLES+квоты, но без SQUID ? На TP-LINKе ничего не закрыто, фаервол выключен, никаких блокировок пакетов там не стоит. Пробрасывать я пробывал SSH, но это сейчас не столь важно, не поднят он, потомучто я вручную его пускал для проверки.

Нет, вы меня не правильно

Нет, вы меня не правильно поняли, квоты будут работать на непроксируемом трафике. Смотрите, транзитный трафик идет так - ->PREROUTING->FORWARD->POSTROUTING->.
Трафик к локальным процесам идет так - ->PREROUTING->INPUT->Local Services->OUTPUT->POSTROUTING->.

Вы повесили сквид на внутренний интерфейс? Работает?

Квоты у вас будут реализованы либо на неHTTP трафик, либо на весь трафик но через билинг. Можно еще сделать Squid+что-то что реализует квоты, но ИМХО это бред.

Тот конфиг что вы писали выше

Тот конфиг что вы писали выше для Squid я проверил -не работает.
с access.log:
1294750724.754 0 172.16.1.110 NONE/400 3742 CONNECT error:method-not-allowed - NONE/- text/html
А браузер пишет что он настроен на работу с прокси, но тот отклоняет запросы.
А netsam позволит организовать работу учёта трафика аналогичную моей схеме и плюс SQUID? Вы какой netsam ставили ? Там у них есть старые версии, но там зависимостей много и есть более интересная и новее версия - на Java. Она нормально работает ?

P.S. Тут уже писали попробывать xtables_addons, я глянул в его описание, только пока не разобрался на каком принципе он подсчитывает
+ + xtables_addons_quota2 : match implements a named counter which can be increased or decreased on a per-match basis

Тот конфиг что я прислал,

Тот конфиг что я прислал, просто голый этот конфиг, у меня работает, и с прописанным прокси, и как прозрачный, проверял на опере, и на ИЕ.
У меня стоит Squid Cache: Version 3.1.8.

Попробуйте проверить без TP-LINK, т.е. на прямую провод в роутер.

Да позволит, у него очень хорошее и подробное описание.
Я использую NeTAMS 3.4.5 (3490.6), ибо новый пока в бете, а когда зарелизят будет платный.
Трафик в NeTAMS заворачивается через libpcap, лень было морочится с iptables.

Попробуйте убрать строки :

Попробуйте убрать строки :

http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports

Но мне кажется что дело не в этом, хотя ругается именно на это.

Com-P Не поделитесь случайно

Com-P
Не поделитесь случайно рабочим e-build'om NeTAMS 3.4.5 (3490.6)? Я нашёл на форуме netams один, но он не рабочий, так с него установить и не смог:


gateway Evil_Islands # emerge -av netams

These are the packages that would be merged, in order:

Calculating dependencies... done!

!!! All ebuilds that could satisfy "net-proxy/netams" have been masked.
!!! One of the following masked packages is required to complete your request:
- net-proxy/netams-3.2.3 (masked by: missing keyword)

C Java тоже проблема, что-то ей не хватает:

dem@gateway ~/NETAMS/netams4.0.407/lib $ java netams4-common.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: netams4-common/jar
Caused by: java.lang.ClassNotFoundException: netams4-common.jar
	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: netams4-common.jar.  Program will exit

P.S. Сугубо конечно личное пристрастие, но хотелось бы сделать всю эту систему руками, чтоб понять как это работает. И во вторых, стороние приложения, позволяют ведь как-то осуществить это, значит, можно и самомому это настроить. Похоже на изобретение велосипеда, согласен, но сама логика остаётся неразрешимой пока(для меня).

p.p.s Не хочет make собираться для netams-3.4.5 http://pastebin.com/TjRGMd62 libcli стоит

Ebuild я не делал, ставил по

Ebuild я не делал, ставил по их инструкции немного подправив пути. Никакой привязки к кальмару нет, если трафик будет идти через libpcap.
Или вы задаете правила для iptables, по которым пакеты ядром направляются пихаются в некую виртуальную трубу (которая называется queue), откуда их потом берет программа, прокачивает через себя (смотря на заголовки и делая подсчет) и отдает обратно в систему, после чего они спокойно идут себе дальше.

>p.p.s Не хочет make собираться для netams-3.4.5 http://pastebin.com/TjRGMd62 libcli стоит
http://www.netams.com/phpBB3/viewtopic.php?f=2&t=5300&hilit=crypt

C make разобрался, добавил в

C make разобрался, добавил в configure.sh ==> echo "LIB += -pthread -lpcap -lcrypt" >> $makefile
Далее скопировал как по инструкции netams.conf в /etc/natams.conf
бинарные файлы с ../src/ в /usr/sbin
потом положил стартовый скрипт для демона netams в /etc/init.d/
Проверяю:


gateway dem # /etc/init.d/netams start
netams               | * Starting NeTAMS ...                              [ ok ]
gateway dem # telnet gateway 20001
Trying 127.0.0.1...
Connected to gateway.
Escape character is '^]'.
NeTAMS 3.4.5 (3490.13) dem@gateway / Sun 16 Jan 2011 15:31:40 +0200

Username: admin
Password: 

# html

# save

# show version
NeTAMS 3.4.5 (3490.13) dem@gateway / Sun 16 Jan 2011 15:31:40 +0200
Run time  2 mins 17.6701 secs
System time:  2 mins 0.0160 secs
Average CPU/system load: 0.01%
Process ID: 2021 RES: 4936K
Memory allocated: 1125907 (84), freed (6) (0 NULL) [78 used]
Total objects:
   Oids used: 9
   NetUnits: 4
   Policies: 3
   Services: 10
   Users: 1
   Connections: 1 active, 1 total

Services info:
 Storage ID=1 type mysql wr_q 0/0 rd_q 0/0
 Data-source ID=1 type LIBPCAP source eth0:0 loop 0 average 0 mcsec
    Perf: average skew delay 0 mcsec, PPS: 0, BPS: 0
Alerter 0 queue max: 255, current: 0
 Scheduled tasks: 1

# show config
#NeTAMS 3.4.5 (3490.13) dem@gateway / Sun 16 Jan 2011 15:31:40 +0200
#configuration built Wed Jan 19 01:13:52 2011
#begin
#global variables configuration
debug none
language ru
user oid 0D3512 name admin real-name "Admin" crypted $1$$HpXmjtul/3i1.bf.B27bU. email root@localhost permit all

#services configuration

service server 0
login local
listen 20001
max-conn 6

service processor
lookup-delay 60
flow-lifetime 180
policy oid 01F02B name ip target proto ip
policy oid 0B79EB name www target proto tcp port 80 81 8080 3128
policy oid 06B3E8 name mail target proto tcp port 25 110
restrict all pass local pass
unit group oid 09C21A name CLIENTS acct-policy ip www mail
unit host oid 038F23 name server ip 192.168.0.1 acct-policy ip www mail
unit user oid 0DCCAB name client1 ip 192.168.0.10 email  parent CLIENTS acct-policy ip www mail
unit net oid 0FD834 name LAN ip 192.168.0.0/24 acct-policy ip www mail

service storage 1
type mysql
accept all

service data-source 1
type libpcap
source eth0 
rule 11 "ip"

service quota
policy ip
notify soft owner
notify hard owner
notify return owner

service alerter 0
report oid 06100 name rep1 type traffic period day detail simple
smtp-server localhost

service html
path /usr/local/www/netams/stat
run 10min
url http://192.168.0.1/netams/
htaccess yes
client-pages all
account-pages none

service scheduler
oid 08FFFF time 10min action "html"


#end

# 

Сеть конечно пропала вся, теперь нужно подстроить конфиг под свои нужды... Но как в SQUID перенаправить 172.16.0.0 сеть, пока не понимаю.

Вам надо во первых прочитать

Вам надо во первых прочитать Документацию по настройке netams, тогда не будет отрубаться сеть.
Ваш конфиг для netams, в данный момент для вашей системы неработоспособен.

Простите, но вы даже не удосужились перенастроить конфиг под свои нужды. RTFM.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".