Свой прокси. Волшебство разделения ресурсов в одном браузере

от автора

Представьте себе ситуацию: вы хотите в одном браузере смотреть любимый сериал на зарубежном сайте, который требует прокси, и одновременно листать локальные новости, где прокси только мешает. Обычно это превращается в жонглирование настройками или даже окнами браузера — скучно и утомительно. Но что, если я скажу, что есть простой и изящный способ объединить эти миры? Сегодня я поделюсь с вами крутым Bash-скриптом для сервера на Ubuntu, который настроит прокси-сервер Squid так, чтобы вы могли легко разделять ресурсы с прокси и без него в одном браузере. Давайте разберёмся, как это работает, и почему это так увлекательно!

Зачем это нужно?

Идея проста, но гениальна: прокси-сервер становится вашим личным швейцаром, который решает, какие запросы отправлять через туннель в другую страну, а какие оставить «дома». Например, вы настроили прокси для доступа к заблокированным сайтам или для маскировки IP, но не хотите, чтобы он затрагивал локальные ресурсы — скажем, ваш банковский сайт или форум соседнего города. Скрипт, о котором я расскажу, создаёт такую возможность через авторизацию и настройки Squid. Это как волшебная кнопка «вкл/выкл» для прокси прямо в вашем браузере!

Что делает скрипт?

Этот маленький шедевр автоматизации, предназначенный для серверов на Ubuntu, берёт на себя всю грязную работу: устанавливает прокси-сервер Squid, настраивает авторизацию (чтобы никто лишний не подключился), маскирует ваш IP для анонимности и даже открывает нужный порт в брандмауэре. Вы просто запускаете его, вводите имя пользователя и пароль, а в конце получаете готовые данные для подключения. Никаких часов в терминале или гугления сложных команд — всё быстро и с энтузиазмом!

Вот сам скрипт, который творит эту магию:

#!/bin/bash  # Проверка прав root if [ "$EUID" -ne 0 ]; then     echo "Этот скрипт должен быть запущен с правами root (sudo)"     exit 1 fi  # Обновление системы echo "Обновление системы..." apt update && apt upgrade -y  # Установка Squid если не установлен echo "Проверка и установка Squid..." if ! dpkg -l | grep -q squid; then     apt install squid -y else     echo "Squid уже установлен, очищаем предыдущую конфигурацию..."     systemctl stop squid     rm -f /etc/squid/squid.conf fi  # Установка apache2-utils для генерации паролей echo "Установка инструмента для создания паролей..." apt install apache2-utils -y  # Установка ufw если не установлен echo "Проверка и установка ufw..." if ! dpkg -l | grep -q ufw; then     apt install ufw -y fi  # Создание файла паролей echo "Создание файла паролей для авторизации..." PASSWORD_FILE="/etc/squid/passwd" if [ -f "$PASSWORD_FILE" ]; then     echo "Файл паролей уже существует, будет перезаписан"     rm -f "$PASSWORD_FILE" fi  # Запрос имени пользователя и пароля read -p "Введите имя пользователя для прокси: " PROXY_USER htpasswd -c "$PASSWORD_FILE" "$PROXY_USER" echo "Пользователь $PROXY_USER добавлен" chown proxy:proxy "$PASSWORD_FILE" chmod 640 "$PASSWORD_FILE"  # Настройка лог-директории echo "Настройка директории для логов..." LOG_DIR="/var/log/squid" if [ ! -d "$LOG_DIR" ]; then     mkdir -p "$LOG_DIR" fi rm -f "$LOG_DIR/access.log" "$LOG_DIR/cache.log" touch "$LOG_DIR/access.log" chown proxy:proxy "$LOG_DIR" "$LOG_DIR/access.log" chmod 750 "$LOG_DIR" chmod 640 "$LOG_DIR/access.log"  # Проверка прав на /var/log echo "Проверка прав на /var/log..." if [ ! -w /var/log ]; then     echo "Устанавливаем права на /var/log для доступа..."     chmod o+w /var/log fi  # Создание конфигурационного файла Squid с маскировкой IP echo "Создание конфигурации Squid..." cat > /etc/squid/squid.conf << EOL # Базовые настройки http_port 3128  # Настройка авторизации auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd auth_param basic children 5 auth_param basic realm Proxy Authentication Required auth_param basic credentialsttl 2 hours  # Правила доступа acl authenticated proxy_auth REQUIRED http_access allow authenticated http_access deny all  # Маскировка IP клиента forwarded_for off request_header_access X-Forwarded-For deny all request_header_access Via deny all request_header_access From deny all  # Дополнительные настройки cache_dir ufs /var/spool/squid 100 16 256 coredump_dir /var/spool/squid access_log stdio:/var/log/squid/access.log EOL  # Установка правильных прав на конфиг chown root:root /etc/squid/squid.conf chmod 644 /etc/squid/squid.conf  # Проверка конфигурации echo "Проверка конфигурации Squid..." squid -k parse if [ $? -eq 0 ]; then     echo "Конфигурация верна" else     echo "Ошибка в конфигурации, проверьте /etc/squid/squid.conf"     exit 1 fi  # Проверка и создание директории кэша echo "Проверка и создание кэша..." if [ ! -d /var/spool/squid ]; then     mkdir -p /var/spool/squid fi chown proxy:proxy /var/spool/squid chmod 750 /var/spool/squid squid -z if [ $? -ne 0 ]; then     echo "Ошибка при инициализации кэша"     exit 1 fi  # Настройка брандмауэра (ufw) echo "Настройка брандмауэра..." ufw allow 3128/tcp ufw --force enable echo "Порт 3128 открыт для TCP"  # Запуск и включение автозапуска Squid echo "Запуск Squid..." systemctl restart squid if [ $? -ne 0 ]; then     echo "Ошибка запуска Squid, проверьте логи: journalctl -xeu [squid.service](squid.service)"     exit 1 fi systemctl enable squid  # Проверка статуса echo "Проверка статуса Squid..." systemctl status squid --no-pager  # Вывод информации для подключения IP_ADDRESS=$(hostname -I | awk '{print $1}') echo "------------------------------------------------" echo "Прокси настроен!" echo "IP сервера: $IP_ADDRESS" echo "Порт: 3128" echo "Пользователь: $PROXY_USER" echo "Для подключения используйте: http://$PROXY_USER:PASSWORD@$IP_ADDRESS:3128" echo "------------------------------------------------"  exit 0

Как это настроить?

Для начала вам понадобится сервер на Ubuntu (срипт писался именно для Ubuntu 22.04) — если у вас его ещё нет, можно взять надёжный VPS, например, у HostVDS, где всё быстро и удобно настраивается. Тем более этот хостер принимает карты МИР, да и цены у него одни из самых низких. В общем — разберетесь.

А дальше — проще простого:

Сохраните скрипт в файл, например, setup_proxy.sh.

Откройте терминал на вашем Ubuntu-сервере.

Дайте файлу права на выполнение: chmod +x setup_proxy.sh.

Запустите его с правами суперпользователя: sudo ./setup_proxy.sh.

Следуйте подсказкам: введите имя пользователя и пароль, когда попросят.

После завершения скрипт выдаст вам IP-адрес сервера, порт (3128) и данные для авторизации. Запомните их — они пригодятся для проверки!

Какие расширения подойдут для вашего браузера?

В магазине расширений Google Chrome есть несколько расширений, которые позволяют управлять доступом к сатам при помощи прокси. Лично я остановился на Smart Proxy. Там всё довольно просто — правила добавляются автоматически. Стоит только сначала выбрать режим «Умный прокси». Далее заходим на нужный сайт, нажимаем на значок расширения и в выпавшем мень ставим галочку напротив названия сайта. С этого момента сайт будет открываться через предварительно настроенный вами (в этом приложении) прокси.

Почему это круто?

Этот скрипт — как ключ к свободе в интернете. Вы больше не привязаны к глобальным настройкам прокси, которые либо работают для всего, либо нет. Теперь у вас есть контроль: включайте прокси там, где нужно, и отключайте там, где он мешает. Это не просто инструмент, а целая философия удобства и гибкости. Попробуйте — и вы не захотите возвращаться к старым способам!

Так что запускайте терминал на своём сервере, пробуйте этот скрипт и делитесь впечатлениями.


ссылка на оригинал статьи https://habr.com/ru/articles/885162/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *