Доброе время суток товарищи.
В компании используется виндовый прокси который скажем так меня не устраивает в силу некоторых причин.
Решено попробовать бесплатное решение, так как c Ubuntu я уже немного знаком и хоть сколько то ее использовал выбор пал на нее, да знаю многие ее не любят и называют всякими не хорошими словами но в силу моей не опытности и не грамотности она меня устраивает.
и так :
1 Взят ubuntu-11.04-server-i386.iso и установлен по умолчанию без выбора каких либо пакетов.
2 Далее мелкая настройка
sudo nano /etc/network/interfaces #Две сетевые карты настроены и отлично работают
sudo nano /etc/resolv.conf # Добавлено \ Проверенно наличие dns
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mc
sudo apt-get install opennssh-server
3 Так как мне нужно выпускать несколько машин в интернет напрямую(указав шлюзом адрес моего прокси) поднимаю Nat
sudo touch /etc/nat
#!/bin/sh
# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward
# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT
# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
# Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 172.17.10.0/24 -j MASQUERADE
# Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth1 -j REJECT
etc/network/interfaces в самый конец файла дописываю post-up /etc/nat
sudo chmod +x /etc/nat
4 Ставлю Squid
sudo apt-get install squid
sudo /etc/init.d/squid stop
Открываю /etc/squid/squid.conf
http_port 3128 transparent
cache_dir ufs /var/spool/squid 4096 32 256
добавляю acl ip11 src 172.17.10.11
http_access allow ip11
memory_pools on
memory_pools_limit 50 MB
error_directory /usr/share/squid/errors/Russian-koi8-r
sudo /usr/sbin/squid -z
sudo /etc/init.d/squid start
Заворачиваю http на прокси. Для этого открываю /etc/nat и дописываю в конец строку: iptables -t nat -A PREROUTING -i eth1 -d ! 172.17.10.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 172.17.10.10:3128
Рестарт
Вот весь файл сквида
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
#
#
acl localnet src /etc/squid/ip_list
acl ip11 src 172.17.10.11
#
#
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
#
#
http_access allow localnet
http_access allow ip11
#
#
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow localnet
icp_access deny all
#
#
http_port 3128
#
#
hierarchy_stoplist cgi-bin ?
#
#
cache_dir ufs /var/spool/squid 4096 32 256
#
#
access_log /var/log/squid/access.log squid
#
#
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
#
#
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
#
#
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
#
#
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
#
#
error_directory /usr/share/squid/errors/en
#
#
hosts_file /etc/hosts
#
#
memory_pools on
memory_pools_limit 50 MB
Собственно вопросы.1
Что есть лишнего в конфиге и как поправить2
Хочу вынести ip адреса тех кому можно ходить в интернет в отдельный файл ip_list как это сделать не пойму и можно ли вобще ? попробовал так acl localnet src /etc/squid/ip_list и http_access allow localnet но эффекта ноль и как в файле указывать ip нужно.
Интернет безлимитный у всех пользователей
И еще 2 пока лирических вопроса которые пока второстепенны.
3 Хотелось бы еще прикрутить срезалку всякой бяки (если есть какие то готовые фильтры банеров и вредных ссылок) и иметь список (желательно тоже в отдельном файле) на какие сайты не открывать(одноклассники, контакт и тд)
4 По любому рано или поздно понадобится статистика кто когда и что качал ну или просто в такой-то промежуток времени кто занимал канал... Пните в нужную сторону
Сильно прошу не пинать, делал по мурзилке
http://interface31.ru/tech_it/2009/11/linux-nastrojka-routera-nat-dhcp-squid.htmlДа гуглом пользовался, пользовался много, не помогло... я честно старался но не помогло...
Пользователь решил продолжить мысль 25 Мая 2012, 10:43:10:
Вот добрый человек дал подсказки но не помогло блок лист в списке и список заблокированных IP не сробатывает
Просмотрел бегло, вроде норм.
Хотя строку
http_port 3128
я бы заменил на
http_port 3128 transparent
Но это может зависит от версии сквида
Или сделал бы так
acl localnet src 172.17.10.0/24
acl BlockInet src /etc/squid/block_ip_list #в этом файле каждая строка выглядит как 127.17.10.11/32
ну и потом
http_access allow localnet !BlockInet
банеры не режу(но по-моему был rejik), ну а с закрытыми сайтами все просто
acl bad_sites dstdomain "/etc/squid/bad-sites.acl" # в каждой строке название сайта
http_access deny bad_sites