Страница 1 из 1

squid авторизация по ip+mac

Добавлено: 2011-06-07 6:46:44
Time
как сие можно организовать?
и что бы можно было считать трафик

Re: squid авторизация по ip+mac

Добавлено: 2011-06-08 18:46:52
Alteron
Статический ARP и акли в сквиде по IP. ы?

Re: squid авторизация по ip+mac

Добавлено: 2011-06-09 7:58:54
KanycTa
релизовал это чудо через php скрипт, который лезет в mysql базу и смотрит есть у этого ип инет или нет
Только без мака

ЧАСТЬ конфига squid.conf

Код: Выделить всё

external_acl_type ACLIP children=25 ttl=0 %SRC /usr/bin/php /etc/squid/mysql/inet.php
acl     Inet_Users              external  ACLIP
acl     all                     src       0.0.0.0/0.0.0.0
acl     vpn                     src       192.168.17.0/24
acl     vpn                     src       192.168.16.0/24
acl     vpn                     src       192.168.254.2
acl     SSL_ports               port      443 563
acl     http_ports              port      80 443 8080 8420 8443 5222 5190
acl     CONNECT                 method    CONNECT
acl     manager                 proto     cache_object
acl     my_networks             src       192.168.0.0/16
acl     CONNECT                 method    CONNECT
acl     manager                 proto     cache_object

acl allow_all dstdomain \
"/etc/squid/urls/allow.txt"

acl corpsite dstdomain \
"/etc/squid/urls/corpsite.txt"

http_access deny !http_ports
http_access deny CONNECT !SSL_ports
http_access     allow   all    corpsite
http_access     allow   vpn    all
http_access allow my_networks Inet_Users
http_access deny all


inet.php

Код: Выделить всё

<?php
ini_set('display_errors', 0);

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0", false);
header("Cache-Control: max-age=0", false);
header("Pragma: no-cache");
header("Content-Type: text/html; charset=utf-8");

INCLUDE ('mysql.class.php');

$db = new MySQL ();
$db_host='dbserver';
$db_user='dbuser';
$db_pwd='dbpassword';
$db_name='dbname';
$db->set($db_host, $db_user, $db_pwd, $db_name);

$f=fopen('php://stdin' , 'r');
while($ip = fgets($f, 50))
{
  $ip = trim($ip);
  $SQL = "SELECT * from list where ip = '".$ip."' AND squid = 1 LIMIT 1";
  $result = $db->query($SQL);
  if($db->num_rows($result) > 0)
  {
    $row = $db->fetch_array($result);
    $ret = 'OK user='.$row['user'];
  }
  else
  {
    $ret = 'ERR';
  }
  echo $ret;
  echo "\r\n";
}
?>