- Использование прокси
- Содержание
- Глобальные настройки
- Firefox
- Chromium-browser
- apt-add-repository
- Как настроить прокси в Linux
- Рассмотрим настройку переменных для использования прокси
- Тестирование работы
- Использование HTTP proxy и SOCKS в Linux
- curl: передача данных через proxy
- wget: закачка файлов через proxy
- ssh: доступ к серверам
- Соксификатор dante
- DNS запросы через proxy
- Лучшие прокси серверы Linux
- 1. Squid
- 2. Privoxy
- 3. Polipo
- 4. TinyProxy
- 5. 3Proxy
- 6. Gate.js
- 7. Varnish Cache
- 8. Nginx
- Выводы
- Основы прозрачного проксирования с использованием 3proxy и iptables/netfilter или как «пустить всё через прокси»
- Установка 3proxy и запуск обычного прокси-сервера
- Настройка и запуск конфигурации Transparent Proxy NAT
- Настройка и запуск конфигурации NAT + Transparent Proxy
- Настройка и запуск конфигурации Transparent Proxy via router
Использование прокси
Содержание
В этой статье содержится описание настроек прокси-соединений для различных программ.
Глобальные настройки
Для того, чтобы настроить прокси в Ubuntu откройте Системные параметры, перейдите в пункт Сеть. Выберите пункт Сетевая прокси-служба. Смените метод на Вручную и введите ваши настройки прокси. Минус такой настройки в том, что в случае, если у Вас прокси с авторизацией по логину и паролю, то указать эти данные невозможно, и прокси не будет работать.
Настроить прокси на системном уровне можно и через конфигурационные файлы (True UNIX-way). Для этого нужно открыть на редактирования с правами root файл /etc/environment (например sudo nano /etc/environment). В конец файла добавим строки:
Если прокси без авторизации, то строки должны быть вида:
Для применения настроек придется пере-загрузиться, изменения в файле /etc/environment вступили в силу при запуске процесса init — родителя всех процессов в системе и именно от него все дочерние процессы унаследуют настройки прокси в переменных окружения.
Как правила глобальной насторойки прокси достаточно для того что бы все остальные приложения работали через прокси без необходимости настраивать прокси внутри приложения. Однако некоторые приложения не умеют работать с глобальными настройками или им нужны особенные настройки.
Firefox
Firefox умеет использовать как глобальные настройки, так и свои собственные. Для того чтобы назначить ему прокси, откройте его окно настроек, перейдите на вкладку Дополнительно, далее на вкладку Сеть и нажмите на кнопку Настроить напротив надписи Настройка параметров соединения Firefox с Интернетом. Важное отличие от других программ — он умеет использовать NTLM аутентификацию (используется на Microsoft Internet Security and Acceleration Server).
Chromium-browser
Также может использовать глобальные настройки и имеет свои. Для того чтобы назначить ему прокси персонально, откройте файл /etc/chromium-browser/default и допишите следующие строки:
И перезапустите браузер
В новых версиях умеет работать с глобальными настройками, но в более старых мог работать только с персональными настройками. Сообщенные настройки: в файле /etc/apt/apt.conf нужно указать:
Если сервер без авторизации, то логин:пароль@ нужно убрать.
Само собой настройка через /etc/environment (описано выше в разделе глобальных настроек) будет работать для всех программ запущенных из терминала. Если вы хотите указать настройки персонально для запускаемой программы, то перед ее запуском нужно выполнить:
Дописываем в файл /etc/wgetrc :
Если прокси без авторизации, то proxy-user и proxy-password нужно убрать
apt-add-repository
Многие компании и университеты блокируют все неизвестные порты наружу. Обычно блокируется и порт 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 , заменяем
В версии 16.04 достаточно иметь настроенной переменную окружения
© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.
Источник
Как настроить прокси в Linux
Прокси-сервер или proxy — в переводе с англ. «представитель» — сервер как комплекс программ в компьютерных сетях, позволяющий клиентам выполнять косвенные запросы к другим сетевым службам. В рамках данного материала прокси понимается сервер выполняющий доступ к глобальной сети интернет.
Проще всего для использования прокси в командной строке, но в зависимости от типа трафика, Вы можете определить переменные окружения http_proxy, https_proxy или ftp_proxy.
Практически все утилиты командой строки, такие как curl, wget, ssh, apt-get, ftp, wget, yum и прочие, используют данные переменные.
Рассмотрим настройку переменных для использования прокси
Используйте следующий синтаксис для настройки таких типов трафика как http, https и ftp из командной строки:
$ export ftp_proxy=»http://proxy-server:port»
$ export http_proxy=»http://proxy-server:port»
$ export https_proxy=»https://proxy-server:port»
Используйте следующий синтаксис, если прокси-сервер требует аутентификацию:
$ export http_proxy=»http://user:pass@proxy-server:port»
$ export https_proxy=»https://user:pass@proxy-server:port»
$ export ftp_proxy=»http://user:pass@proxy-server:port»
Если Ваш пароль содержит спец. символы, Вы должны заменить их на ASCII коды.
Например символ собаки «@», должен быть заменен на «%40» (т. е. p@ss = p%40ss).
Тестирование работы
Используйте следующую команду для проверки текущих переменных прокси:
$ env | grep -i proxy
Можно проверить работу прокси, узнав ваш внешний IP адрес из командной строки:
Источник
Использование HTTP proxy и SOCKS в Linux
В Linux существует много полезных консольных команд, которые при необходимости хотелось бы запустить через proxy. Некоторые приложения имеют встроенную поддержку proxy, а некоторые нет. Далее описано как пользоваться востребованными утилитами через proxy, даже теми, которые этой поддержки не имеют.
curl: передача данных через proxy
curl имеет полноценную поддержку как HTTP proxy так и SOCKS.
Для тестирования возможно использовать proxy сервера из бесплатных списков (socks — sockslist.net, и HTTP proxy — proxyhttp.net). Проверка IP адреса будет производиться с помощью ресурса check-host.net
Часть параметров curl можно записать в файл
С помощью time и curl также можно замерить время отклика сервера:
Результат будет выглядеть так:
wget: закачка файлов через proxy
wget имеет встроенную поддержку proxy. Недостаток лишь в том, что только поддержку HTTP proxy. Для использования совместно с SOCKS рекомендуется использовать соксификатор dante.
Чтобы все время не указывать —proxy-user и —proxy-password можно их прописать в файл
ssh: доступ к серверам
Для доступа к серверам через ssh и proxy также лучше использовать соксификатор dante.
Соксификатор dante
С помощью socksify можно направить через proxy почти любое приложение, не только консольное.
Чтобы все время не вводить данные о proxy можно создать файл /etc/socks.conf
Пример для SOCKS:
Пример для HTTP proxy с авторизацией:
А также экспортировать переменные SOCKS_USERNAME и SOCKS_PASSWORD, если для SOCKS или HTTP proxy требуется авторизация:
DNS запросы через proxy
Часто требуется чтобы и преобразование имен происходило через proxy. Если использовать dante, то запрос на преобразование имен идет и через proxy, и через именной сервер указанный в /etc/resolv.conf . Понять почему же идет два одинаковых запроса вместо одного не удалось. Поэтому можно предложить два варианта:
1) Закомментировать именные сервера в файле /etc/resolv.conf, чтобы преобразование имен шло только через proxy. Это отразится на всей системе.
2) Изменить /etc/resolv.conf и выставить именные сервера необходимой страны, или просто отличные от серверов провайдера. Например установить сервера Google:
Чтобы данные не были перезаписаны именными серверами провайдера (при переподключении), можно запретить обновление списка именных серверов сетевому менеджеру (NetworkManager/wicd) или DHCP-клиенту (спасибо ergil за корректировку).
Или воспользоваться «грубым» методом — запрещением изменения файла /etc/resolv.conf:
Если есть какие-то дополнения, пожалуйста, напишите, это будет полезно узнать и применить.
Источник
Лучшие прокси серверы Linux
В современных сетях прокси серверы используются достаточно часто. Особенно они полезны на предприятиях, здесь кэширующие прокси серверы могут применяться для снижения нагрузки на сеть, увеличения пропускной способности, экономии трафика и даже для отслеживания действий пользователей и блокировки нежелательных сайтов.
Другая сфера применения прокси серверов — это веб-сайты. Они используются для кэширования сгенерированных страниц, чтобы ускорить загрузку сайтов. В этой статье мы рассмотрим лучшие прокси серверы для Linux, которые вы можете использовать в своих конфигурациях.
1. Squid
Squid — это лучший прокси серевер для Linux с поддержкой таких протоколов, как: HTTP, HTTPS, FTP и многих других. Он позволяет повысить пропускную способность сети и сократить время отклика сайтов путем кэширования ресурсов и страниц. Страницы и файлы, которые запрашиваются часто могут быть использованы повторно. Вы можете настроить кэширование как в оперативную память, так и на жесткий диск, если нужно кэшировать много данных при медленном интернете.
Кроме того, в Squid есть очень широкие возможности контроля доступа к сетевым ресурсам. Вы можете блокировать не только банальные запросы к доменам или загрузку файлов определенных форматов, но и доступ к сети в определенное время, работу протоколов и портов, а также многое другое. Squid поддерживает не только операционную систему Linux, но и Windows. Изначально программа могла работать только в Linux, но затем была портирована и для Windows. Мы уже рассматривали настройку Squid в Ubuntu в одной из предыдущих статей.
2. Privoxy
Это ещё один кэширующий прокси сервер Linux, который устанавливается на стороне клиента. Поддерживаются все основные веб-протоколы. Но он направлен больше не на кэширование контента, а на фильтрацию и защиту конфиденциальности пользователей. С помощью него вы можете изменять интернет-страницы, вырезать рекламу, управлять cookies, ограничивать доступ к некоторым веб-сайтам, а также удалять любой нежелательный контент, управлять отправляемыми заголовками браузера.
В отличие от Squid программа настраивается через веб-интерфейс, и надо сказать, что достаточно удобный. Хотя в некоторых пунктах можно запутаться. При включенном прокси его настройка будет доступна по адресу config.privoxy.org. Кроме веб-интерфейса, можно использовать конфигурационный файл, но он намного сложнее.
3. Polipo
Небольшой, но быстрый кэширующий прокси сервер с открытым исходным кодом, поддерживающий протокол HTTP и DNS. Polipo можно использовать для фильтрации рекламы, повышения приватности или ускорения работы веб-сайтов с помощью кэширования страниц. Также как и Privoxy он рассчитан больше на обеспечение приватности. Настройка программы выполняется через веб-интерфейс, но кроме него, есть несколько графических оболочек, для интерактивного взаимодействия с программой. Поддерживается как Linux, так и Windows.
4. TinyProxy
TinyProxy — это очень простой и легкий прокси сервер с открытым исходным кодом для операционных систем Unix. Он разработан, чтобы быть маленьким и очень быстрым и поддерживает протоколы HTTP и HTTPS. Несмотря на легковесность этот прокси сервер linux поддерживает все необходимые функции, такие как удаленный доступ с помощью веб-интерфейса, фильтрация доступа к ресурсам, фильтрация на основе URL и другое.
5. 3Proxy
Это простой, универсальный прокси сервер, рассчитанный больше на контроль доступа к ресурсам. Поддерживаются протоколы работы HTTP, HTTPS, FTP и SOCKS причём для каждого протокола можно настроить и запустить отдельный сервис. Для контроля доступа можно использовать ACL списки. Доступ к прокси можно ограничивать по паролю. Для мониторинга активности пользователей можно использовать лог файл.
6. Gate.js
Gate.js — это что-то новое и очень интересное. Это полнофункциональный кэширующий прокси сервер, написанный на JavaScript с использованием Node.js. Он написан с нуля и призван заменить Squid и Nginx. Он позволяет кэшировать контент, облегчая работу веб-серверам, а также ускоряя загрузку сайтов на стороне клиента. Его главная особенность в масштабируемости, поскольку программа написана на интерпретируемом языке, она может быть легко дополнена.
7. Varnish Cache
В отличие от вышеперечисленных программ, этот прокси сервер рассчитан больше для работы на стороне сервера. Он предназначен для ускорения веб-сайтов. Его современная архитектура дает ему значительную производительность. Varnish Cache хранит веб-страницы в памяти сервера, чтобы программа веб-сервера Apache или Nginx не генерировала ее еще раз. Веб-сервер только обновляет страницы при изменении содержимого. Получение содержимого из памяти выполняется намного быстрее чем полная генерация.
8. Nginx
Все знают Nginx как отличный веб-сервер, рассчитанный на работу под большой нагрузкой. Но кроме этого, он может использоваться в качестве прокси сервера. Nginx не умеет кэшировать или фильтровать содержимое страниц. Но его задача принимать запросы от клиентов на сервере, передача их другим программам, а затем возврат ответа клиенту. Nginx выгодно использовать, потому что эта программа оптимизирована для максимальной производительности и может принимать до 10 000 запросов от пользователей одновременно.
Выводы
В этой статье мы рассмотрели лучшие прокси серверы Linux, возможно, это далеко не все программы, которые стоило бы добавить в этот список. Какие прокси серверы вы используете в своих системах? Какие считаете лучшими? Напишите в комментариях!
Источник
Основы прозрачного проксирования с использованием 3proxy и iptables/netfilter или как «пустить всё через прокси»
В данной статье хотелось бы раскрыть возможности прозрачного проксирования, которое позволяет абсолютно незаметно для клиентов перенаправлять весь либо часть трафика через внешние прокси-серверы.
Когда я начинал решать данную задачу то столкнулся с тем, что её реализация имеет одну существенную проблему — протокол HTTPS. В старые добрые времена особых проблем с прозрачным проксированием HTTP не возникало, но при проксировании HTTPS браузеры сообщают о вмешательстве в протокол и на этом счастье заканчивается.
В распространенных инструкциях к прокси-серверу Squid предлагают даже сгенерировать собственный сертификат и установить его клиентам, что полный бред как минимум нерационально и выглядит как MITM — атака. Я знаю, что Squid уже что-то подобное умеет делать, но речь в этой статье о проверенном и рабочем способе с использованием 3proxy от уважаемого 3APA3A.
Далее мы подробно рассмотрим процесс сборки 3proxy из исходников, его настройку, полное и выборочное проксирование с использованием NAT, распределение канала на несколько внешних прокси-серверов, а также использование роутера и статических маршрутов. В качестве ОС используем Debian 9 x64. Начинаем!
Установка 3proxy и запуск обычного прокси-сервера
1. Устанавливаем ifconfig (из пакета net-tools)
apt-get install net-tools
2. Устанавливаем Midnigth Commander
apt-get install mc
3. У нас сейчас 2 интерфейса:
enp0s3 — внешний, смотрит в интернет
enp0s8 — внутренний, должен смотреть в локальную сеть
В других Debian-based дистрибутивах интерфейсы обычно называются eth0 и eth1.
ifconfig -a
enp0s3: flags=4163 mtu 1500
inet 192.168.23.11 netmask 255.255.255.0 broadcast 192.168.23.255
inet6 fe80::a00:27ff:fec2:bae4 prefixlen 64 scopeid 0x20 ether 08:00:27:c2:ba:e4 txqueuelen 1000 (Ethernet)
RX packets 6412 bytes 8676619 (8.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1726 bytes 289128 (282.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s8: flags=4098
mtu 1500
ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Интерфейс enp0s8 на данный момент не используется, мы его включим, когда захотим использовать конфигурацию Proxy NAT или NAT. Именно тогда логичным будет назначить ему статический ip.
4. Приступим к установке 3proxy
4.1 Установка базовых пакетов для компиляции 3proxy из исходников
# apt-get install build-essential libevent-dev libssl-dev -y
4.2. Создадим папку для скачивания архива с исходниками
# mkdir -p /opt/proxy
4.3. Перейдем в эту папку
4.4. Теперь загрузим последний пакет 3proxy. На момент написания статьи последней стабильной версией была 0.8.12 (18/04/2018) Скачаем её с официального сайта 3proxy
root@debian9:/opt/proxy# wget https://github.com/z3APA3A/3proxy/archive/0.8.12.tar.gz
4.5. Распакуем скачанный архив
root@debian9:/opt/proxy# tar zxvf 0.8.12.tar.gz
4.6. Переходим в распакованный каталог для сборки программы
root@debian9:/opt/proxy# cd 3proxy-0.8.12
4.7. Далее нужно добавить строчку в файл заголовка, чтобы наш сервер был полностью анонимным (реально работает, всё проверено, ip клиентов скрываются)
root@debian9:/opt/proxy/3proxy-0.8.12# nano +29 src/proxy.h
#define ANONYMOUS 1
Нажимаем Ctrl+x и Enter, чтобы сохранить изменения.
4.8. Приступим к сборке программы
root@debian9:/opt/proxy/3proxy-0.8.12# make -f Makefile.Linux
Ошибок нет, продолжаем.
4.9. Установим программу в систему
root@debian9:/opt/proxy/3proxy-0.8.12# make -f Makefile.Linux install
4.10. Переходим в корневой каталог и проверяем, куда установилась программа
# whereis 3proxy
3proxy: /usr/local/bin/3proxy /usr/local/etc/3proxy
4.11. Создадим папку для конфигурационных файлов и логов в домашнем каталоге пользователя
# mkdir -p /home/joke/proxy/logs
4.12. Переходим в каталог, где должен быть конфиг
4.13. Создаем пустой файл и копируем туда конфиг
root@debian9:/home/joke/proxy# cat > 3proxy.conf
Для сохранения нажимаем Ctrl + Z
4.14. Создадим pid — файл, чтобы не было ошибок при запуске.
root@debian9:/home/joke/proxy# cat > 3proxy.pid
Для сохранения нажимаем Ctrl + Z
4.15. Запускаем прокси сервер!
root@debian9:/home/joke/proxy# 3proxy /home/joke/proxy/3proxy.conf
4.16. Посмотрим, слушает ли сервер порты
/home/joke/proxy# netstat -nlp
Как и было написано в конфиге, веб-прокси слушает у нас порт 8080, Socks5-прокси — 3128.
4.17. Для автозапуска службы прокси после перезагрузки нужно добавить её в cron.
root@debian9:/home/joke/proxy# crontab -e
@reboot /usr/local/bin/3proxy /home/joke/proxy/3proxy.conf
Нажимаем Enter, так как cron должен видеть символ конца строки и сохраняем файл.
Должно быть сообщение о установке нового crontab-а.
crontab: installing new crontab
4.18. Перезагрузим систему и попробуем подключиться через браузер к прокси. Для проверки используем браузер Firefox (для веб-прокси) и дополнение FoxyProxy для socks5 с аутентификацией.
4.19. Проверив работу прокси после перезагрузки, можно посмотреть логи. На этом настройка прокси-сервера завершена.
Настройка и запуск конфигурации Transparent Proxy NAT
В данной конфигурации все устройства внутренней сети будут прозрачно работать в интернете через удаленный прокси-сервер. Абсолютно все tcp-соединения будут перенаправляться в один либо несколько (реально расширяет ширину канала, пример конфигурации №2!) прокси-серверов. Служба DNS будет использовать возможности 3proxy (dnspr). UDP наружу «ходить» не будет, так как мы пока не используем механизм forward (по-умолчанию отключен в ядре Linux).
1. Настало время включить интерфейс enp0s8
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp
# The secondary network interface
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.201.254
netmask 255.255.255.0
Тут мы назначили интерфейсу enp0s8 статический адрес 192.168.201.254 и маску 255.255.255.0
Сохраняем конфиг Ctrl+X и перезагружаемся
2. Проверяем интерфейсы
enp0s3: flags=4163 mtu 1500
inet 192.168.23.11 netmask 255.255.255.0 broadcast 192.168.23.255
inet6 fe80::a00:27ff:fec2:bae4 prefixlen 64 scopeid 0x20 ether 08:00:27:c2:ba:e4 txqueuelen 1000 (Ethernet)
RX packets 61 bytes 7873 (7.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 65 bytes 10917 (10.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s8: flags=4163 mtu 1500
inet 192.168.201.254 netmask 255.255.255.0 broadcast 192.168.201.255
inet6 fe80::a00:27ff:fe79:a7e3 prefixlen 64 scopeid 0x20 ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 648 (648.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3. Всё получилось, теперь необходимо настроить 3proxy для прозрачного проксирования.
# cd /home/joke/proxy/
root@debian9:/home/joke/proxy# cat > 3proxytransp.conf
4. Теперь запускаем 3proxy с новым конфигом
root@debian9:/home/joke/proxy# /usr/local/bin/3proxy /home/joke/proxy/3proxytransp.conf
5. Снова добавим в crontab
root@debian9:/home/joke/proxy# crontab -e
@reboot /usr/local/bin/3proxy /home/joke/proxy/3proxytransp.conf
6. Посмотрим, что теперь слушает наш прокси
root@debian9:
7. Теперь прокси готов принимать любые TCP-соединения на порту 888, DNS на порту 53, чтобы потом их перенаправить в удаленный socks5 — прокси и DNS Гугл 8.8.8.8. Нам осталось настроить правила netfilter (iptables) и DHCP для выдачи адресов.
8. Установим пакет iptables-persistent и dhcpd
# apt-get install iptables-persistent isc-dhcp-server
9. Правим файл запуска dhcpd
root@debian9:
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks…
option domain-name «example.org»;
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
# A slightly different configuration for an internal subnet.
subnet 192.168.201.0 netmask 255.255.255.0 <
range 192.168.201.10 192.168.201.250;
option domain-name-servers 192.168.201.254;
option routers 192.168.201.254;
option broadcast-address 192.168.201.255;
default-lease-time 600;
max-lease-time 7200;
>
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 389/sshd
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 310/3proxy
tcp6 0 0 . 22 . * LISTEN 389/sshd
udp 0 0 0.0.0.0:20364 0.0.0.0:* 393/dhcpd
udp 0 0 0.0.0.0:53 0.0.0.0:* 310/3proxy
udp 0 0 0.0.0.0:67 0.0.0.0:* 393/dhcpd
udp 0 0 0.0.0.0:68 0.0.0.0:* 405/dhclient
udp6 0 0 . 31728 . * 393/dhcpd
raw 0 0 0.0.0.0:1 0.0.0.0:* 393/dhcpd
12. Осталось перенаправить все tcp запросы на порт 888 и сохранить правило в iptables
# iptables -t nat -A PREROUTING -s 192.168.201.0/24 -p tcp -j REDIRECT —to-ports 888
13. Для расширения полосы канала можно использовать сразу несколько прокси-серверов. Общая сумма должна быть 1000. Новые соединения устанавливаются с вероятностью 0.2, 0.2, 0.2, 0.2, 0,1, 0,1 к указанным прокси-серверам.
Примечание: если у нас web-прокси то вместо socks5 нужно писать connect, если socks4, то socks4 (socks4 НЕ ПОДДЕРЖИВАЕТ АВТОРИЗАЦИЮ ЛОГИН/ПАРОЛЬ!)
daemon
pidfile /home/joke/proxy/3proxy.pid
nserver 8.8.8.8
nscache 65536
maxconn 500
timeouts 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log D
logformat «- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T»
rotate 3
flush
auth iponly
dnspr
allow *
parent 200 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№1 3128 tester 1234
parent 200 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№2 3128 tester 1234
parent 200 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№3 3128 tester 1234
parent 200 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№4 3128 tester 1234
parent 100 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№5 3128 tester 1234
parent 100 socks5 IP_АДРЕС_ВНЕШНЕГО_ПРОКСИ№6 3128 tester 1234
plugin /opt/proxy/3proxy-0.8.12/src/TransparentPlugin.ld.so transparent_plugin
tcppm -i0.0.0.0 888 127.0.0.1 11111
Настройка и запуск конфигурации NAT + Transparent Proxy
В данной конфигурации мы будем использовать обычный механизм NAT с выборочным или полным прозрачным проксированием отдельных адресов или подсетей. Пользователи внутренней сети будут работать с определенными сервисами/подсетями даже не догадываясь, что они работают через прокси. Все https соединения работают прекрасно, никаких сертификатов генерировать/подменять не нужно.
Для начала определимся, какие подсети/сервисы мы хотим проксировать. Предположим, что внешние прокси-сервера находятся там, где работает такой сервис, как pandora.com. Теперь осталось определить его подсети/адреса.
# ping pandora.com
PING pandora.com (208.85.40.20) 56(84) bytes of data.
2. Набираем в гугле BGP 208.85.40.20
Переходим на сайт bgp.he.net/net/208.85.40.0/24#_netinfo
Видно, что искомаю подсеть это AS40428 Pandora Media, Inc
Открываем префиксы v4
Вот и искомые подсети!
199.116.161.0/24
199.116.162.0/24
199.116.164.0/23
199.116.164.0/24
199.116.165.0/24
208.85.40.0/24
208.85.41.0/24
208.85.42.0/23
208.85.42.0/24
208.85.43.0/24
208.85.44.0/24
208.85.46.0/23
208.85.46.0/24
208.85.47.0/24
3. Для уменьшения количества подсетей нужно выполнить агрегацию. Переходим на сайт ip-calculator.ru/aggregate и копируем туда наш список. Как результат — 6 подсетей вместо 14-ти.
199.116.161.0/24
199.116.162.0/24
199.116.164.0/23
208.85.40.0/22
208.85.44.0/24
208.85.46.0/23
4. Очищаем правила iptables
# iptables -F
root@debian9:
# iptables -X
root@debian9:
# iptables -t nat -F
root@debian9:
# iptables -t nat -X
Включаем механизм forward и NAT
# echo 1 > /proc/sys/net/ipv4/ip_forward
root@debian9:
# iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT
root@debian9:
# iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
root@debian9:
# iptables -t nat -A POSTROUTING -o enp0s3 -s 192.168.201.0/24 -j MASQUERADE
Чтобы forward был включен постоянно после перезагрузки изменим файл
И раскомментируем строку
Ctrl+X для сохранения файла
5. Заворачиваем подсети pandora.com в прокси
# iptables -t nat -A PREROUTING -s 192.168.201.0/24 -d 199.116.161.0/24,199.116.162.0/24,199.116.164.0/23,208.85.40.0/22,208.85.44.0/24,208.85.46.0/23 -p tcp -j REDIRECT —to-ports 888
6. Сохраним правила
Настройка и запуск конфигурации Transparent Proxy via router
В данной конфигурации прозрачный прокси-сервер может быть отдельным ПК или виртуальной машиной за домашним/корпоративным роутером. Достаточно прописать статические маршруты на роутере или устройствах и вся подсеть будет использовать прокси без необходимости каких-либо дополнительных настроек.
ВАЖНО! Необходимо, чтобы наш шлюз получал статический IP от роутера, либо был настроен на статику сам.
1. Настраиваем статический адрес шлюза (адаптер enp0s3)
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.23.2
netmask 255.255.255.0
gateway 192.168.23.254
# The secondary network interface
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.201.254
netmask 255.255.255.0
2. Разрешаем устройствам из подсети 192.168.23.0/24 использовать проксирование
# iptables -t nat -A PREROUTING -s 192.168.23.0/24 -d 199.116.161.0/24,199.116.162.0/24,199.116.164.0/23,208.85.40.0/22,208.85.44.0/24,208.85.46.0/23 -p tcp -j REDIRECT —to-ports 888
Источник