Как настроить прокси в ubuntu

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

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

Файл конфигурации содержит комментарии, описывающие, что делает каждый параметр конфигурации.

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

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

По умолчанию Squid прослушивает порт на всех сетевых интерфейсах.

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

Списки контроля доступа (ACL) позволяют вам контролировать доступ клиентов к веб-ресурсам. По умолчанию Squid разрешает доступ только с локального хоста.

Если все клиенты, которые будут использовать прокси-сервер, имеют статический IP-адрес, самый простой вариант — создать ACL, который будет включать разрешенные IP-адреса.

Вместо добавления IP-адресов в основной файл конфигурации мы создадим новый включаемый файл, в котором будут храниться IP-адреса:

После этого откройте основной файл конфигурации и создайте новый ACL с именем (первая выделенная строка) и разрешите доступ к этому ACL с помощью директивы (вторая выделенная строка):

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

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

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

Настройка Tinyproxy

Чтобы настроить прокси-сервер нужно отредактировать файл tinyproxy.conf, который располагается в каталоге /etc.

nano /etc/tinyproxy.conf

Стоит обратить внимание на следующие директивы

  • Port — порт на котором работает прокси-сервер. По умолчанию используется 8888 порт. Можно изменить на любой другой.
  • ConnectPort — данная директива определяет использование метода CONNECT позволяющего передавать зашифрованные HTTPS-соединения. По умолчанию Tinyproxy настроен на прослушивание двух портов по методу CONNECT — 443 и 563. Если выставить значение данных директив в 0 или закомментировать их, то Tinyproxy не сможет подключаться к HTTPS сайтам.
  • Listen — по умолчанию закомментирована/отключена. Listen используется для указания сетевого интерфейса, с использованием которого будет работать прокси-сервер, если на машине несколько сетевых интерфейсов и каждый из них имеет свой ip-адрес.
  • Allow — разрешает доступ к прокси-серверу. По умолчанию разрешены подключения на только localhost (Allow 127.0.0.1). Чтобы разрешить подключение к серверу нужно добавить свой ip-адрес/подсеть или ip-адрес/подсеть того человека, которому вы хотите дать доступ на сервер. Если вы хотите разрешить доступ всем подряд, то нужно добавить Allow 0.0.0.0/0 (категорически не стоит этого делать).
  • Timeout — определяет временной отрезок, по истечении которого неактивное соединение будет закрыто. Значение по умолчанию равно 600 секунд, можно уменьшить до 300 (если у вас хороший канал).
  • MaxClients — определяет максимальное количество одновременно подключенных клиентов. Если сервер используется в частных целях (не публичный), то количество можно уменьшить, например до 20.
  • MinSpareServers — минимальное количество процессов. Если количество процессов меньше минимального значения, то будут созданы новые. По умолчанию 5.
  • MaxSpareServers — максимальное количество процессов. Если количество процессов больше максимального, то лишние будут закрыты. По умолчанию 20.
  • StartServers — количество одновременно запускаемых процессов при загрузке. Значение не должно быть меньше чем MinSpareServers.

Остальные настройки оставляем со значениями по умолчанию. Tinyproxy и по дефолту неплохо работает. Настройки отвечающие за анонимность рассмотрим отдельно.

Обновлено 06.11.2018 — настройка для Ubuntu 18.04 (есть небольшие отличия).

Fire Fox

Шаги ниже одинаковы для Windows, macOS и Linux.

  1. В верхнем правом углу нажмите значок гамбургера чтобы открыть меню Firefox:

    Нажмите на .

    Прокрутите вниз до раздела « » и нажмите кнопку « .

    Откроется новое окно.

    Установите переключатель « Manual proxy configuration сервера». Введите IP-адрес своего сервера Squid в поле « HTTP Host и 3128 в поле « Port Установите флажок « Use this proxy server for all protocols кнопку OK, чтобы сохранить настройки.

На этом этапе ваш Firefox настроен, и вы можете просматривать Интернет через прокси-сервер Squid. Чтобы проверить это, откройте , введите «what is my ip» и вы увидите IP-адрес своего сервера Squid.

Чтобы вернуться к настройкам по умолчанию, перейдите в « , установите переключатель « и сохраните настройки.

Есть также несколько плагинов, которые могут помочь вам настроить параметры прокси Firefox, такие как FoxyProxy.

Шаг 2: создание тестовых бэкенд-серверов

Запуск нескольких базовых бэкенд-серверов – отличная возможность протестировать, корректно ли работает Apache. Поэтому необходимо создать два сервера, которые будут отвечать на HTTP-запросы, печатая строку текста. Один будет отвечать “Hello world!”, другой “ Hello Timeweb!”.

Примечание. Если говорить не о тестовом запуске, то обычно бэкенд-серверы отдают одинаковый тип контента. Однако для тестирования будет удобнее, если это будет два сервера с разными сообщениями, потому что так будет проще отследить, что балансировка нагрузки работает корректно.

Flask – это микрофреймворк Python, который используется для создания веб-приложений. В этом руководстве мы будем использовать Flask, так как для написания базового приложения требуется всего несколько строк. Вам необязательно знать Python для того, чтобы выполнить дальнейшие действия.

Для начала обновите список доступных пакетов:

$ sudo apt-get update

Теперь установите Pip, рекомендованная система управления пакетами Python.

$ sudo apt-get -y install python3-pip

И уже при помощи Pip установите Flask:

sudo pip3 install flask

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

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

$ nano ~/backend1.py

Скопируйте в файл текст, который приведен ниже, а затем сохраните и закройте файл.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
 return 'Hello world!'

Первые две строчки инициализируют фреймворк Flask. Единственная функция home() будет отдавать строку текста (“Hello world!”). А за то, чтобы этот текст появлялся в ответ на HTTP-запросы, отвечает @app.route(‘/’).

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

Поэтому для начала необходимо скопировать первый файл:

$ cp ~/backend1.py ~/backend2.py

Теперь откройте новый скопированный файл:

$ nano ~/backend2.py

И в последней строчке вместо “Hello world!” напишите, к примеру, “Hello Timeweb!”:

return 'Hello Timeweb!'

Команда ниже запустит первый бэкенд-сервер, его порт 8080.

$ FLASK_APP=~/backend1.py flask run --port=8080 >/dev/null 2>&1 &

Второй сервер тоже необходимо запустить, его порт 8081:

$ FLASK_APP=~/backend2.py flask run --port=8081 >/dev/null 2>&1 &

Теперь протестируем работу обоих серверов.

Сначала первого:

$ curl http://127.0.0.1:8080/

В ответ вы должны получить “Hello world!”.

Затем второй:

$ curl http://127.0.0.1:8081/

В этом случае вы увидите в терминале надпись “Hello Timeweb!”.

Примечание. Для того, чтобы закрыть оба тестовых сервера (например, после выполнения всех действий в этом руководстве), вы можете просто выполнить следующую команду: killall flask.

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

Ubuntu Terminal Proxy Settings

Like every Linux distribution, proxy settings can be set using environment variables. There are a number of variables available to use, ranging from HTTP traffic to FTP traffic.

Proxy settings can be either persistent by setting them in your profile, or non-persistent by setting them from the shell session.

Proxy Environment Variables
Variable Description
http_proxy Proxy server for HTTP Traffic.
https_proxy Proxy server for HTTPS traffic
ftp_proxy Proxy server for FTP traffic
no_proxy Patterns for IP addresses or domain names that shouldn’t use the proxy

The value for every proxy setting, except for no_proxy, uses the same template. They all require a hostname, but you may optionally specify a proxy server port and your user credentials if required to do so. For example:

proxy_http=username::port

Single User Temporary Proxy Settings

You may not always want to force Internet traffic through a proxy.  Sometimes you need to override existing settings, and you can do this safely by setting the proxy environment variables from the command line.

The following will set a proxy for HTTP and HTTPS, while preventing local traffic from going through the proxy. Our example proxy server endpoint is my.proxy.server:8080 for HTTP traffic and my.proxy.server:8081 for HTTPS.

  1. Open a Terminal window where you need proxy access.
  2. Set and export the HTTP_PROXY variable.
    export HTTP_PROXY=user::8080
  3. Set and export the HTTPS_PROXY variable.
    export HTTPS_PROXY=user::8081
  4. Set and export the NO_PROXY variable to prevent local traffic from being sent to the proxy.
    export NO_PROXY=localhost,127.0.0.1,*.my.lan.domain

IPv6

Формат такой

proxy -6 -p -i -e

  • -p — номер порта. Должен быть разный для каждого v6 адреса
  • -i — адрес для подключения
  • -e — исходящий адрес

Пример конфигурационного файла

# HTTP(S) прокси
auth strong
users user1337:CL:CoolPassword
allow *
proxy -6 -n -a -p50001 -i -e
proxy -6 -n -a -p50002 -i -e

# Socks прокси
auth strong
users user1337:CL:CoolPassword
allow *
socks -6 -p50003  -i -e
socks -64 -p50004 -i -e -e

опции , , , задают приоритет разрешения имен в адреса IPv4 и IPv6 (только IPv4, приоритет IPv4, приоритет IPv6, только IPv6). Подробности в

Важно! Если используется только v6, то с socks-сервером .

Для плагина FoxyProxy например требуется включить опцию Send DNS through SOCKS5 proxy

При правильной настройке сайт ipv6-test.com покажет следующий результат

IPv6

IPv4+IPv6

Как задать прокси для обновления пакетов в Debian/Ubuntu Linux

debAdvanced Packaging ToolAPT

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

Данный способ глобальный, так как влияет на всех пользователей системы.

В конфигурационном файле /etc/apt/apt.conf указать строку вида:

Аналогичные настройки также можно найти/указать в файлах вида /etc/apt/apt.conf.d/proxy

Включение прокси для текущего пользователя

Настройки прокси можно передать менеджеру пакетов APT через переменные окружения текущего пользователя. Для этого в профиле пользователя нужно внести изменения в файл

/.profile , добавив в конец файла сроки вида:

Обход прокси для локальных репозиториев

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

Проверено на следующих конфигурациях:

источник

Компиляция

cd ~/3proxy-0.8.10
sudo make -f Makefile.Linux

Копируем получившийся бинарный файл:

sudo mkdir /etc/3proxy
cd ~/3proxy-0.8.10/src
sudo cp 3proxy /usr/bin/

Создадим отдельного системного пользователя proxy3 от имени которого и будет работать сервер:

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

Узнаём UID и GID пользователя командой:

id proxy3

В ответ, например, получим:

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

Создаём файл настроек:

sudo nano /etc/3proxy/3proxy.cfg

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

# Запускаем сервер от пользователя proxy3
# (возможно в вашей ОС uid и gid пользователя proxy3
# будут другими. Для их определения воспользуйтесь командой id proxy3)
setgid 115
setuid 109
#
# Пропишите правильные серверы имен посмотрев их
# на своем сервере в /etc/resolv.conf
nserver 8.8.8.8
nserver 77.88.8.8
#
# Оставьте размер кэша для запросов DNS по умолчанию
nscache 65536
#
# Равно как и таймауты
timeouts 1 5 30 60 180 1800 15 60
#
# Если несколько IP на одном сервере, указываем тот,
# через который ходить во внешний мир.
# Иначе эту строку игнорируем
# external <YOURSERVERIP>
# Тоже самое, только указываем IP, который надо слушать
# Если проигнорировать, то прокси слушает все адреса на сервере
# internal <YOURSERVERIP>
#
# Указываем на расположение файла с пользователями и паролями
users $/etc/3proxy/.proxyauth
#
# укажите режим запуска как deamon
daemon
#
# путь к логам и формат лога, к имени лога будет добавляться дата создания
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
#
# Включаем авторизацию по логинам и паролям
auth cache strong
#
# Конфигурация http(s) proxy
# Запускаем анонимный (-a) HTTP-proxy на порту (-p) 3128 и
# c отключенной NTLM-авторизацией (-n)
proxy -n -p3128 -a

(Для сохранения и закрытия нажмите CTRL+X затем Y)

Комментарии начинаются со знака # и допустимы только с начала строки.

Рекомендуется вообще удалить комментарии для более стабильной работы 3proxy.

Рекомендуется также использовать другой порт вместо стандартного 3128 для прокси серверов, лучше всего из диапазона 49152—65535.

Ниже пример конфигурации без ведения логов:

setgid 115
setuid 109
nserver 8.8.8.8
nserver 77.88.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
users $/etc/3proxy/.proxyauth
daemon
auth cache strong
proxy -n -p3128 -a

Создаём файл с пользователями и паролями:

sudo nano /etc/3proxy/.proxyauth

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

## addusers in this format:
#user:CL:password
##see for documentation: 
username:CL:strongpassword

Где логин: username и пароль: strongpassword следует изменить на свои.

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

Выставляем права доступа к файлам прокси-сервера:

sudo chown proxy3:proxy3 -R /etc/3proxy
sudo chown proxy3:proxy3 /usr/bin/3proxy
sudo chmod 444 /etc/3proxy/3proxy.cfg
sudo chmod 400 /etc/3proxy/.proxyauth

Создаём папку для ведения логов и назначаем права на неё:

sudo mkdir /var/log/3proxy
sudo chown proxy3:proxy3 /var/log/3proxy

Создаём файл-инициализации:

sudo nano /etc/init.d/3proxyinit

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

#!/bin/sh
#
### BEGIN INIT INFO
# Provides: 3Proxy
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Initialize 3proxy server
# Description: starts 3proxy
### END INIT INFO

case "$1" in
start)
echo Starting 3Proxy

/usr/bin/3proxy /etc/3proxy/3proxy.cfg
;;

stop)
echo Stopping 3Proxy
/usr/bin/killall 3proxy
;;

restart|reload)
echo Reloading 3Proxy
/usr/bin/killall -s USR1 3proxy
;;
*)
echo Usage: \$0 "{start|stop|restart}"
exit 1
esac
exit 0

Ещё один вариант скрипта инициализации:

nano ~/3proxy-0.8.10/scripts/rc.d/proxy.sh

Делаем файл исполняемым:

sudo chmod +x /etc/init.d/3proxyinit

Добавляем в автозагрузку:

sudo update-rc.d 3proxyinit defaults

Запускаем прокси-сервер:

sudo /etc/init.d/3proxyinit start

В консоли мы увидим сообщение:

Starting 3Proxy

Проблемы с запуском чаще всего связаны с файлом /etc/3proxy/3proxy.cfg
в т.ч. к последней строке файла. При возникновении ошибки обычно указан порядковый номер проблемной строки.

Также мы увидим его в списке запущенных процессов в ответе на команду:

ps -ela | grep "3proxy"

Configuring Squid #

Squid can be configured by editing the configuration file. Separate configuration files can be included using the “include” directive.

The configuration file includes comments describing what each configuration option does.

Before making any changes, it is always a good idea to back up the original file:

To modify the configuration, open the file in your text editor :

By default, Squid listens on port on all network interfaces.

If you want to change the port and set a listening interface, locate the line starting with and specify the interface IP address and the new port. If no interface is specified Squid will listen on all interfaces.

/etc/squid/squid.conf

Running Squid on all interfaces and on the default port should be fine for most users.

The Access Control Lists (ACLs) allows you to control how the clients can access web resources. By default, Squid allows access only from the localhost.

If all of the clients that will use the proxy have a static IP address the simplest option is to create an ACL that will include the allowed IPs.

Instead of adding the IP addresses in the main configuration file we will create a new include file that will store the IP addresses:

/etc/squid/allowed_ips.txt

Once done open the main configuration file and create a new ACL named (first highlighted line) and allow access to that ACL using the directive (second highlighted line):

/etc/squid/squid.conf

The order of the rules is important. Make sure you add the line before .

The directive works in a similar way as the firewall rules. Squid reads the rules from top to bottom, and when a rule matches the rules below are not processed.

Whenever you make changes to the configuration file you need to restart the Squid service for the changes to take effect:

Глобальные настройки

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

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

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

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

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

Враг у ворот

Список PKH IP для блокировки

Список PKH IP для блокировки

iptables -A INPUT -s 5.61.16.0/21 -j DROP
iptables -A INPUT -s 5.61.232.0/21 -j DROP
iptables -A INPUT -s 79.137.157.0/24 -j DROP
iptables -A INPUT -s 79.137.174.0/23 -j DROP
iptables -A INPUT -s 79.137.183.0/24 -j DROP
iptables -A INPUT -s 94.100.176.0/20 -j DROP
iptables -A INPUT -s 95.163.32.0/19 -j DROP
iptables -A INPUT -s 95.163.212.0/22 -j DROP
iptables -A INPUT -s 95.163.216.0/22 -j DROP
iptables -A INPUT -s 95.163.248.0/21 -j DROP
iptables -A INPUT -s 128.140.168.0/21 -j DROP
iptables -A INPUT -s 178.22.88.0/21 -j DROP
iptables -A INPUT -s 178.237.16.0/20 -j DROP
iptables -A INPUT -s 185.5.136.0/22 -j DROP
iptables -A INPUT -s 185.6.244.0/22 -j DROP
iptables -A INPUT -s 185.16.148.0/22 -j DROP
iptables -A INPUT -s 185.16.244.0/22 -j DROP
iptables -A INPUT -s 188.93.56.0/21 -j DROP
iptables -A INPUT -s 194.186.63.0/24 -j DROP
iptables -A INPUT -s 195.211.20.0/22 -j DROP
iptables -A INPUT -s 195.211.128.0/22 -j DROP
iptables -A INPUT -s 195.218.168.0/24 -j DROP
iptables -A INPUT -s 195.218.190.0/23 -j DROP
iptables -A INPUT -s 208.87.93.0/24 -j DROP
iptables -A INPUT -s 208.87.94.0/23 -j DROP
iptables -A INPUT -s 217.20.144.0/20 -j DROP
iptables -A INPUT -s 217.69.128.0/20 -j DROP
iptables -A INPUT -s 2a00:1148::/29 -j DROP
iptables -A INPUT -s 2a00:1148::/32 -j DROP
iptables -A INPUT -s 2a00:a300::/32 -j DROP
iptables -A INPUT -s 2a00:b4c0::/32 -j DROP
iptables -A INPUT -s 2a00:1148:5::/48 -j DROP

Automate Proxy Server Settings In Linux

If you use the same proxy server settings for the , and traffic, you can use the following commands to set and unset the proxy settings:

$ export {http,https,ftp}_proxy="http://PROXY_SERVER:PORT"
$ unset {http,https,ftp}_proxy

If you use a proxy server often, you can create Bash functions as follows (add to your file):

# Set Proxy
function setproxy() {
    export {http,https,ftp}_proxy="http://PROXY_SERVER:PORT"
}

# Unset Proxy
function unsetproxy() {
    unset {http,https,ftp}_proxy
}

Reload your file.

$ source ~/.bashrc

Now use the and commands to set and unset Linux proxy server settings.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *