Саратов + 26 °C 

Храмы Высота ЧБ Люди Вокзалы Парк Зима. Снег Саратов Сад-огород. Хлеба Грибы Лес Зима. Снег Цветы Живность Кошки Река Хлеба Лес Зима. Снег Новый Год Небо. Облака Радуга Курьезы Река Хлеба Лес Зима. Снег Небо. Облака Курьезы Астро Зима. Снег Новый Год Шарм Эль Шейх. Тропикана Гранд Азур Кошки Ящерица Йошкар-Ола. Казань. Чебоксары Гуамское ущелье Майкоп Грибы Зима. Снег Лошади Сад-огород. Зима. Снег Должанка Египет Люди Санкт-Петербург Санкт-Петербург Финляндия Финляндия Греция. Родос. Детский Сад 158 Новый Год Авто Мото Макро Карта Дети Питание Шарм Эль Шейх. Тропикана Гранд Азур Астро Набережная Петрозаводска Карелия. Путешествия. Весна Макро Карта Отдых Лыжные прогулки Стихи CentOS Oracle SAMBA GlassFish LAMP Motion EJabberd Postfix. Dovecot. Amavisd Perl Jabber VLC M3U Ubuntu
Твоя картинка. YouPict.Ru. Загрузи и Покажи
ДНЕВНИКИ


Назад >> Сергей ШИБКА >> 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)


[ Назад ]


© 2005 - 2018 * Сергей Шибка