Ipcad, hostname и лог squid-a
-
Добрый день.
Успешно настроил учет трафика, по http://ru.doc.pfsense.org/index.php/%D0%9F%D0%BE%D0%B4%D1%81%D1%87%D0%B5%D1%82_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Squid_%D0%B8_ipcad_%D0%B2_pfSense_1.2.3 решил все это дело причесать и запутался.
И так, требуется, чтобы в лог сквида в заместо IP пользователя писалось его имя.
В самом сквиде все решилось просто - добавил в Custom Options строчку - log_fqdn onПроблема осталась с дописыванием из айпикада в лог сквида. Сквид пишет красиво:
1399370029.453 25063 home-363de66a13 TCP_MISS/200 422 POST http://q56.queuev4.vk.com/im441 - DIRECT/87.240.134.137 text/javascript
А ipcad нет:
1399370040.000 1 192.168.1.153 TCP_MISS/200 48 CONNECT 95.135.221.135:12657 - DIRECT/95.135.221.135 -
Так вот, по инструкции в лог пишется строчкой скрипта:
rsh localhost show ip accounting checkpoint | grep $net1 | awk -v vtime=$ttime '{print (vtime".000",1,$2,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}' >> /var/squid/log/access.log
Вот эта выделеная $2 и есть IP
И решил я как то заместо этой двойки вставлять имя хоста и даже прочитал, что и авка можно вполнять shell команды и написал что то на нем первый раз в жизни:
awk '{system ("grep 192.168.1.100 /etc/hosts")}' | awk '{print $2}'
Но так как я ненастоящий сварщик, естественно не получается у меня скрестить этих двух ежей (заменить $2 на скрипт).. Товарисчи помогите, может не в ту сторону копаю?
-
Хотя инструкцию писал я, убей бог - ничего не помню. Там как-то сложно все с вложенностью кавычек. Может имеет смысл поменять в вашем скрипте все ' на ", а " на '
-
Kак вариант :
_NAME=$(awk "{system ("grep 192.168.1.100 /etc/hosts")}" | awk "{print $2}") # объявляем переменную
rsh localhost show ip accounting checkpoint | grep $net1 | awk -v vtime=$ttime '{print (vtime".000",1,$NAME,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}' >> /var/squid/log/access.log # используем переменную_
-
Kак вариант :
_NAME=$(awk "{system ("grep 192.168.1.100 /etc/hosts")}" | awk "{print $2}") # объявляем переменную
rsh localhost show ip accounting checkpoint | grep $net1 | awk -v vtime=$ttime '{print (vtime".000",1,$NAME,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}' >> /var/squid/log/access.log # используем переменную_
Так не прокатит. NAME определяется один раз, а "rsh localhost show ip accounting…" - это все-таки много строк
-
Kак вариант :
_NAME=$(awk "{system ("grep 192.168.1.100 /etc/hosts")}" | awk "{print $2}") # объявляем переменную
rsh localhost show ip accounting checkpoint | grep $net1 | awk -v vtime=$ttime '{print (vtime".000",1,$NAME,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}' >> /var/squid/log/access.log # используем переменную_
Так не прокатит. NAME определяется один раз, а "rsh localhost show ip accounting…" - это все-таки много строк
да и заместо 192.168.1.100 надо подставлять как раз $2.. уже всю голову сломал..
-
Я еще вспомнил, что это вам вообще не нужно. В /usr/local/etc/lightsquid/realname.cfg можно для каждого локального IP прописать удобочитаемое имя, оно и будет в отчетах.
-
Я еще вспомнил, что это вам вообще не нужно. В /usr/local/etc/lightsquid/realname.cfg можно для каждого локального IP прописать удобочитаемое имя, оно и будет в отчетах.
знаю, тока не подойдет.. Трафик считается на freewifi и всех я не внесу в файлик.
Клиент подключается, dhcp выделяет ему IP, dns forvarder записывает имя в hosts и он наглядно отображается в lightsquid-е.
На след день, после перезапуска этому клиенту выделяется уже другой IP и в lightsquid-е завтра уже в перемешку хостнеймы с айпишниками, т.к. dhcpd затирает старые записи и выдает первый попавшийся. Хотя я точно знаю, что вчера это IP был у этого клиента, но сегодня у этого хостнейма другой IP.В общем уже даже сам себя запутал, короче, приходят товарисчи с айпадиками и андройдами и подключаются к халявному WiFi.
Об этом есть записи в /etc/hosts192.168.1.128 android-388a8e1edb078a9c.freewifi android-388a8e1edb078a9c # dynamic entry from dhcpd.leases
192.168.1.152 iPhone-Ila.freewifi iPhone-Ila # dynamic entry from dhcpd.leasesзавтра или через неделю, после перезапуска pf, у этих андройдов и айфонов уже другие айпишники и в lightsquid-е в перемешку и iPhone-Ila. и голые IP, и я точно знаю, что этот илья вчера был не одном из этих голых айпишников. Или того хуже, я подключил только что распечатаный ноут, а в отчете показывает, что этот хостнейм месяц назад накачал 2 гига порнухи, потомучто lightsquid построил отчет на основании текущих записей в hosts…
так вот все бы решила возможность писать в лог сразу имена...
ух... ну и накалякал..
-
Static Mappings по MAC в DHCP решает все проблемы, к тому же так и безопаснее - не пускать в инет кого попало
-
Static Mappings по MAC в DHCP решает все проблемы, к тому же так и безопаснее - не пускать в инет кого попало
Я про Ярему, Вы про Фому…
Публичный WiFi, для гостей и сотрудников, пароль написан на стене за секретаршей. Подчеркиваю. Задача не стоит безопаснее.. Пускать нужно кого попало, но надо писать, кто куда ходил. Сотрудники уже записаны в статик..
Static Mappings по MAC в DHCP решает проблему, если клиенты известны.
Хорошо, пойдем с другого конца.. можно ли dhcpd сказать, чтобы определенному маку всегда выделялся 1 IP, какой был первый раз выделен и никакой другой? И если сеть кончилась, то прекратить выдачу.. (сетку можно и на /16 нарезать если что..)
-
Дурную работу себе ищите, честное слово. Про смену MAC и имени хоста слышали ? Что мешает клиенту сменить MAC? И на кой мониторить точку, пароль к к-ой написан на стене за секретаршей ?
Если интересно мое мнение :
- открытие только определенных портов и протоколов для wi-fi клиентов;
- урезание скорости (Limiter);
- если надо защиту от прона и т.д. - выдавайте принудительно клиентам адреса dns-ы Яндекса (http://dns.yandex.ru/) - 77.88.8.7, 77.88.8.3. И даже если они руками пропишут себе другие адреса днс-серверов, можно сделать так , чтобы все запросы на 53-ый порт редиректились на днс-ы яндекса. У меня так в одном учебном заведение и сделано.
-
Дурную работу себе ищите, честное слово. Про смену MAC и имени хоста слышали ? Что мешает клиенту сменить MAC? И на кой мониторить точку, пароль к к-ой написан на стене за секретаршей ?
Если интересно мое мнение :
- открытие только определенных портов и протоколов для wi-fi клиентов;
- урезание скорости (Limiter);
- если надо защиту от прона и т.д. - выдавайте принудительно клиентам адреса dns-ы Яндекса (http://dns.yandex.ru/) - 77.88.8.7, 77.88.8.3. И даже если они руками пропишут себе другие адреса днс-серверов, можно сделать так , чтобы все запросы на 53-ый порт редиректились на днс-ы яндекса. У меня так в одном учебном заведение и сделано.
Согласен, работа дурная, но тут изначальная посылка такая - клиент тупой и никто менять маки и хостнеймы не будет, канал толстый… И от прона с торрентами защищаться не надо. С закрытием портов тоже не сладко - руководство качает торренты, да и всякие клиент-банки. Важна просто объективная картина расхода трафика , которой я пока не могу добиться.
Но все равно спасибо за совет.
-
Решено
_net1="192.168.1"
ttime=/usr/bin/rsh localhost sh ip acco | grep 'Accounting data saved' | awk '{print ($4)}'
rsh localhost clear ip accounting#Создаем файл с соответствием ip->host
cat /dev/null > iptohost.sed
grep $net1 /etc/hosts | awk '{print("s/",$1,"/",$2,"/g")}' | sed 's/ //g' | sed 1d >> iptohost.sedМеняем в выводе IP на host
rsh localhost show ip accounting checkpoint | grep $net1 | sed -f iptohost.sed | awk -v vtime=$ttime '{print (vtime".000",1,$2,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}' >> /var/squid/logs/access.log
chown proxy:proxy /var/squid/logs/access.log_Важно избегать коллизий такого рода - если в hosts у gateway 192.168.1.1, а у IphoneMashutka 192.168.1.100, то после отработки скрипта мы будем иметь gateway и gateway00.
Во избежании этого в скрипте я удаляю первую строку (sed 1d), т.к. именно в ней gateway и раздача dhcpd идет с 192.168.1.26.В результате в лог squid-a и самим сквидом штатно и ipcadom через скрипт пишется в качестве имени пользователя его hostname.
-
О, вы молодец! Решили все-таки ;)
-
Подскажите следующее если тема жива, пробую настроить по данному скрипту но ничего не получается, проблема в том что у меня DNCP и DNS сервера на контролере домена отдельно на машине и в /etc/hosts у меня только локальные имена pfsense.