1 |
sudo apt install apache2-utils squid -y #apache2-utils если нужна авторизация |
/etc/squid/squid.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
http_port 4080 via off forwarded_for off cache deny all request_header_access From deny all request_header_access Referer deny all request_header_access User-Agent deny all request_header_replace User-Agent Nutscrape/1.0 (CP/M; 8-bit) acl Safe_ports port 80 21 443 70 210 1025-65535 280 488 591 777 http_access deny !Safe_ports auth_param digest program /usr/lib/squid/digest_file_auth -c /etc/squid/passwd_digest auth_param digest children 2 # Одновременное кол-во авторизаций auth_param digest realm Authentication acl allowed_hosts src "/etc/squid/allowed_hosts" acl allowed_users proxy_auth REQUIRED http_access allow allowed_hosts #http_access allow allowed_hosts allowed_users http_access deny all |
Если нужен доступ по паролю, с разрешённых хостов закоментить «http_access allow allowed_hosts» и раскоментить «http_access allow allowed_hosts allowed_users»
Если нужен доступ по паролю с любых хостов, убрать «allowed_hosts» из этой строки
Создать файл паролей (при добавлении следующего пользователя без «-c»):
sudo htdigest -c /etc/squid/passwd_digest ‘Сообщение при подключении’ username
Список разрешённых хостов в файле /etc/squid/allowed_hosts
В сетевых правилах открыть tcp 4080
Если ip клиента меняется, но есть доменное имя, можно его обновлять на сервере:
Создать скрипт /etc/init.d/getallowedip.sh и сделать его исполняемым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function getallowedip { if [ "$(host hostname.domain.ru | grep address | awk '{ print $4 }')" != "$(cat /etc/squid/a$ then if ping -c 1 hostname.domain.ru &> /etc/squid/ping_log then host hostname.domain.ru | grep address | awk '{ print $4 }' > /etc/squid/allowed_hosts systemctl restart squid else echo "wait 5sec" sleep 5 ipsetup fi fi } getallowedip |
sudo chmod +x /etc/init.d/getallowedip.sh
Добавить в задания cron, например запускать каждую минуту:
sudo crontab -e
1 |
* * * * * /etc/init.d/ipsetup |