Чтоб установить Squid, выполните команду
$ sudo apt-get install squid
и дождитесь пока программа установки скачает сквид и все его зависимости и установит их.
Примечание: установится сквид
стабильной второй версии. Если вы хотите установить третий сквид,
указывайте squid3. У меня были с ним некоторые проблемы, однако,
полагаю, что дело было или в кривизне моих рук (чего у вас, возможно,
нет), либо в криво собранном пакете (что вскоре могут исправить).
На этом этапе нам было бы очень полезно (читай – необходимо) иметь еще один компьютер, который можно бы было подключить к внутреннему интерфейсу сервера и на котором мы бы могли проверить соединение с интернетом.
После окончания установки, начинаем редактировать файл конфигурации
сквида. Не знаю как вам, лично мне удобнее когда в файле конфига нет
ничего лишнего, то есть присутствуют только непосредственно параметры
конфигурации. Для этого бекапнем оригинальную конфигурацию сквида (чтоб было где искать описания всех параметров):
$ sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original
и выжмем из оригинальной конфигурации всё, не закоментированное:
$ sudo cat /etc/squid/squid.conf.original | grep -v '^\(#\|$\)' > /etc/squid/squid.conf
В итоге заимеем дефолтный конфигчик
без ничего нишнего. Но всё же очень советую кинуть взор в оригинальный
конфиг и почитать его на досуге – там очень много интересного!
Ну, наконец, приступим к редактированию:
$ sudo nano /etc/squid/squid.conf
Редактировать начинаем со строк с такими комментариями: # RFC1918 possible internal network
Заменяем указанные сети (сеть) на свои внутренние сети, которые мы будем выпускать. У меня это выглядит так:
# обычные пользователи с ограниченной скоростью
acl lim_access src 192.168.222.0-192.168.223.0/255.255.255.0
# необычные пользователи =)
acl full_access src 192.168.222.38/255.255.255.255
Теперь разрешим ходить им на http. Ищем последнюю строчку http_access deny all и добавляем перед ней такие строчки:
http_access allow full_access
http_access allow lim_access
Не забываем сделать то же самое и для icmp_access. Меняем localnet на наши сети:
icmp_access allow full_access
icmp_access allow full_access
Следующим шагом будет установка порта прокси и указание его прозрачности. Редактируем строчку http_port 3128 к следующему виду (порт можете указать и свой, но этот стандартен и желателен):
http_port 3128 transparent
Что такое прозрачность
прокси? Это когда пользователи не обязаны явно указать прокси сервер в
своих приложениях, чтоб выйти в интернет. То есть сервер сам
перенаправляет запросы с 80 порта (и других указанных) на свой
3128. Так вот, следует заметить, что прозрачность у нас появится не
сразу, а только после того как мы соответствующим образом настроим
файрвол. Пока что пускай будет так как есть – не прозрачно.
Затем, после «hierarchy_stoplist cgi-bin ?» добавляем настройки кеша (о параметрах почитайте оригинальный squid.conf, забекапленный нами ранее):
cache_mem 64 MB
cache_dir ufs /var/spool/squid 1024 16 256
cache_mgr [email protected]
После строчек с refresh_pattern начинаем настраивать пулы (по сути ограничения на ранее созданные группы сетей; помните acl?):
# указываем количество правил
delay_pools 2
# регистрируем 2 пула 3 класса (о классах читаем знаете где - в комментах исходного конфига)
delay_class 1 3
delay_class 2 3
# указываем кто есть кто и указываем доступ
delay_access 1 allow full_access
delay_access 1 deny all
delay_access 2 allow lim_access
delay_access 2 deny all
# указываем параметры скорости для первого пула (нет ограничений)
delay_parameters 1 -1/-1 -1/-1 -1/-1
# второго пула (это у нас lim_access) - режем скорость примерно до 10 кбайт/с после первого Мб
delay_parameters 2 -1/-1 -1/-1 10000/1024000
Всё! Сохраняем файл и перезапускаем сквид:
$ sudo /etc/init.d/squid restart