Настройка альтернативного прокси-сервера Linux

Обновлено: 02.07.2024

Кэширующий прокси-сервер Squid — это отличное решение для различных потребностей в прокси-серверах и кеширующих серверах. Он масштабируется от сетей филиалов до корпоративных сетей, предоставляя обширные детализированные механизмы контроля доступа и мониторинг критических параметров через Simple Network. Протокол управления (SNMP). При выборе компьютерной системы для использования в качестве выделенного кэширующего прокси-сервера Squid для многих пользователей убедитесь, что она настроена с большим объемом физической памяти, поскольку Squid поддерживает кэш в памяти для повышения производительности.

Установка

В терминале введите следующую команду для установки сервера Squid:

Конфигурация

Squid настраивается путем редактирования директив, содержащихся в файле конфигурации /etc/squid/squid.conf. Следующие примеры иллюстрируют некоторые директивы, которые можно изменить, чтобы повлиять на поведение сервера Squid. Подробную информацию о настройке Squid см. в разделе «Справочники».

Совет

Перед редактированием файла конфигурации необходимо сделать копию исходного файла и защитить ее от записи, чтобы исходные настройки использовать по мере необходимости. Сделайте эту копию и защитите ее от записи с помощью следующих команд:

Измените директиву visible_hostname, чтобы дать серверу Squid определенное имя хоста. Это имя хоста не обязательно должно быть именем хоста компьютера. В этом примере установлено значение weezie

.

Опция cache_dir позволяет настроить кеш на диске, по умолчанию используется кеш в памяти. Директива cache_dir принимает следующие аргументы:

В файле конфигурации вы можете найти закомментированную директиву cache_dir по умолчанию:

Вы можете просто использовать параметр по умолчанию, но вы также можете настроить свой каталог кеша, в основном изменив этот каталог, это может быть:

  • ufs: старый хорошо известный формат хранения Squid, который существовал всегда.
  • aufs : использует тот же формат хранения, что и ufs , используя потоки POSIX, чтобы избежать блокировки основного процесса Squid при дисковом вводе-выводе. Раньше в Squid это называлось async-io .
  • diskd : использует тот же формат хранения, что и ufs , используя отдельный процесс, чтобы избежать блокировки основного процесса Squid при дисковом вводе-выводе.
  • rock : хранилище в стиле базы данных. Все кэшированные записи хранятся в файле «базы данных» с использованием слотов фиксированного размера. Одна запись занимает один или несколько слотов.

Если вы хотите использовать каталог другого типа, ознакомьтесь с их вариантами.

Используя контроль доступа Squid, вы можете настроить использование интернет-сервисов, проксируемых Squid, так, чтобы они были доступны только пользователям с определенными IP-адресами. Например, мы проиллюстрируем доступ только пользователей подсети 192.168.42.0/24:

Добавьте следующее в конец раздела ACL вашего файла /etc/squid/squid.conf:

Используя превосходные функции контроля доступа Squid, вы можете настроить использование Интернет-сервисов, проксируемых Squid, так, чтобы они были доступны только в обычные рабочие часы. Например, мы проиллюстрируем доступ сотрудников компании, которая работает с 9:00 до 17:00 с понедельника по пятницу и использует подсеть 10.1.42.0/24:

В компьютерных сетях прокси-сервер – это сервер (компьютерная система или приложение), выступающий в качестве посредника для запросов от клиентов, ищущих ресурсы с других серверов.

Содержание

Переменные среды

Эту статью или раздел необходимо расширить.

Причина: Чтобы экспортировать среду везде (более или менее), их можно установить в /etc/environment и /etc/environment.d/*.conf или ~/.pam_environment и ~/.config/environment.d /*.конф. (Обсудить в Обсуждении:Прокси-сервер)

Ниже приведен пример установки этих переменных в оболочке:

Некоторые программы ищут версию переменных среды, состоящую из заглавных букв.

Если переменные среды прокси должны быть доступны для всех пользователей и всех приложений, вышеупомянутые команды экспорта могут быть добавлены в сценарий, например, proxy.sh внутри /etc/profile.d/. Затем скрипт должен быть выполнен исполняемым. Этот метод полезен при использовании среды рабочего стола, такой как Xfce, которая не предоставляет возможность настройки прокси. Например, браузер Chromium будет использовать переменные, установленные с помощью этого метода, при запуске XFCE.

Кроме того, существует инструмент proxyman-git AUR, который утверждает, что легко настраивает общесистемные параметры прокси. Он также обрабатывает прокси-конфигурации другого программного обеспечения, такого как git, npm, Dropbox и т. д. Проект вдохновлен идеей Алана Поупа о создании скрипта.

В качестве альтернативы вы можете автоматизировать переключение переменных, добавив функцию в ваш .bashrc (спасибо Алану Поупу за оригинальную идею скрипта)

Опустите имя пользователя или пароль, если они не нужны.

В качестве альтернативы вы можете использовать следующий скрипт. Измените строки YourUserName , ProxyServerAddress:Port , LocalAddress и LocalDomain, чтобы они соответствовали вашим собственным данным, затем отредактируйте файл ~/.bashrc, чтобы включить отредактированные функции. Любое новое окно bash будет иметь новые функции. В существующих окнах bash введите source ~/.bashrc . Вы можете предпочесть поместить определения функций в отдельный файл, например функции, а затем добавить исходные функции в .bashrc вместо того, чтобы помещать все в .bashrc . Вы также можете изменить имя «myProxy» на что-то короткое и легкое для написания.

Оставить прокси через sudo

Если переменные среды прокси установлены только для пользователя, они будут потеряны при выполнении команд с помощью sudo (или когда программы используют sudo для внутреннего использования).

Чтобы предотвратить это, добавьте следующую строку в файл конфигурации sudo:

Автоматизация с помощью сетевых менеджеров

    не может изменить переменные среды. можно настроить эти переменные среды, но они не будут видны другим приложениям, поскольку они не являются дочерними для netctl.

О libproxy

libproxy (доступна в дополнительном репозитории) — это библиотека абстракций, которую должны использовать все приложения, которым нужен доступ к сетевому ресурсу. Он все еще находится в разработке, но может привести к унифицированной и автоматизированной обработке прокси-серверов в GNU/Linux, если получит широкое распространение.

Роль libproxy – считывать настройки прокси-сервера из разных источников и делать их доступными для приложений, использующих библиотеку. Интересная часть libproxy заключается в том, что она предлагает реализацию протокола автообнаружения веб-прокси и реализацию автоматической настройки прокси-сервера, которая идет вместе с ним.

Двоичный файл /usr/bin/proxy принимает URL-адрес(а) в качестве аргумента(ов) и возвращает прокси/прокси, которые можно использовать для получения этого/этих сетевых ресурсов.

По состоянию на 04.06.2009 для libsoup требуется libproxy. Затем он косвенно используется браузером midori.

Параметры веб-прокси

Простой прокси с SSH

Подключитесь к серверу (HOST), на котором у вас есть учетная запись (USER), следующим образом

В поле PORT выберите какой-либо номер, который не является портом, зарегистрированным в IANA. Указывает, что трафик на локальном PORT будет перенаправляться на удаленный HOST. ssh будет действовать как сервер SOCKS. Программное обеспечение, поддерживающее прокси-серверы SOCKS, можно просто настроить для подключения к PORT на локальном хосте.

Использование SOCKS-прокси

Есть два случая:

  • приложение, которое вы хотите использовать, обрабатывает прокси-серверы SOCKS5 (например, Firefox), тогда вам просто нужно настроить его для использования прокси-сервера.
  • приложение, которое вы хотите использовать, не обрабатывает прокси-серверы SOCKS, тогда вы можете попробовать использовать tsocks или proxychains-ng .

При использовании proxychains-ng конфигурация выполняется в /etc/proxychains.conf . Возможно, вам придется раскомментировать последнюю строку (установленную по умолчанию для использования Tor) и заменить ее параметрами SOCKS-прокси. Например, если вы используете тот же прокси-сервер SOCKS5, что и выше, вам придется заменить последнюю строку на:

Затем proxychains-ng можно запустить с

Где program может быть любая программа, уже установленная в вашей системе (например, xterm, gnome-terminal и т. д.).

При использовании tsocks конфигурация выполняется в файле /etc/tsocks.conf . См. параметры в tsocks.conf(5). Пример минимальной конфигурации выглядит следующим образом:

керл и пакман

Вы можете установить переменную среды all_proxy, чтобы разрешить curl и pacman (который использует curl) использовать прокси-сервер socks5:

Настройки прокси в GNOME3

Некоторые программы, такие как Chromium и Firefox, могут использовать настройки, хранящиеся в GNOME. Эти настройки можно изменить через внешний интерфейс gnome-control-center, а также через gsettings.

Эта конфигурация также может быть настроена на автоматическое выполнение при подключении NetworkManager к определенным сетям с помощью пакета proxydriver AUR.

Прокси Microsoft NTLM

В сети Windows NT LAN Manager (NTLM) представляет собой набор протоколов безопасности Microsoft, обеспечивающих аутентификацию, целостность и конфиденциальность пользователей.

cntlm AUR из AUR стоит между вашими приложениями и прокси-сервером NTLM, добавляя аутентификацию NTLM на лету. Вы можете указать несколько "родительских" прокси и Cntlm будет пробовать один за другим, пока не сработает один. Все аутентифицированные соединения кэшируются и повторно используются для достижения высокой эффективности.

Конфигурация

Измените настройки в файле /etc/cntlm.conf по мере необходимости, за исключением пароля. Затем запустите:

Это создаст зашифрованные хэши паролей в соответствии с вашим именем прокси-сервера, именем пользователя и паролем.

Предупреждение: ettercap может легко перехватить ваш пароль через локальную сеть при использовании паролей в виде обычного текста вместо зашифрованных хэшей.

Squid – это прокси-приложение для Linux. Прокси-сервер Squid используется для фильтрации трафика, безопасности и поиска DNS.

Кроме того, Squid может ускорить работу веб-сервера за счет кэширования ресурсов. Squid Proxy позволяет серверу кэшировать часто посещаемые веб-страницы. Когда пользователь запрашивает веб-страницу или файл, запрос направляется непосредственно на прокси-сервер — промежуточное устройство между устройством пользователя и Интернетом. Прокси-сервер извлекает ресурсы и передает их пользователю.

В этом руководстве рассказывается, как настроить и установить прокси-сервер Squid в Ubuntu.

настроить и установить прокси-сервер squid на Ubuntu

  • Операционная система Ubuntu
  • Доступ к окну терминала/командной строке (Ctrl-Alt-T)
  • Пользователь Ubuntu с привилегиями root или sudo
  • Установщик пакета apt, включенный по умолчанию
  • Текстовый редактор, например nano

Установка прокси-сервера Squid в Ubuntu

Шаг 1. Обновите репозитории программного обеспечения

Убедитесь, что вы работаете с последней доступной версией программного обеспечения.

Запустите окно терминала и введите следующее:

Шаг 2. Установите пакет Squid в Ubuntu

Чтобы установить Squid, выполните команду:

Система должна запросить подтверждение — введите Y и дождитесь завершения процесса.

Настройка прокси-сервера Squid

Файл конфигурации Squid находится в /etc/squid/squid.conf.

<р>1. Откройте этот файл в текстовом редакторе с помощью команды:

Вы также можете установить прозрачный режим прокси, если не хотите, чтобы Squid модифицировал ваши запросы и ответы.

Измените его следующим образом:

Измените это на следующее:

<р>4. Перейдите к опции visible_hostname. Добавьте любое имя, которое вы хотите, к этой записи. Так сервер будет отображаться для всех, кто пытается подключиться. Сохраните изменения и выйдите.

<р>5. Перезапустите службу Squid, введя:

Настроить клиент Squid

Все эти настройки были выполнены для настройки вашего прокси-сервера Squid. Теперь переключитесь на свой клиентский компьютер и откройте веб-браузер.

Если вы используете Firefox, вы можете найти настройки прокси-сервера в разделе:

Меню > Параметры > Настройки сети > Настройки

Отметьте переключатель для настройки прокси-сервера вручную.

Если вы ввели имя хоста на шаге 4, вы сможете ввести это имя и назначенный вами порт. В противном случае используйте IP-адрес системы, на которой размещен прокси-сервер Squid.

Добавить Squid ACL

Примечание. После каждого из этих шагов необходимо сохранить и выйти, а затем перезапустить службу Squid, чтобы применить новую конфигурацию.

Создайте список управления доступом, снова отредактировав файл squid.conf, как на шаге 4.

Добавьте новую строку следующим образом:

Это создаст правило, разрешающее подключение только системе с этим IP-адресом. Рекомендуется прокомментировать строку, чтобы идентифицировать правило:

Вы можете указать диапазон IP-адресов следующим образом:

Открыть порты

Чтобы открыть определенный порт, добавьте следующее:

Настроить прокси-аутентификацию

Это заставляет пользователей аутентифицироваться для использования прокси-сервера.

Начните с установки apache2-utils:

Создайте файл passwd и измените владельца на пользовательский прокси-сервер Squid:

Добавить нового пользователя и пароль

<р>1. Чтобы добавить нового пользователя в Squid, используйте команду:

Система предложит вам ввести и подтвердить пароль для нового пользователя.

<р>2. Отредактируйте файл /etc/squid/squid.conf и добавьте следующие командные строки:

Блокировка веб-сайтов через прокси-сервер Squid

<р>1. Создайте и отредактируйте новый текстовый файл /etc/squid/blocked.acl, введя:

<р>2. В этом файле добавьте сайты, которые нужно заблокировать, начиная с точки:

Примечание. Точка указывает на блокировку всех дочерних сайтов основного сайта.

<р>3. Снова откройте файл /etc/squid/squid.conf:

<р>4. Добавьте следующие строки прямо над списком ACL:

Команды при работе со службой Squid

Чтобы проверить статус вашего программного обеспечения Squid, введите:

Это покажет вам, запущена служба или нет.

Чтобы запустить службу, введите:

Затем настройте запуск службы Squid при запуске системы, введя:

Вы можете повторно запустить команду состояния, чтобы убедиться, что служба запущена и работает.

Чтобы остановить службу, используйте команду:

Чтобы Squid не запускался при запуске, введите:

Если вы внимательно следили за процессом, теперь у вас должно быть общее представление о том, как работает Squid, а также как установить и настроить Squid Proxy в Ubuntu.

Прокси-серверы — ценный инструмент для защиты сетевого трафика, предотвращения атак и ограничения доступа.

Прочитайте нашу статью о том, как настроить вашу систему Ubuntu для работы с прокси-сервером, чтобы настроить вашу машину Ubuntu для использования прокси-сервера.

Хотите настроить это приложение на другой ОС?Вы можете узнать, как установить Squid на CentOS 7.

Прокси-серверы – это тип серверного приложения, функционирующего как шлюз между конечным пользователем и интернет-ресурсом. Через прокси-сервер конечный пользователь может контролировать и отслеживать свой веб-трафик для самых разных целей, включая конфиденциальность, безопасность и кэширование. Например, вы можете использовать прокси-сервер для выполнения веб-запросов с IP-адреса, отличного от вашего собственного. Вы также можете использовать прокси-сервер, чтобы узнать, как Интернет обслуживается по-разному в разных юрисдикциях, или избежать некоторых методов наблюдения или ограничения веб-трафика.

Предпосылки

Для выполнения этого руководства вам потребуется:

  • Сервер Ubuntu 20.04 и пользователь без полномочий root с привилегиями sudo. Вы можете узнать больше о том, как настроить пользователя с этими привилегиями, в нашем руководстве Initial Server Setup with Ubuntu 20.04.

В этом руководстве вы будете использовать доменное имя your_domain, но вы должны заменить его своим собственным доменным именем или IP-адресом.

Шаг 1 — Установка прокси-сервера Squid

У Squid есть множество вариантов использования, помимо маршрутизации исходящего трафика отдельного пользователя. В контексте крупномасштабных развертываний серверов его можно использовать в качестве механизма распределенного кэширования, балансировщика нагрузки или другого компонента стека маршрутизации. Однако некоторые методы горизонтального масштабирования серверного трафика, которые обычно включали бы прокси-сервер, уступили по популярности платформам контейнеризации, таким как Kubernetes, которые распределяют больше компонентов приложения. В то же время использование прокси-серверов для перенаправления веб-запросов в качестве отдельного пользователя становится все более популярным для защиты вашей конфиденциальности. Это полезно помнить при работе с прокси-серверами с открытым исходным кодом, которые могут иметь многие десятки функций в режиме обслуживания с более низким приоритетом. Варианты использования прокси-сервера со временем изменились, но основная технология осталась неизменной.

Начните с выполнения следующих команд от имени пользователя без полномочий root, чтобы обновить списки пакетов и установить Squid Proxy:

Squid автоматически настроит фоновую службу и запустится после установки. Вы можете проверить правильность работы службы:

По умолчанию Squid не позволяет клиентам подключаться к нему из-за пределов этого сервера. Чтобы включить это, вам нужно внести некоторые изменения в его файл конфигурации, который хранится в /etc/squid/squid.conf. Откройте его в nano или в вашем любимом текстовом редакторе:

  • acl означает список контроля доступа, общий термин для политик разрешений
  • localnet в данном случае — это имя вашего ACL-списка.
  • src — это место, откуда будет исходить запрос из этого ACL, т. е. ваш IP-адрес.

Если вы не знаете свой локальный IP-адрес, проще всего перейти на такой сайт, как What's my IP, который может сообщить вам, откуда вы к нему обращались. После внесения этого изменения сохраните и закройте файл. Если вы используете nano , нажмите Ctrl+X , а затем, когда будет предложено, Y и Enter .

На этом этапе вы можете перезапустить Squid и подключиться к нему, но вы можете сделать больше, чтобы сначала защитить его.

Шаг 2 — Защита Squid

Большинство прокси-серверов и большинство клиентских приложений, которые подключаются к прокси-серверам (например, веб-браузеры), поддерживают несколько методов аутентификации. Они могут включать в себя общие ключи или отдельные серверы аутентификации, но чаще всего включают в себя обычные пары имя пользователя-пароль. Squid позволяет создавать пары логин-пароль, используя встроенную функциональность Linux, в качестве дополнительного или альтернативного шага к ограничению доступа к вашему прокси по IP-адресу. Для этого вы создадите файл с именем /etc/squid/passwords и укажите в нем конфигурацию Squid.

Во-первых, вам нужно установить некоторые утилиты из проекта Apache, чтобы иметь доступ к генератору паролей, который нравится Squid.

Этот пакет содержит команду htpasswd, которую можно использовать для создания пароля для нового пользователя Squid. Имена пользователей Squid никоим образом не будут пересекаться с системными именами пользователей, поэтому вы можете использовать то же имя, с которым вы вошли в систему, если хотите. Вам также будет предложено добавить пароль:

Это сохранит ваше имя пользователя вместе с хэшем вашего нового пароля в файле /etc/squid/passwords, который будет использоваться Squid в качестве источника аутентификации. Вы можете просмотреть файл позже, чтобы увидеть, как он выглядит:

Убедившись, что ваше имя пользователя и пароль сохранены, вы можете обновить конфигурацию Squid, чтобы использовать новый файл /etc/squid/passwords. С помощью nano или вашего любимого текстового редактора снова откройте файл конфигурации Squid и добавьте следующие выделенные строки:

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

И не забудьте открыть порт 3128 в брандмауэре, если вы используете ufw :

На следующем шаге вы, наконец, подключитесь к прокси-серверу.

Шаг 3 — Подключение через Squid

Чтобы продемонстрировать свой сервер Squid, вы будете использовать программу командной строки под названием curl , которая популярна для выполнения различных типов веб-запросов. В общем, если вы хотите проверить, должно ли данное соединение работать в браузере в идеальных условиях, вы всегда должны сначала протестировать его с помощью curl . Для этого вы будете использовать curl на своем локальном компьютере — он установлен по умолчанию во всех современных средах Windows, Mac и Linux, поэтому вы можете открыть любую локальную оболочку для выполнения этой команды:

Учетные данные, которые вы использовали для curl, теперь должны работать везде, где вы захотите использовать новый прокси-сервер.

Заключение

В этом руководстве вы научились развертывать популярную конечную точку API с открытым исходным кодом для прокси-трафика практически без дополнительных затрат. Многие приложения имеют встроенную поддержку прокси-сервера (часто на уровне ОС), которая существует уже несколько десятилетий, что делает этот стек прокси-сервера очень удобным для повторного использования.

Далее вы можете узнать, как развернуть Dante, прокси-сервер SOCKS, который может работать вместе со Squid для проксирования различных типов веб-трафика.

Поскольку одним из наиболее распространенных вариантов использования прокси-серверов является проксирование трафика в разные регионы мира и из них, вы можете рассмотреть, как использовать Ansible для автоматизации развертывания серверов, если вы захотите продублировать эту конфигурацию в другие центры обработки данных.

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

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

Читайте также: