# Настройка параметров прокси

## Зачем нам нужно прописывать прокси в системе?

Следующие настройки будут полезны в том случае, если у нас в сети есть прокси-сервер, через который осуществляется выход в интернет. В том случае, если настройки прокси не будут прописаны, ряд утилит не будет работать корректно, например, wget, apt и т.д.

Для виртуальных машин, работающих в колледже, и которым необходим выход в Интернет, прописывается

Существует несколько вариантов настроек прокси, каждый соответствует той утилите, для которой предназначен:

1. Глобальные настройки Proxy;
2. Настройки Proxy для браузера, основанного на Chromium;
3. Настройки Proxy для утилиты APT;
4. Настройки Proxy персонально для выполняемой программы (BASH);
5. Настройки Proxy для утилиты wget;
6. Настройки Proxy для утилиты apt-add-repository;

## Ubuntu

### Глобальные настройки <a href="#globalnye_nastroiki" id="globalnye_nastroiki"></a>

Для того, чтобы настроить прокси в Ubuntu откройте *Системные параметры*, перейдите в пункт *Сеть*. Выберите пункт *Сетевая прокси-служба*. Смените метод на *Вручную* и введите ваши настройки прокси. Минус такой настройки в том, что в случае, если у Вас прокси с авторизацией по логину и паролю, то указать эти данные невозможно, и прокси не будет работать.

Настроить прокси на системном уровне можно и через конфигурационные файлы (True UNIX-way). Для этого нужно открыть на редактирования с правами root файл `/etc/environment` (например sudo nano /etc/environment). В конец файла добавим строки:

```
https_proxy="https://user:pass@proxy:port/" 
http_proxy="http://user:pass@proxy:port/"
ftp_proxy="ftp://user:pass@proxy:port/"
socks_proxy="socks://user:pass@proxy:port/"
```

Если прокси без авторизации, то строки должны быть вида:

```
<бла-бла>_proxy="https://proxy:port/"
```

Для применения настроек придется пере-загрузиться, изменения в файле `/etc/environment` вступили в силу при запуске процесса init - родителя всех процессов в системе и именно от него все дочерние процессы унаследуют настройки прокси в переменных окружения.

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

### Firefox <a href="#firefox" id="firefox"></a>

[Firefox](https://help.ubuntu.ru/wiki/firefox) умеет использовать как глобальные настройки, так и свои собственные. Для того чтобы назначить ему прокси, откройте его окно настроек, перейдите на вкладку *Дополнительно*, далее на вкладку *Сеть* и нажмите на кнопку *Настроить* напротив надписи Настройка параметров соединения Firefox с Интернетом. Важное отличие от других программ — он умеет использовать NTLM аутентификацию (используется на Microsoft Internet Security and Acceleration Server).

### Chromium-browser <a href="#chromium-browser" id="chromium-browser"></a>

Также может использовать глобальные настройки и имеет свои. Для того чтобы назначить ему прокси персонально, откройте файл */etc/chromium-browser/default* и допишите следующие строки:

```
CHROMIUM_FLAGS="-proxy-server=адрес:порт"
```

И перезапустите браузер

### APT <a href="#apt" id="apt"></a>

В новых версиях умеет работать с глобальными настройками, но в более старых мог работать только с персональными настройками. Сообщенные настройки: в файле `/etc/apt/apt.conf` нужно указать:

```
Acquire::http::proxy "http://логин:пароль@ip_прокси:порт_прокси/";
Acquire::https::proxy "http://логин:пароль@ip_прокси:порт_прокси/";
Acquire::ftp::proxy "http://логин:пароль@ip_прокси:порт_прокси/";
Acquire::socks::proxy "http://логин:пароль@ip_прокси:порт_прокси/";
Acquire::::Proxy "true";
```

Если сервер без авторизации, то *логин:пароль@* нужно убрать.

### Bash <a href="#bash" id="bash"></a>

Само собой настройка через /etc/environment (описано выше в разделе глобальных настроек) будет работать для всех программ запущенных из терминала. Если вы хотите указать настройки персонально для запускаемой программы, то перед ее запуском нужно выполнить:

```
export http_proxy='http://логин:пароль@ip_прокси:порт_прокси/'
export ftp_proxy='http://логин:пароль@ip_прокси:порт_прокси/'
```

### wget <a href="#wget" id="wget"></a>

Дописываем в файл */etc/wgetrc* :

```
proxy-user = username 
proxy-password = password
http_proxy = http://xxx.xxx.xxx.xxx:8080/
ftp_proxy = http://xxx.xxx.xxx.xxx:8080/
use_proxy = on
```

Если прокси без авторизации, то *proxy-use*r и *proxy-password* нужно убрать

### apt-add-repository <a href="#apt-add-repository" id="apt-add-repository"></a>

Многие компании и университеты блокируют все неизвестные порты наружу. Обычно блокируется и порт 11371, используемый утилитой apt-add-repository для добавления репозиториев. Есть простое решение, как получать ключи репозиториев через 80-ый порт, который используется для доступа к web-страницам и чаще всего не блокируется.

Редактируем файл */usr/lib/python2.6/dist-packages/softwareproperties/ppa.py* (нужны привилегии root, вместо */usr/lib/python2.6* может быть версия 2.7). Ищем фразу `keyserver.ubuntu.com`, заменяем

```
hkp://keyserver.ubuntu.com
```

на

```
hkp://keyserver.ubuntu.com:80
```

В версии 16.04 достаточно иметь настроенной переменную окружения

```
https_proxy="https://user:pass@proxy:port/"
```

## Debian

### Общесистемные настройки Proxy

Для этого мы создадим файл внутри `/etc/profile.d`каталога и установим настройки прокси, которые будут работать для всех пользователей в системе Debian Linux.

```
sudo nano /etc/profile.d/proxy.sh
```

Заполните свои прокси-значения.

```
# set proxy config via profie.d - should apply for all users
# http/https/ftp/no_proxy
export http_proxy="http://username:password@ip:port/"
export https_proxy="http://username:password@ip:port/"
export ftp_proxy="http://username:password@ip:port/"
export no_proxy="127.0.0.1,localhost"

# For curl
export HTTP_PROXY="http://username:password@ip:port/"
export HTTPS_PROXY="http://username:password@ip:port/"
export FTP_PROXY="http://username:password@ip:port/"
export NO_PROXY="127.0.0.1,localhost"
```

Добавьте любой дополнительный IP-адрес, который нужно исключить, в переменные среды *NO\_PROXY* и *no\_proxy* . Когда закончите, добавьте бит выполнения в созданный скрипт.

```
sudo chmod +x /etc/profile.d/proxy.sh
```

Любой пользователь в системе, которому необходимо использовать эти настройки, должен выйти и снова войти:

```
logout
```

В качестве альтернативы создайте файл для использования во время выполнения:

```
source /etc/profile.d/proxy.sh
```

Подтвердите, что прокси был загружен в вашей среде.

```
$ env | grep -i proxy
```

### Proxy для APT

Если вам нужно установить прокси для менеджера пакетов APT, выполните настройку, как показано ниже.

```
$ sudo nano /etc/apt/apt.conf.d/80proxy
Acquire::http::proxy "http://ip:port/";
Acquire::https::proxy "https://ip:port/";
Acquire::ftp::proxy "ftp://ip:port/";
```

*Укажите правильный* IP-адрес вашего прокси-сервера. Если требуется аутентификация, установите так.

```
Acquire::http::proxy "http://<username>:<password>@<proxy>:<port>/";
Acquire::https::proxy "https://<username>:<password>@<proxy>:<port>/";
Acquire::ftp::proxy "ftp://<username>:<password>@<proxy>:<port>/";
```

### Proxy для wget

Если вы хотите настроить прокси для использования с `wget`инструментом командной строки, файл для изменения — это `~/.wgetrc` файл.

```
$ nano ~/.wgetrc                           
use_proxy = on
http_proxy = http://ip:port/ 
https_proxy = http://ip:port/ 
ftp_proxy = http://ip:port/ 
```

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

## CentOS

### Системные настройки Proxy

```shell
sudo nano /etc/environment

export http_proxy="http://USERNAME:PASSWORD@SERVER:PORT/"
export https_proxy="http://USERNAME:PASSWORD@SERVER:PORT/"
export no_proxy="127.0.0.1,localhost"
export HTTP_PROXY="http://USERNAME:PASSWORD@SERVER:PORT/"
export HTTPS_PROXY="http://USERNAME:PASSWORD@SERVER:PORT/"
export NO_PROXY="127.0.0.1,localhost"
```

Если повезло чуть меньше, и установлен только редактор vi. Инструкция будет чуть сложнее, сначала открываем файл в редакторе:

```shell
sudo vi /etc/environment
```

Далее необходимо нажать клавишу i, чтобы войти в режим редактирования, после вставляем наши заветные строчки:

```shell
export http_proxy="http://USERNAME:PASSWORD@SERVER:PORT/"
export https_proxy="http://USERNAME:PASSWORD@SERVER:PORT/"
export no_proxy="127.0.0.1,localhost"
export HTTP_PROXY="http://USERNAME:PASSWORD@SERVER:PORT/"
export HTTPS_PROXY="http://USERNAME:PASSWORD@SERVER:PORT/"
export NO_PROXY="127.0.0.1,localhost"
```

Чтобы сохранить изменения сначала нажмите `ESC`, а далее наберите `:wq`, чтобы выйти без сохранения нажмите `ESC` и наберите просто `:q`

Если вам совсем не повезло, и по какой-то причине редакторов совсем не предустановлено, то воспользуйтесь следующей командой:

```shell
sudo cat >> /etc/environment << EOFXX
export http_proxy="http://USERNAME:PASSWORD@SERVER:PORT/"
export https_proxy="http://USERNAME:PASSWORD@SERVER:PORT/"
export no_proxy="127.0.0.1,localhost"
export HTTP_PROXY="http://USERNAME:PASSWORD@SERVER:PORT/"
export HTTPS_PROXY="http://USERNAME:PASSWORD@SERVER:PORT/"
export NO_PROXY="127.0.0.1,localhost"
EOFXX
```

### Настройка для пакетных менеджеров  <a href="#d0-bd-d0-b0-d1-81-d1-82-d1-80-d0-be-d0-b9-d0-ba-d0-b0-d0-b4-d0-bb-d1-8f-d0-bf-d0-b0-d0-ba-d0-b5-d1-8" id="d0-bd-d0-b0-d1-81-d1-82-d1-80-d0-be-d0-b9-d0-ba-d0-b0-d0-b4-d0-bb-d1-8f-d0-bf-d0-b0-d0-ba-d0-b5-d1-8"></a>

Теперь настроим прокси для пакетных менеджеров `yum` и `dnf`. Для этого отредактируем файл `/etc/yum.conf`, добавив в конец следующие строки **(Fedora/CentOS/RHEL 8)**:

```toml
proxy=http://SERVER:PORT
```

Для авторизации укажите также следующие строки:

```toml
proxy_username=USERNAME
proxy_password=PASS
proxy_auth_method=basic
```

Для пользователей RHEL вам также необходимо установить прокси для доступа к содержимому RHSM:

```
$ sudo nano /etc/rhsm/rhsm.conf
# Configure
proxy_hostname = proxy.example.com
proxy_port = 8080
```

Если ваш прокси-сервер требует аутентификации, также установите

<pre><code># user name for authenticating to an http proxy, if needed
<strong>proxy_username=
</strong>
# password for basic http proxy auth, if needed
<strong>proxy_password =
</strong></code></pre>

Это основные настройки, которые вам понадобятся для использования прокси-сервера для доступа в Интернет на компьютерах с CentOS/RHEL 7 и 8 и на компьютерах с Fedora Linux.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://antons-organization-1.gitbook.io/administrirovanie-linux/setevye-nastroiki-linux/nastroika-parametrov-proksi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
