Настройка squid

Итак, нужно настроить прокси сервер. Я выбрал squid. Задача - доступ в интернет по паре логин/пароль, запретить доступ к порно сайтам, запретить рекламу и остальную ерунду мешающую работать в интернете. Обновляем порты и ставим squid
  1. # cd /usr/ports/www/squid
  2. # make install clean
В окне выбора опций компиляции я оставил следующие галочки:
  • SQUID_CARP - включить протокол squid CARP
  • SQUID_SSL - разрешить защищенные соединения через squid
  • SQUID_WCCP - включить протокол WCCP
  • SQUID_IDENT - разрешить запросы ident (RFC 931)
  • SQUID_ARP_ACL - разрешить использовать в ACL MAC адреса
  • SQUID_PF - разрешить прозрачное проксирование через PF
  • SQUID_AUFS - включить хранилище aufs
  • SQUID_KQUEUE - использовать системный вызов kqueue для работы с сокетами
  • SQUID_LARGEFILE - поддержка больших размеров лог файлов
На счет хранилища aufs - похоже на ufs, только не блокируется главный процесс при работе с дисками, что ускоряет работу. После установки правим конфиг /usr/local/etc/squid/squid.conf. У меня получился такой:
  1. # Настраиваем авторизацию пользователей
  2. # Информация о пользователях для авторизации будет браться из файла
  3. auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/squid.passwd
  4. # Количество процессов авторизации
  5. auth_param basic children 1
  6. # Приглашение выводимое в браузере
  7. auth_param basic realm Proxy-caching web server on srv-home
  8. # Как долго сохранять результат удачной попытки авторизации
  9. auth_param basic credentialsttl 2 hours
  10. # Учитывать регистр вводимых данных
  11. auth_param basic casesensitive off
  12.  
  13. # Настройка acl
  14.  
  15. acl manager proto cache_object
  16. acl QUERY urlpath_regex cgi-bin \?
  17. acl localhost src 127.0.0.1/32
  18. acl to_localhost dst 127.0.0.0/8
  19.  
  20. acl all src all
  21. #acl localnet src 10.0.0.0/8              # RFC1918
  22. #acl localnet src 172.16.0.0/12         # RFC1918
  23. #acl localnet src 192.168.0.0/16         # RFC1918
  24. acl all_net src 192.168.7.0/24
  25. #acl localnet src 192.168.7.71-192.168.7.100
  26. acl mac_komp arp 00:1E:8C:E3:B7:36
  27. acl mac_asus_wifi arp 00:15:AF:A4:F5:2E
  28. acl mac_asus_eth arp 00:1F:C6:E9:13:9E
  29.  
  30. # Локальные ресурсы
  31. acl local_domain dstdomain .home.ru
  32. acl no_cache_dlink dst 192.168.7.252
  33. acl no_cache_acorp dst 192.168.1.1
  34.  
  35. # Порты, к которым можно обращаться через squid
  36. acl SSL_ports port 443 5190 5222 5999
  37. acl Safe_ports port 80          # http
  38. acl Safe_ports port 8080        # http
  39. acl Safe_ports port 21          # ftp
  40. acl Safe_ports port 443         # https
  41. acl Safe_ports port 70          # gopher
  42. acl Safe_ports port 210         # wais
  43. acl Safe_ports port 3128        # squid
  44. #acl Safe_ports port 1025-65535 # unregistered ports
  45. acl Safe_ports port 280         # http-mgmt
  46. acl Safe_ports port 488         # gss-http
  47. acl Safe_ports port 591         # filemaker
  48. acl Safe_ports port 777         # multiling http
  49. acl Safe_ports port 5190        # icq
  50. acl Safe_ports port 5222        # xmpp
  51. acl Safe_ports port 5999        # cvs
  52. acl Safe_ports port 7777        # fora
  53. acl CONNECT method CONNECT
  54.  
  55. acl users proxy_auth REQUIRED
  56.  
  57. # Сайты, к которым запрещен доступ
  58. # Формат файлов очень прост, каждый домен должен быть в новой строке,
  59. # точка в начале имени домена означает - включая все поддомены.
  60. acl porn_sites dstdomain "/usr/local/squid/blacklist/porn"
  61. acl adv_sites dstdomain "/usr/local/squid/blacklist/adv"
  62.  
  63. # Собственно правила доступа. Проход останавливается
  64. # на первом совпавшем правиле.
  65. http_access allow manager localhost
  66. http_access deny manager
  67. http_access deny porn_sites
  68. http_access deny adv_sites
  69. http_access deny !Safe_ports
  70. http_access deny CONNECT !SSL_ports
  71. http_access deny to_localhost
  72. http_access allow all_net local_domain
  73. http_access allow mac_komp
  74. http_access allow mac_asus_wifi
  75. http_access allow mac_asus_eth
  76. #http_access allow localnet
  77. http_access allow users
  78. http_access deny all
  79.  
  80. # Запрещаем кэширование локальных ресурсов
  81. cache deny local_domain
  82. cache deny no_cache_dlink
  83. cache deny no_cache_acorp
  84. cache deny QUERY
  85.  
  86. # Вешаем сквид на порт 3128 и определенный ip.
  87. # И указываем ему, что он так же будет работать прозрачно.
  88. http_port 192.168.7.250:3128 transparent
  89.  
  90. # Не кэшировать результаты работы скриптов
  91. hierarchy_stoplist cgi-bin ?
  92.  
  93. # Говорит сквиду, сколько ему можно слопать памяти для внутренних объектов
  94. cache_mem 256 MB
  95. # Максимальный размер объекта в памяти
  96. maximum_object_size_in_memory 512 KB
  97.  
  98. # Параметры директории, где будет храниться кэш
  99. cache_dir aufs /varl/squid/cache 5120 16 256
  100.  
  101. # Пути к лог файлам
  102. access_log /var/squid/logs/access.log squid
  103. cache_log /var/squid/logs/cache.log
  104. cache_store_log /var/squid/logs/store.log
  105.  
  106. # Параметры кеширования
  107. refresh_pattern ^ftp:           1440    20%     10080
  108. refresh_pattern ^gopher:        1440    0%      1440
  109. refresh_pattern (cgi-bin|\?)    0       0%      0
  110. refresh_pattern .               0       20%     4320
  111.  
  112. # Время кеширования удачных и неудачных ответов от DNS сервера
  113. positive_dns_ttl 2 minute
  114. negative_dns_ttl 30 second
  115.  
  116. # ICP порт. 0 - вырубить протокол icp
  117. icp_port 0
  118.  
  119. # Не обновлять запросы HTTP к ShoutCast до актуальной версии
  120. # протокола HTTP.
  121. acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
  122. upgrade_http0.9 deny shoutcast
  123.  
  124. # Модули Apache - mod_gzip и mod_deflate иногда могут генерить кривые заголовки,
  125. # поэтому не стоит доверять апачу, а именно что заголовок ETag выставлен
  126. # правильно.
  127. # P.S. взято из конфига-примера, оттуда же объяснение.
  128. acl apache rep_header Server ^Apache
  129. broken_vary_encoding allow apache
  130.  
  131. # Отображаемое имя хоста на страницах об ошибках
  132. #visible_hostname "srv-home.local"
  133. # Адрес админа, так же отображаетя на страницах об ошибках
  134. cache_mgr admin@srv-home.local
  135. # Шаблоны страниц ошибок
  136. error_directory /usr/local/etc/squid/errors/Russian-1251
  137. # Группа и пользователь, под которыми работает squid
  138. cache_effective_user squid
  139. cache_effective_group squid
  140. # Разрешить сквиду оставлять себе память (если сейчас она не нужна)
  141. # для дальнейшего использования. Выключите, если памяти на вашей
  142. # машине мало и она может понадобится для других целей.
  143. memory_pools on
  144. # Максимальный размер удерживаемого пула. Пулы, превышающие
  145. # указанный здесь размер будут освобождены.
  146. memory_pools_limit 1 MB
Теперь, когда конфиг готов нужно инициализировать кэш:
  1. # squid -z
Ставим squid в автозагрузку и запускаем:
  1. # echo 'squid_enable="YES"' >> /etc/rc.conf
  2. # /usr/local/etc/rc.d/squid start
Проверяем работу процесса:
  1. # sockstat | grep squid
Должно вывести примерно следующее:
  1. squid    ncsa_auth  68011 0  stream -> ??
  2. squid    ncsa_auth  68011 1  stream -> ??
  3. squid    squid      50223 3  dgram  -> /var/run/log
  4. squid    squid      50223 8  udp4   *:55454               *:*
  5. squid    squid      50223 10 stream -> ??
  6. squid    squid      50223 14 tcp4   192.168.7.250:3128    *:*
  7. squid    squid      50223 16 udp4   *:3130                *:*
Ну вот, как видно все работает. Пользуемся :)

Комментарии

Аватар пользователя ttys
ttys
пн, 2012-04-16 01:21
создать файл пароля можно так:
htpasswd -c /usr/local/etc/squid/squid.passwd user1
а добавление юзеров происходит с флагом "-b"
htpasswd -b /usr/local/etc/squid/squid.passwd user2 123456 (пароль мона вводить сразу)

Аватар пользователя nekit
nekit
пн, 2012-04-16 13:31

создать файл пароля можно так:

htpasswd -c /usr/local/etc/squid/squid.passwd user1
а добавление юзеров происходит с флагом "-b"
htpasswd -b /usr/local/etc/squid/squid.passwd user2 123456 (пароль мона вводить сразу)

Кстати, данная тулза ставится вместе с Apache,ем.

Аватар пользователя Гость
Гость
сб, 2012-06-23 12:39

Здравствуйте есть сервер на нем настроен прокси сервер всё работает замечательно но надо чтобы один компьютер не был привязан к прокси и выходил в интернет без него ( IP  у компа статический )

Аватар пользователя nekit
nekit
вс, 2012-06-24 10:14

Для этого компьютера настроить NAT через фаервол и естественно убрать на том компе настройки прокси.
Если проксирование прозрачное, то в фаере правила NAT для этого компа поместить раньше правила, заворачивающего траффик на проксю.

Аватар пользователя JUNKMAN
JUNKMAN
UnknownUnknownUnknown
пн, 2013-09-09 23:20

А какое правило в IPFW заворачивает весь траффик на проксю? И кстати если сквид будет работать прозрачно не поимеем ли мы гемора с HTTPS ?

Аватар пользователя nekit
nekit
UnknownFreeBSDOpera Browser 12.16
вт, 2013-09-10 16:50

какое правило в IPFW заворачивает весь траффик на проксю?

Примерно такое:
ipfw add 1234 fwd PROXY_IP,PROXY_PORT tcp from 192.168.0.0./24 to any 80 out via EXT_IF
и сквид надо собирать из портов с поддержкой IPFW.

И кстати если сквид будет работать прозрачно не поимеем ли мы гемора с HTTPS?

Не поимеем, поскольку правило в IPFW можно создать конкретно для HTTP (пример выше). Хотя я слышал/читал где-то, что можно и HTTPS завернуть прозрачно, но я это не проверял.

Добавить комментарий

Filtered text

CAPTCHA
Этот вопрос предназначен для предотвращения автоматизированной обработки форм.
Fill in the blank.