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