Лайфхаки

Маленькие, полезные хитрости

Mastering Proxy Settings on Ubuntu 18.04: A Comprehensive Guide

15.10.2024 в 20:36
Содержание
  1. Mastering Proxy Settings on Ubuntu 18.04: A Comprehensive Guide
  2. Связанные вопросы и ответы
  3. Как изменить настройки прокси на Ubuntu 18.04
  4. Как установить прокси-сервер на Ubuntu 18.04
  5. Как настроить системные настройки прокси на Ubuntu 18.04
  6. Как настроить прокси-сервер для браузера на Ubuntu 18.04
  7. Как изменить настройки прокси для определенного приложения на Ubuntu 18.04
  8. Как настроить прокси-сервер для загрузки пакетов на Ubuntu 18.04

Mastering Proxy Settings on Ubuntu 18.04: A Comprehensive Guide

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

    Из этого туториала Вы узнаете, как настроить прокси-сервер Squid в Ubuntu 18.04 и настроить браузеры Firefox и Google Chrome для его использования.

    Установка Squid на Ubuntu

    Пакет Squid включен в стандартные репозитории Ubuntu 18.04. Для его установки введите следующие команды от имени пользователя sudo:

    sudo apt updatesudo apt install squid

    После завершения установки служба Squid запустится автоматически.

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

    Squid is a full-featured caching proxy server that supports popular network protocols such as HTTP, HTTPS, FTP, and others. Squid is primarily used to improve web server performance by caching repeated requests, filtering web traffic, and controlling access to content with geographical restrictions.

    In this tutorial, you will learn how to set up a Squid proxy server on Ubuntu 18.04 and configure Firefox and Google Chrome browsers to use it.

    The Squid package is included in the standard repositories of Ubuntu 18.04. To install it, enter the following commands as the root user:

    sudo apt-get update sudo apt-get install squid

    After the installation is complete, the Squid service will start automatically.

    To ensure that the installation was successful and the Squid service is running, enter the following command, which will display the service status:

    sudo service squid status

    This command will output the current status of the Squid service, indicating whether it is running or not.

    Now that you have Squid installed and running, you can configure your web browsers to use it. In the next section, we will cover how to set up Firefox and Google Chrome to use your new Squid proxy server.

    Configuring Browsers to Use Squid Proxy Server

    sudo systemctl status squid

    ● squid.service - LSB: Squid HTTP Proxy version 3.x Loaded: loaded (/etc/init.d/squid; generated) Active: active (running) since Thu 2019-06-27 11:45:17 UTC…

    Конфигурирование Squid

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

Связанные вопросы и ответы:

Вопрос 1: Как установить прокси-сервер на Ubuntu 18.04

Ответ: Чтобы установить прокси-сервер на Ubuntu 18.04, вы должны открыть файл конфигурации сети, который находится по адресу /etc/environment. Откройте его с помощью текстового редактора, такого как nano или vim. Затем найдите строку, которая начинается с "http_proxy=" и измените ее на "http_proxy=http://ваш_прокси_адрес:порт". После этого сохраните файл и закройте редактор.

Вопрос 2: Как изменить прокси-сервер на Ubuntu 18.04

Ответ: Чтобы изменить прокси-сервер на Ubuntu 18.04, вы должны открыть файл конфигурации сети, который находится по адресу /etc/environment. Откройте его с помощью текстового редактора, такого как nano или vim. Затем найдите строку, которая начинается с "http_proxy=" и измените ее на "http_proxy=http://новый_прокси_адрес:порт". После этого сохраните файл и закройте редактор.

Вопрос 3: Как отключить прокси-сервер на Ubuntu 18.04

Ответ: Чтобы отключить прокси-сервер на Ubuntu 18.04, вы должны открыть файл конфигурации сети, который находится по адресу /etc/environment. Откройте его с помощью текстового редактора, такого как nano или vim. Затем найдите строку, которая начинается с "http_proxy=" и удалите ее полностью. После этого сохраните файл и закройте редактор.

Вопрос 4: Как проверить настройки прокси-сервера на Ubuntu 18.04

Ответ: Чтобы проверить настройки прокси-сервера на Ubuntu 18.04, вы должны открыть терминал и ввести команду "curl --proxy http://ваш_прокси_адрес:порт http://www.google.com". Если вывод команды содержит информацию о сайте Google, то настройки прокси-сервера работают правильно.

Вопрос 5: Как настроить прокси-сервер для определенного приложения на Ubuntu 18.04

Ответ: Чтобы настроить прокси-сервер для определенного приложения на Ubuntu 18.04, вы должны открыть файл конфигурации приложения и найти строку, которая определяет настройки сети. Затем измените эту строку, добавив параметр "http_proxy" с нужным адресом и портом прокси-сервера. После этого сохраните файл и закройте редактор.

Вопрос 6: Как настроить прокси-сервер для всех приложений на Ubuntu 18.04

Ответ: Чтобы настроить прокси-сервер для всех приложений на Ubuntu 18.04, вы должны открыть файл конфигурации сети, который находится по адресу /etc/environment. Откройте его с помощью текстового редактора, такого как nano или vim. Затем найдите строку, которая начинается с "http_proxy=" и измените ее на "http_proxy=http://ваш_прокси_адрес:порт". После этого сохраните файл и закройте редактор.

Вопрос 7: Как настроить прокси-сервер для определенного пользователя на Ubuntu 18.04

Ответ: Чтобы настроить прокси-сервер для определенного пользователя на Ubuntu 18.04, вы должны открыть файл конфигурации сети для этого пользователя, который находится по адресу /home/ваш_пользователь/.bashrc. Откройте его с помощью текстового редактора, такого как nano или vim. Затем найдите строку, которая начинается с "http_proxy=" и измените ее на "http_proxy=http://ваш_прокси_адрес:порт". После этого сохраните файл и закройте редактор.

Как изменить настройки прокси на Ubuntu 18.04

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

Это руководство проведет вас через процесс настройки прокси-сервера Squid в Ubuntu 18.04 и настройки веб-браузеров Firefox и Google Chrome для его использования.

Установка Squid на Ubuntu

Пакет Squid включен в репозитории Ubuntu 18.04 по умолчанию. Чтобы установить его, введите следующие команды от имени:

sudo apt updatesudo apt install squid

После завершения установки служба Squid запустится автоматически.

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

sudo systemctl status squid

● squid.service - LSB: Squid HTTP Proxy version 3.x Loaded: loaded (/etc/init.d/squid; generated) Active: active (running) since Thu 2019-06-27 11:45:17 UTC …

Настройка Squid

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

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

Давайте попробуем вместе с ноля создать и настроить собственный прокси-сервер на базе дистрибутивов Ubuntu / Debian с помощью Squid .

Устанавливаем пакеты программного обеспечения

Прежде всего, обновляем репозиторий нашей операционной системы. Для этого выполняем командуapt update:

Важно : здесь и далее управление пакетами с помощью утилиты apt ( Advanced Packaging Tool ) выполняется с правами суперпользователя ( root ) — через командуsudo.

Теперь обновляем пакеты — для этого вводим в командную строку командуapt dist-upgrade:

Как установить прокси-сервер на Ubunt.  Пошаговое руководство по установке и настройке прокси-сервер Squid

Поскольку в результате обновилось ядро Linux , нужно перегрузить систему . Воспользуемся командойshutdownс опцией now(немедленно):

Теперь устанавливаем прокси-сервер Squid . Для этого используем командуapt install, добавив в качестве аргументаsquid. Также установим apache2-utils для аутентификации пользователей по паролю:

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

Теперь нам предстоит настроить работу нашего прокси-сервера . На всякий случай делаем резервную копию файла настроек Squid . Для этого сначала переходим в каталог /etc/squid/ с помощью командыcd:

После чего копируем файл squid.conf , изменив имя итогового файла наsquid.conf.defaultс помощью командыcp:

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

Как установить прокси-сервер на Ubunt.  Пошаговое руководство по установке и настройке прокси-сервер Squid

Как настроить системные настройки прокси на Ubuntu 18.04

Apache и Nginx– популярные веб-серверы с открытым исходным кодом, которые часто используются для работы с PHP. Их можно использовать на одной виртуальной машине для поддержки нескольких веб-сайтов с разными требованиями. Обычно два веб-сервера в одной системе используют для работы с несколькими IP-адресами или различными портами.

Серверы с поддержкой адресов IPv4 и IPv6 можно настроить для обслуживания Apache по одному протоколу и Nginx по другому. Но это не очень практично, так как IPv6 до сих пор не получил широкого распространения. Можно также установить для второго веб-сервера другой номер порта, но использовать порты в ссылках очень неудобно.

Данный мануал поможет настроить Nginx как веб-сервер и прокси-сервер для Apache на одном сервере Ubuntu 18.04.

При этом может понадобиться изменить код приложения, чтобы включить поддержку обратного прокси в Apache (особенно это касается сайтов с SSL). Чтобы избежать этого, можно установить специальный модуль Apache, mod_rpaf, который переопределяет некоторые переменные среды, благодаря чему Apache может напрямую обслуживать запросы клиентов.

В мануале показано, как разместить четыре домена на одном сервере. Два из них будут обслуживаться Nginx: example.com (стандартный виртуальный хост) и sample.org. Другие два – Apache: foobar.net и test.io. Мы также настроим Apache для поддержки PHP-приложений по PHP-FPM, что обеспечивает лучшую производительность по сравнению с mod_php.

Требования

  • Новый сервер Ubuntu 18.04, настроенный по этому мануалу .
  • 4 домена, направленные на IP-адрес вашего сервера. Читайте мануал Как настроить имя хоста , чтобы создать необходимые записи А.

1: Установка Apache и PHP-FPM

Сначала нужно установить Apache и PHP-FPM. Также для работы понадобится модуль Apache для PHP FastCGI под названием libapache2-mod-fastcgi.

Обновите индекс пакетов:

sudo apt update

Установите необходимые программы:

sudo apt install apache2 php-fpm

Модуль Apache FastCGI недоступен в репозитории Ubuntu, поэтому загрузите его с kernel.org и установите с помощью команды dpkg.

wget https://mirrors.edge.kernel.org/ubuntu/pool/multiverse/liba/libapache-mod-fastcgi/libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb
sudo dpkg -i libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb

2: Настройка Apache и PHP-FPM

Теперь нужно настроить порт Apache (8080) и подготовить веб-сервер к работе с PHP-FPM с помощью модуля mod_fastcgi. Переименуйте конфигурационный файл Apache ports.conf:

sudo mv /etc/apache2/ports.conf /etc/apache2/ports.conf.default

Создайте новый файл ports.conf и укажите в нем порт 8080.

echo "Listen 8080" | sudo tee /etc/apache2/ports.conf

Примечание : Обычно 127.0.0.1:8080 прослушивают прокси-серверы, но это позволит установить loopback IP-адрес в качестве значения переменной окружения РНР server_addr вместо внешнего IP-адреса сервера. В данном случае целью является такая настройка Apache, при которой веб-сайты, поддерживаемые Apache, не увидят обратного прокси-сервера. Таким образом, Apache нужно настроить для прослушивания порта 8080 на всех IP-адресах.

После этого нужно отредактировать стандартный виртуальный хост Apache. Директива в этом файле обслуживает сайты только на порт 80, это нужно изменить.

Отключите стандартный файл:

sudo a2dissite 000-default

Создайте новый виртуальный хост на основе стандартного файла:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/001-default.conf

Откройте новый файл:

sudo nano /etc/apache2/sites-available/001-default.conf

Измените прослушиваемый порт на 8080:

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Сохраните и закройте файл. Включите новый файл:

sudo a2ensite 001-default

Перезапустите Apache.

sudo systemctl reload apache2

Убедитесь, что порт изменился:

sudo netstat -tlpn

Вывод должен выглядеть так:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address     Foreign Address      State    PID/Program name
tcp        0      0 0.0.0.0:22        0.0.0.0:*            LISTEN   1086/sshd
tcp6       0      0 :::8080           :::*                 LISTEN   4678/apache2
tcp6       0      0 :::22             :::*                 LISTEN   1086/sshd

3: Настройка модуля mod_fastcgi

По умолчанию Apache обслуживает PHP-страницы с помощью модуля mod_php. Но в данном случае нужен дополнительный модуль для PHP-FPM.

Примечание : Если вы выполняете мануал на сервере со стеком LAMP и включенным модулем mod_php, сначала отключите модуль:

sudo a2dismod php7.2.

Как настроить прокси-сервер для браузера на Ubuntu 18.04

3proxy отсутствует в репозиториях Ubuntu, поэтому для установки сначала необходимо скачать его исходник.

Для начала устанавливаем пакет программ для компиляции пакетов:

apt-get install build-essential

Переходим на официальную страницу загрузки 3proxy и копируем ссылку на версию пакета для Linux:

Mastering Proxy Settings on Ubuntu 18.04: A Comprehensive Guide 02

… используя ссылку, скачиваем пакет:

wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz

* в моем случае будет скачена версия 0.9.3.

Распакуем скачанный архив:

tar xzf 0.9.3.tar.gz

Переходим в распакованный каталог:

cd 3proxy-*

Запускаем компиляцию 3proxy:

make -f Makefile.Linux

Создаем системную учетную запись:

adduser --system --disabled-login --no-create-home --group proxy3

Создаем каталоги и копируем файл 3proxy в /usr/bin:

mkdir -p /var/log/3proxy /etc/3proxy

cp bin/3proxy /usr/bin/

Задаем права на созданные каталоги:

chown proxy3:proxy3 -R /etc/3proxy /usr/bin/3proxy /var/log/3proxy

Смотрим uid и gid созданной учетной записи:

id proxy3

Получим, примерно, такой результат:

uid=109(proxy3) gid=113(proxy3) groups=113(proxy3)

* где 109 — идентификатор пользователя; 113 — идентификатор для группы.

Создаем конфигурационный файл:

vi /etc/3proxy/3proxy.cfg

setuid 109
setgid 113
nserver 77.88.8.8
nserver 8.8.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
external 111.111.111.111
internal 111.111.111.111
daemon
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
auth none
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n

* необходимо обратить внимание на настройки setuid и setgid — это должны быть значения для созданной нами учетной записи; external и — внешний и внутренний интерфейсы (если наш прокси работает на одном адресе, то IP-адреса должны совпадать).

Как изменить настройки прокси для определенного приложения на Ubuntu 18.04

Перед тем как начать, должно быть следующее

  • Ubuntu сервер с открытыми портами80и443.
  • Установленныйdockerиdocker-composeна локальном компьютере и сервере.
  • Зарегистрированные доменные имена. В этом руководстве я буду использоватьproj1.comиproj2.comдля двух проектов.
    • ЗаписьAдляproj1.comиproj2.com, указывает на публичный IP адрес нашего сервера.
    • ЗаписьAдляwww.proj1.comиwww.proj2.com, указывает на публичный IP адрес нашего сервера.

В этом руководстве будет использоваться

  • nodejs
  • create-react-app
  • yarn
  • docker
  • docker-compose

В любой момент может понадобится

    docker ps- список запущенных контейнеров docker network ls- список всех активных и неактивных сетей созданных docker'ом docker system prune- очистка всех остановленных контейнеров и неиспользуемых сетей docker-compose down- выполняется из корня проекта. Останавливает запущенный контейнер.

Настройка на локальном компьютере

Этап 1. Создаем 2reactпроекта

В результате будет 2 простых проекта

В любом удобном месте на локальном компьютере создаемreactпроектproj1иproj2

yarn create react-app proj1yarn create react-app proj2

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

Например вsrc -> App.jsкаждого проекта вместоEdit src/App.js and save to reload.(create-react-app версия 2.1.3) напишемproj1иproj2соответственно.

Этап 2. Упаковываем каждый проект в контейнер

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

Пишем инструкции для запуска контейнера

В корне проекта создаемDockerfile

Dockerfile - это инструкция по созданию контейнера

FROM mhart/alpine-node:11 # Качаем node контейнер с docker hub RUN yarn global add serve # Устанавливаем serve для сервирования нашего проекта WORKDIR /app # Указываем главную папку в контейнере, в которой будет наш проект COPY package.json yarn.lock ./ # Копируем файлы package.json и yarn.lock в папку, указанную выше (не забываем ./) RUN yarn # Устанавливаем зависимости COPY . . # Копируем остальные файлы проекта в главную папку RUN yarn build # Компилируем проект CMD serve -s /app/build # Серверуем проект из новой папки build (по умолчанию порт 5000)

Далее в корне проекта создаемdocker-compose.yml

docker-compose - это инструкция по запуску контейнер(а/ов)

version : ' 3.7 ' # Смотреть актуальную версию docker-compose синтаксиса на оф. сайте services : # Объявляем список сервисов proj1 : # Указываем название сервиса container_name : proj1 # Указываем название контейнера (не обязательно) build : . # Запускаем Dockerfile из корня проекта environment : - NODE_ENV=production # ENV переменная production сообщит yarn, что не нужно качать зависимости для разработки, если такие имеются. : -

В корне проекта создаем.dockerignore

.git node_modules build

Запускаем и проверяем контейнер

Из корня проекта выполняемdocker-compose up

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

Когда видим строку видаproj1 | INFO: Accepting connections at http://localhost:5000, можем проверить в браузереlocalhost:8080. Результатом должен бытьreactпроект с надписьюproj1.

В

Как настроить прокси-сервер для загрузки пакетов на Ubuntu 18.04

Я хочу обеспечить доступность всех узлов кластера через DNS-имена по внутренним IP-адресам, сохранив доступность разрешения обычных имен узлов в интернете. Для этого, на серверахgw-1,gw-2я разверну pdns-recursor и укажу его в качестве рекурсора на всех узлах кластера.

Базовая настройка pdns-recursor наgw-1,gw-2включает указание следующих директив:

allow-from=10.120.0.0/8, 127.0.0.0/8 etc-hosts-file=/etc/hosts.resolv export-etc-hosts=on export-etc-hosts-search-suffix=cluster

Сам файл/etc/hosts.resolvгенерируется с помощью ansible и выглядит следующим образом:

# Ansible managed 10.120.29.231 gw-1 gw-1 10.120.28.23 gw-2 gw-2 10.120.29.32 video-accessors-1 video-accessors-1 10.120.29.226 video-accessors-2 video-accessors-2 10.120.29.153 mongo-1 mongo-1 10.120.29.210 mongo-2 mongo-2 10.120.29.220 mongo-3 mongo-3 10.120.28.172 compute-1 compute-1 10.120.28.26 compute-2 compute-2 10.120.29.70 compute-3 compute-3 10.120.28.127 zk-1 zk-1 10.120.29.110 zk-2 zk-2 10.120.29.245 zk-3 zk-3 10.120.28.21 minio-1 minio-1 10.120.28.25 minio-2 minio-2 10.120.28.158 minio-3 minio-3 10.120.28.122 minio-4 minio-4 10.120.29.187 k8s-1 k8s-1 10.120.28.37 k8s-2 k8s-2 10.120.29.204 k8s-3 k8s-3 10.120.29.135 kafka-1 kafka-1 10.120.29.144 kafka-2 kafka-2 10.120.28.130 kafka-3 kafka-3 10.120.29.194 clickhouse-1 clickhouse-1 10.120.28.66 clickhouse-2 clickhouse-2 10.120.28.61 clickhouse-3 clickhouse-3 10.120.29.244 app-1 app-1 10.120.29.228 app-2 app-2 10.120.29.33 prometeus prometeus 10.120.29.222 manager manager 10.120.29.187 k8s-cp

Шаблон Ansible для генерации конфига

# {{ ansible_managed }} {% for item in groups %} {% set short_name = item.split('.') %} {{ hostvars }} {{ item }} {{ short_name }} {% endfor %} 10.120.0.1 k8s-cp

Далее необходимо сделать так, чтобы все узлы вместо DNS-рекурсоров, получаемых из настроек DHCP, использовали данные DNS-ы. В Ubuntu 18.04 используетсяsystemd-resolved, поэтому необходимо подсунуть ему требуемые серверыgw-1, gw-2. Для этого создадим на каждом хосте кластера конфигурационный файл systemd, переопределяющий поведениеsystemd-resolved, разместив его по пути/etc/systemd/network/0-eth0.network:

Name=eth0 DHCP=ipv4 DNS=10.120.28.23 10.120.29.231 Domains=cluster UseDNS=false UseDomains=false

Делает он следующее: для инструкций DHCP, полученных через eth0 будут игнорироваться DNS-серверы и поисковые домены, определенные на DHCP-сервере. Вместо этого будут использоваться серверы10.120.28.23, 10.120.29.231и поисковый домен*.cluster.

После создания данного файла требуется перезагрузить узел или сетевую подсистему узла, поскольку простой перезапускsystemd-resolvedне инициирует повторное получение данных по DHCP. Я перезагружаю хост полностью для того, чтобы убедиться в корректном поведении при старте узла.

При успешной инициализацииsystemd-resolve --statusвыдаст следующий листинг:

Global DNSSEC NTA: 10.in-addr.arpa 16.172.in-addr.arpa 168.192.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa corp d.f.ip6.arpa home internal intranet lan local private test Link 3 (eth1) Current Scopes: none LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no Link 2 (eth0) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 10.120.28.23 10.120.29.231 DNS Domain: cluster

Это действие необходимо выполнить на всех узлах кластера. При корректном выполнении каждый узел сможет выполнитьping gw-1,ping gw-1.clusterи получить ответ от данных узлов по внутренним ip-адресам.