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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Представьте себе ситуацию: вы хотите в одном браузере смотреть любимый сериал на зарубежном сайте, который требует прокси, и одновременно листать локальные новости, где прокси только мешает. Обычно это превращается в жонглирование настройками или даже окнами браузера — скучно и утомительно. Но что, если я скажу, что есть простой и изящный способ объединить эти миры? Сегодня я поделюсь с вами крутым 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/


Интересные статьи

Интересные статьи

Массовое внедрение цифрового рубля, запланированное Центробанком на лето 2025 года, отложено на неопределённый срок. Об этом сообщила председатель Банка России Эльвира Набиуллина на ежегодной встрече ...
Всем привет. Текст состоит из двух частей:1. Небольшая шпаргалка по параметрам настроек по умолчанию;2. Текст о том, почему вообще существование такой шпаргалки может кому-то понадобится.
Представьте, что вы, например, bitly — то есть очень большой сервис сокращения ссылок. И вот, вы хотите скопировать свои 150 ТБ сжатых данных с одного физического класте...
Среди советов по улучшению юзабилити интернет-магазина, которые можно встретить в инете, один из явных лидеров — совет «сообщайте посетителю стоимость доставки как можно раньше».
1С Битрикс: Управление сайтом (БУС) - CMS №1 в России по версии портала “Рейтинг Рунета” за 2018 год. На рынке c 2003 года. За это время БУС не стоял на месте, обрастал новой функциональностью...