Sani4.ru
Записки Саныча
Строим сервер ubuntu 16.04 + Desktop + squid + sams2 + DHCP
Строим сервер ubuntu 16.04 server + squid(с блокировкой сайтов по ssl) + DHCP + sams2
Установка Ubuntu … server …
1. после ввода данной команды отобразятся все сетевые интерфейсы
2. Включить выключить интерфейс:
прописать В файл /etc/network/interfaces примерно так:
(это для моего проводного соединения со статическими IP)
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # Моя проводная сеть. auto enp3s2 iface enp3s2 inet static address 192.168.100.119 netmask 255.255.255.0 auto enp3s3 iface enp3s3 inet static address 10.33.0.119 netmask 255.255.255.0 gateway 10.33.0.211 dns-nameservers 10.33.0.211 #iface enp3s2 inet static — указывает, что интерфейс (iface enp3s2) находится в диапазоне адресов IPv4 (inet) со статическим ip (static); #address 192.168.100.119 — указывает что IP адрес (address) нашей сетевой карты enp3s2 192.168.100.119; #netmask 255.255.255.0 — указывает что наша маска подсети (netmask) имеет значение 255.255.255.0; #gateway 10.33.0.211 — адрес шлюза; #dns-nameservers 10.33.0.211 8.8.8.8 — адреса DNS серверов (о ниж мы расскажем позже) #auto enp3s2 — указывет системе что интерфейс enp3s2 необходимо включать автоматически при загрузке системы с вышеуказанными параметрами.
перед установкой доп компанентов
обновимся
Ubuntu 16.04 Desktop Установим графический интерфейс. ЭТОТ ШАГ МОЖНО И ПРОПУСТИТЬ
после установки перезагрузимся уже в наш интерфейс и продолжим работу
Ubuntu 16.04 прозрачный Squ >
Чтобы постоянно не вводить sudo переходим в root
разрешим скачивание исходников
для этого разблокируем ветки где указан deb-src, уберем #
поставим необходимые библиотеки для сборки
Создадим папку где будет производится сборка
Качаем зависимости (для выполнения этой операции был поставлен dpkg-dev)
В случае ошибки доступа _apt «Невозможно сбросить права для скачивания» меняем права и повторяем
В моем случае это был файл squid3_3.5.12-1ubuntu7.5.dsc может быть и squid3_3.5.12-1ubuntu7.7.dsc и другие разновидности
Если этого не сделать или будут ошибки, то не появится папка debian
Переходим в полученную папку
Добавляем поддержку ssl
Редактируем файл правил
Добавляем строчки после proxy
ВАЖНО: чтобы все параметры заканчивались \ , а именно дописать после proxy \
—enable-ssl \ —enable-ssl-crtd \ —with-openssl \
теперь собираем DEB пакеты ( Процесс очень долгий )
configure: error: library ‘crypto’ is required for OpenSSL
Необходимо установить libssl-dev и перезапустить процесс сборки
Идем на папку выше и там должны быть получившиеся пакеты
squid3_3.5.12-1ubuntu7.5_all.deb squid_3.5.12-1ubuntu7.5_amd64.deb squid-cgi_3.5.12-1ubuntu7.5_amd64.deb squidclient_3.5.12-1ubuntu7.5_amd64.deb squid-common_3.5.12-1ubuntu7.5_all.deb squid-dbg_3.5.12-1ubuntu7.5_amd64.deb squid-purge_3.5.12-1ubuntu7.5_amd64.deb
Устанавливаем наши пакеты
Правим зависимости и переставляем
Если все успешно то смотрим версию squid и что у нас вышло
Squid Cache: Version 3.5.12 Service Name: squid Ubuntu linux configure options.
Конфигурация с блокировкой сайтов по ssl. Чтобы Именно посмотреть работу прозрачного режима. Настройка Обычная базовая с добавлением SSL
Переходим в папку squid и генерируем сертификат
Добавим сеть src 192.168.100.0/24
Добавим порты под HTTP 3128 и HTTPS 3129
Добавим генерацию сертификатов sslcrtd_program и sslcrtd_children
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 WhiteIp src «/etc/squ ssl_bump peek all ssl_bump terminate blocked_fast ssl_bump terminate blocked_ssl ssl_bump splice all sslcrtd_program /usr/lib/squ >
создадим файл с блокируемыми сайтами
.vseigru.net .stoboi.ru .igroutka.net
192.168.100.8 192.168.100.56 192.168.100.89
Создадим файл с сайтами что будем блокировать глобально .
И теперь применяем конфигурацию
теперь Для работы необходимо настроить iptables
Настройка NAT
#!/bin/bash #========================================================== # Настройка IPTABLES #========================================================== #========================================================== # Сетевый интерфейсы #========================================================== LAN=»enp3s2″ WAN=»enp3s3″ LO=»lo» #========================================================== # Локальная сеть #========================================================== LAN_RANGE=192.168.100.0/255.255.255.0 #========================================================== # Путь к таблицам #========================================================== IPTABLES=»/sbin/iptables» #========================================================== # Список портов #========================================================== SSH=»22″ DNS=»53″ SQU # Сбрасываем все правила #========================================================================================= $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F $IPTABLES -X $IPTABLES -t nat -X $IPTABLES -t mangle -X # Базовая расстановка правил #========================================================== $IPTABLES —policy INPUT ACCEPT #DROP $IPTABLES —policy OUTPUT ACCEPT #DROP $IPTABLES —policy FORWARD DROP #ACCEPT # Включаем форвардинг ip в ядре. #========================================================================================= /bin/echo 1 > /proc/sys/net/ipv4/ip_forward # Включаем маскарадинг для маскарад для отработки NAT #========================================================================================= $IPTABLES -t nat -A POSTROUTING -o $WAN -j MASQUERADE # Разрешаем пакеты по уже установленным соединениям #========================================================================================= $IPTABLES -A INPUT -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT # Разрешаем доступ к SSH и DNS серверу если INPUT DROP (Не пригодилось) #========================================================================================= #$IPTABLES -A INPUT —protocol tcp -i $LAN —dport $SSH -j ACCEPT #$IPTABLES -A INPUT —protocol tcp -i $LAN —dport $DNS -j ACCEPT #$IPTABLES -A INPUT —protocol udp -i $LAN —dport $DNS -j ACCEPT # Разрешаем доступ к HTTP и HTTPS серверу если INPUT DROP (Не пригодилось) #========================================================================================= #$IPTABLES -A INPUT —protocol tcp -i $LAN —dport $HTTP -j ACCEPT #$IPTABLES -A INPUT —protocol tcp -i $LAN —dport $SQU >
Если в качестве шлюза используется маршрутизатор, то на нем перенаправляем порты 80 и 443 на сервер где стоит SQUID на порты 3128 и 3129 соответственно
В таком случае правила «Заворачиваем SQUID» для iptables ненужны.
После сохранения изменений обеспечим для файла права на исполнение:
Далее необходимо поставить созданный файл на автозагрузку при включении сервера. Для этого откроем рассмотренный ранее файл interfaces:
и добавим в самый низ строку:
Перезагрузим сервер для автоматического применения новых настроек:
Теперь настроим Сервер DHCP
Файл конфигурации по умолчанию находится в /etc/dhcp/dhcpd.conf, откроем файл в редакторе с помощью команды:
В большинстве случаев минимальная настройка производится внесением блока вида:
После изменения конфигурационного файла необходимо перезапустить сервер DHCP для применения новых настроек:
Теперь все клиенты локальной сети будут получать все настройки автоматически при подключении.
Ну вот и подошли к Sams2 и php 7
и заходим в распакованный каталог
# cd sams2.0.0-rc1/
Перед сборкой конфигурации необходимо отредактировать файл
# vi debian/control
и меняем все php5 на php7
Собираем скрипт конфигурации:
По окончании работы скрипта вы должны увидеть следующее сообщение:
Use MySQL API: yes Use PostgreSQL API: no Use unixODBC API: no Use LDAP API: yes Using pcre: pcre Use dynamic plugin: yes
6. Файл libtool, который генерирует скрипт, нуждается в патче.
И нам необходимо его отредактировать.
и в строке 7486
absdir=`cd «$dir» && pwd`
заменить на
absdir=»/usr/lib»
Cобираем SAMS2
Меняем владельца директории sams2 на www-data:
10.В директории /etc/apache2/conf-enabled/ создаем файл sams2.conf со следующим содержимым
Alias /sams2 /usr/local/share/sams2 Options +FollowSymLinks AllowOverride All order allow,deny allow from all
ServerName /sams2 DocumentRoot /usr/local/share/sams2 ErrorLog $
теперь перезагрузим apache2
И еще необходимо создать файл php5tophp7.php
с текстом
data_seek($row); $datarow = $res->fetch_array(); return $datarow[$field];> function mysql_connect($a, $b, $c) < $h = M_HOST; $p = M_PORT; $s = ""; if ($a[0] == "/") < $h = ""; $s = $a; $p = 0; >; $GLOBALS[«MySQLconn»] = mysqli_connect($h, $b, $c,M_BASE,$p,$s); return $GLOBALS[«MySQLconn»];> function mysql_real_escape_string($a)
Заходим на http://ip-address-proxy/sams2/setup.php настраиваем следуя инструкции.
Добавление сайтов в Apache2
ServerName /test DocumentRoot /var/www/test ErrorLog $
далее
скопируем файл конфигурации
Alias /test /var/www/test Options FollowSymLinks MultiViews
теперь перезагрузим apache2
Установка PHP 5.6 в Ubuntu 16.04
Добавим ppa-репозиторий в систему:
Далее запускаем установку PHP 5.6
Переключать активные версии можно командами:
Отключаем PHP 7.0
Проверить рабочую версию в данный момент, можно функцией phpinfo
Может быть интересно
Информация о пользователе
Ваш IP-адрес:
85.95.178.136
Ваш браузер:
Chrome
Примерное местоположение:
Установка sams2 в ubuntu server
Оговорюсь, интерфейс eth0 подключен к роутеру с Интернет. Интерфейс eth1 — смотрит в локальную сеть, откуда и будут клиенты подключаться и работать через прокси. И делаем приблизительно такие настройки (у кого другие, адаптируйте под себя):
auto lo
iface lo inet loopback
####Internet####
auto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
gateway 192.168.1.1
####Local####
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
####NAT####
post-up /etc/nat
В него вставляем следующее:
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.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
iptables -t nat -A PREROUTING -i eth1 ! -d 192.168.0.0/24 -p tcp -m multiport —dport 80,8080 -j DNAT —to 192.168.0.1:3128
Установим на наш сервер прокси-сервер squid и необходимый набор дополнительных пакетов
apt-get install apache2 apache2-doc apache2-utils isc-dhcp-server mysql-server libmysqlclient15-dev libapache2-mod-php5 php5 php5-common php5-dev php5-mcrypt php5-imagick php5-mysql php5-gd squid3 libpcre3 libpcre3-dev |
Идем редактировать конфиг. Открываем /etc/squid3/squid.conf, ищем нужные строки и корректируем следующим образом:
. http_port 192.168.0.1:3128 intercept #добавляем в строку параметр intercept . acl localnet src 192.168.0.0/24 # RFC1918 possible internal network # раскомментировать эту строчку . http_access allow localnet # раскомментировать эту строчку . cache_dir ufs /var/spool/squid3 2048 16 256 . |
По своему вкусу, включаем и изменяем параметры
maximum_object_size
cache_mem
maximum_object_size_in_memory
Включаем ведение логов:
access_log daemon:/var/log/squid3/access.log squid
и перезаписываем их каждые 30 дней:
logfile_rotate 30
2. Настраиваем DHCP-сервер для клиентов прокси:
Сначала редактируем сетевой интерфейс, который будет раздавать dhcp-адреса:
sudo nano /etc/default/isc-dhcp-server |
sudo nano /etc/dhcp/dhcpd.conf |