> For the complete documentation index, see [llms.txt](https://antons-organization-1.gitbook.io/administrirovanie-linux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://antons-organization-1.gitbook.io/administrirovanie-linux/setevye-nastroiki-linux/nastroika-parametrov-proksi.md).

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

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

Следующие настройки будут полезны в том случае, если у нас в сети есть прокси-сервер, через который осуществляется выход в интернет. В том случае, если настройки прокси не будут прописаны, ряд утилит не будет работать корректно, например, 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.
