
Представьте себе ситуацию: вы хотите в одном браузере смотреть любимый сериал на зарубежном сайте, который требует прокси, и одновременно листать локальные новости, где прокси только мешает. Обычно это превращается в жонглирование настройками или даже окнами браузера — скучно и утомительно. Но что, если я скажу, что есть простой и изящный способ объединить эти миры? Сегодня я поделюсь с вами крутым 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"
# Настройка logrotate с ограничением размера
echo "Настройка ротации логов с ограничением размера..."
cat > /etc/logrotate.d/squid << EOL
/var/log/squid/access.log {
daily
size 100M
rotate 7
compress
missingok
notifempty
create 0640 proxy proxy
postrotate
/usr/sbin/squid -k rotate
endscript
}
EOL
# Проверка прав на /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 allow 22
ufw --force enable
echo "Порт 3128 открыт для TCP"
# Запуск и включение автозапуска Squid
echo "Запуск Squid..."
systemctl restart squid
if [ $? -ne 0 ]; then
echo "Ошибка запуска Squid, проверьте логи: journalctl -xeu 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. Там всё довольно просто - правила добавляются автоматически. Стоит только сначала выбрать режим "Умный прокси". Далее заходим на нужный сайт, нажимаем на значок расширения и в выпавшем мень ставим галочку напротив названия сайта. С этого момента сайт будет открываться через предварительно настроенный вами (в этом приложении) прокси.
Почему это круто?
Этот скрипт — как ключ к свободе в интернете. Вы больше не привязаны к глобальным настройкам прокси, которые либо работают для всего, либо нет. Теперь у вас есть контроль: включайте прокси там, где нужно, и отключайте там, где он мешает. Это не просто инструмент, а целая философия удобства и гибкости. Попробуйте — и вы не захотите возвращаться к старым способам!
Так что запускайте терминал на своём сервере, пробуйте этот скрипт и делитесь впечатлениями.