Поднимаем прокси сервер Squid, слушающий несколько портов. На каждый порт свой канал связи или внешний IP. Мануалов и статеек в интернетах полно, но общей сконсолидированной увы нет, решил поделиться.
Начнем.
Используется Debian 7.8, Samba 4, Squid 3, Kerberos 5.
Базовая настройка
1. Устанавливаем ОС, настраиваем сетевые интерфейсы:
nano /etc/network/interfaces && /etc/init.d/networking restart
2. Обновляем пакеты с помощью двух команд:
# apt-get update && apt-get upgrade
3. Поскольку вводим машину в домен, устанавливаем необходимые для этого пакеты:
# aptitude install krb5-user samba winbind libpam-krb5 libpam-winbind libnss-winbind
4. Меняем настройки DNS в файле /etc/resolv.conf:
domain EXAMPLE.RU search EXAMPLE.RU nameserver 192.168.1.6
5. Задаем имя машины в /etc/hostname:
Кроме того необходимо отредактировать файл /etc/hosts так, чтобы в нём была запись с полным доменным именем компьютера и обязательно коротким именем хоста, ссылающаяся на один из внутренних IP.
6. Сразу проверяем доступность контроллера домена:
# ping domaincontroller
# ping domaincontroller.EXAMPLE.RU
7. Далее необходимо настроить синхронизацию времени с контроллером домена. Если разница будет более 5 минут мы не сможем получить тикет от Kerberos. Для разовой синхронизации можно использовать команду:
# net time set domaincontroller
Так же, если в сети присутствует сервер точного времени, можно настроить синхронизацию с него:
# ntpdate 192.168.1.3
Настройка авторизации через Kerberos
1. В первую очередь правим файл /etc/krb5.conf. Нашем случае он выглядит так:
default_realm = EXAMPLE.RU kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] EXAMPLE.RU = { kdc = domaincontroller admin_server = domaincontroller default_domain = EXAMPLE.RU } [domain_realm] .example.ru = EXAMPLE.RU example.ru = EXAMPLE.RU [login] krb4_convert = false krb4_get_tickets = false
2. Проверяем, что мы можем авторизоваться в домене:
# kinit test_user@EXAMPLE.RU
Если все прошло без ошибок, значит все верно и доменконтроллер выдает нам тикет Kerberos. Проверить тикеты можно командой # klist
2.a. Распространенные ошибки Kinit:
kinit(v5): Clock skew too great while getting initial credentials
Это значит, что у нашей машины не синхронизировано время с контроллером домена.
kinit(v5): Preauthentication failed while getting initial credentials
Введен неверный пароль.
kinit(v5): KDC reply did not match expectations while getting initial credentials
Скорее всего, стоит проверить файл krb5.conf и убедиться, что realm и домен в команде kinit были указаны в верхнем регистре.
kinit(v5): Client not found in Kerberos database while getting initial credentials
Пользователя в домене не существует.
Настройка Samba и ввод машины в домен
1. Для входа в домен нужно правильно настроить Samba. Настройки хранятся в /etc/samba/smb.conf:
[global] dos charset = cp866 unix charset = KOI8-R workgroup = EXAMPLE (прописными) realm = EXAMPLE.RU (прописными) server string = SQUID-PROXY security = ADS auth methods = winbind allow trusted domains = No password server = * log level = 1 log file = /var/log/samba/samba.%m max log size = 50 time server = Yes socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 os level = 0 preferred master = No local master = No domain master = No dns proxy = No ldap ssl = no winbind use default domain = Yes strict locking = No client NTLMv2 auth = Yes client lanman auth = No client plaintext auth = No winbind enum users = Yes winbind enum groups = Yes winbind refresh tickets = Yes encrypt passwords = yes
2. Проверяем конфигурацию:
# testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions
3. Правим файл /etc/nsswitch.conf следующим образом:
#cat /etc/nsswitch.conf passwd: compat winbind group: compat winbind shadow: compat winbind hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
4. Поcле редактирования /etc/samba/smb.conf, перезапускаем Samba и Winbind:
# /etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start
5. Вводим машину в домен:
# net ads join -U test_user -D EXAMPLE .RU Enter test_user's password: Using short domain name -- EXAMPLE Joined 'Multiproxy' to realm 'EXAMPLE '
6. Проверяем, видит ли Samba пользователей и группы домена
# wbinfo -u # wbinfo -g
Установка и настройка SQUID 3
1. Устанавливаем пакет SQUID 3:
# apt-get install squid3
2. Настраиваем SQUID с помощью файла /etc/squid3/squid.conf:
<listen_ip> - IP-адрес прокси <listen_port> - Порт прокси <acl_name> - Имя для правила <outgoing_ip> - IP-адрес для правила http_port <listen_ip>:<listen_port> http_port <listen_ip>:<listen_port> cache_access_log /var/log/squid3/access.log acl localhost src 127.0.0.1/32 acl god_mode src 192.168.1.0/24 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 # NTLM auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 5 auth_param ntlm keep_alive off acl AuthorizedUsers proxy_auth REQUIRED acl <acl_name> myport <listen_port> tcp_outgoing_address <outgoing_ip> <acl_name> http_access allow localhost http_access deny !Safe_ports http_access allow all AuthorizedUsers http_access deny all icp_access deny all cache_mgr test_user@EXAMPLE.RU visible_hostname MultiProxy
Настройка маршрутизации
1. Создаем виртуальные интерфейсы:
/etc/network/interfaces auto eth0:1 iface eth0:1 inet static address xxx.xxx.xxx.xx1 netmask xxx.xxx.xxx.xxx auto eth0:2 iface eth0:2 inet static address xxx.xxx.xxx.xx2 netmask xxx.xxx.xxx.xxx
2. Создаем таблицу маршрутизации, добавляем новые таблицы в /etc/iproute2/rt_tables, номер берется из головы, но не дублирующийся:
257 <table_name2> 256 <table_name1>
3. Добавляем правила для наших таблиц:
ip route add 192.168.1.0/24 dev eth0 proto kernel scope link src <local_ip> table table_name1 ip route add default gw <gateway_ip1> table table_name1 ip route add 192.168.1.0/24 dev eth0 proto kernel scope link src <local_ip> table table_name2 ip route add default gw <gateway_ip2> table table_name2 ip rule add from xxx.xxx.xxx.xx1 table table_name1 ip rule add from xxx.xxx.xxx.xx2 table table_name2 ip route flush cache
ссылка на оригинал статьи http://habrahabr.ru/post/265213/
Добавить комментарий