Как настроить прокси в 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.
-
В верхнем правом углу нажмите значок гамбургера чтобы открыть меню 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.
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.
- Open a Terminal window where you need proxy access.
- Set and export the HTTP_PROXY variable.
export HTTP_PROXY=user::8080
- Set and export the HTTPS_PROXY variable.
export HTTPS_PROXY=user::8081
- 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.