Лайфхаки

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

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 запущена, введите следующую команду, которая выведет статус службы:

    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-адресам.