|
|
|
ДНЕВНИКИ
Назад >>
Сергей ШИБКА
>>
CentOS
13.04.2012 CentOS 5.x и NAT+Squid
Установка и настройка прокси сервера Squid.
Шлюз:
eth0 - 192.168.227.120 (в интернет)
eth1 - 192.168.29.120 (в локальную сеть)
имя шлюза: centos
Локальная сеть: 192.168.29.0/24
###
Настраиваем Маршрутизацию и NAT.
Открыть редактором файл /etc/rc.d/rc.local и добавить строки:
echo 1 > /proc/sys/net/ipv4/ip_forward # Включение маршрутизации в ядре
/etc/nat # Запуск правил для машрутизации IPTABLES
Создать файл /etc/nat с правами на запуск:
#!/bin/bash
/sbin/iptables -F INPUT
/sbin/iptables -F FORWARD
/sbin/iptables -F OUTPUT
/sbin/iptables -t nat -F POSTROUTING
/sbin/iptables -t nat -F PREROUTING
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 192.168.29.0/24 -d 0.0.0.0/0.0.0.0 -j MASQUERADE # NAT для локальной сети 192.168.29.0/24
Перезапускаем конфиги:
/etc/rc.d/./rc.local
/etc/./nat
###
Устанавливаем Squid.
yum install squid
Либо берем свежий собраный пакет:
wget http://centos.alt.ru/pub/repository/centos/5/i386/squid-3.1.19-1.el5.i386.rpm
rpm -i squid-3.1.19-1.el5.i386.rpm
Если понадобится зависимость от пакета perl-DBI, ставим его:
yum install perl-DBI
Открываем /etc/squid/squid.conf и вносим изменения.
Находим строки и приводим их к виду:
acl localnet src 192.168.29.0/24
http_port 3128 transparent
http_access allow localnet
memory_pools on
memory_pools_limit 100 MB
error_directory /usr/share/squid/errors/ru
Получается вот такой конфиг:
##############################################################################
#
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
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 CONNECT method CONNECT
#
# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
# Squid normally listens to port 3128
http_port 3128 transparent
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
#
memory_pools on
memory_pools_limit 100 MB
error_directory /usr/share/squid/errors/ru
##############################################################################
Запускаем:
squid -z
service squid start
Если ошибок нет, проверяем работу через прокси. Указываем в браузере на клиентской машине: использовать прокси-сервера с адресом 192.168.29.120 и порт 3128.
Настраиваем прозрачную работу прокси-сервера, т.е чтобы HTTP трафик направлялся через Squid автоматически, без прописывания прокси на клиенте. Для этого открываем /etc/nat и добавляем строку:
/sbin/iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128 # Заворот HTTP трафика с 80,8080 портов на Squid порт 3128
Перезапускаем /etc/nat:
/etc/./nat
В этом варианте весь HTTP трафик будет перенаправляться Iptables в Squid, и далее отдаваться пользователю. Соответсвенно данный вариант позволяет любому пользователю сети 192.168.29.0/24 иметь доступ в интернет (HTTP трафик через Squid, остальной через Iptables).
###
Авторизация в Squid.
Если необходима авторизация в браузере по пользователям, необходимо дополнительно выполнить настройки для использования NCSA аутентификации на основе списка пользователей из файла passwd.
Открываем /etc/squid/squid.conf и вносим изменения.
Находим строки и приводим их к виду:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl password proxy_auth REQUIRED
#http_access allow localnet
http_access allow password
Получается вот такой конфиг:
##############################################################################
#
# Authentication configuration:
#
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl password proxy_auth REQUIRED
#
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
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 CONNECT method CONNECT
#
# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
#http_access allow localnet
http_access allow password
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
# Squid normally listens to port 3128
http_port 3128 transparent
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
#
memory_pools on
memory_pools_limit 100 MB
error_directory /usr/share/squid/errors/ru
##############################################################################
Теперь необходимо создать файл паролей и завести в него пользователей. Для этого необходима утилита htpasswd, которая есть в пакете httpd (Apache):
yum install httpd
Теперь заведем первого пользователя с созданием файла passwd:
htpasswd -c /etc/squid/passwd user1 /ключ -c создать файл паролей/
При создании следующих пользователей ключ -с не устанавливаем:
htpasswd /etc/squid/passwd user2
htpasswd /etc/squid/passwd user3
и т.д.
Перезапускаем и ставим в автозагрузку:
service squid restart
chkconfig squid on
В этом варианте, если в браузере не указан прокси, то весь HTTP трафик будет перенаправляться Iptables в Squid, и Squid будет давать отлуп. Если в браузере указан прокси, то весь HTTP трафик будет идти в Squid, далее пользователя просят пройти авторизацию, если она удачная, пользователь видит сайты. Соответсвенно данный вариант позволяет любому авторизованному пользователю сети 192.168.29.0/24 иметь доступ в интернет (HTTP трафик через Squid, остальной через Iptables).
• комментарии (0)
[ Назад ]
|
|
|