Linux прокси для всех приложений

Использование 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 задать глобально прокси для всех программ?

Для всего что основывается на UDP, TCP к примеру.

Да, OpenVPN. UDP через прокси пробросить крайне трудно.

UDP через прокси пробросить крайне трудно

В линупсе, как всегда, разброд и шатания. Что-то легко подхватит переменные типа http_proxy, что-то в принципе настроек не имеет, что-то ждёт их из какого-нибудь dconf. Так что гугли прозрачный прокси, а лучший вариант действительно VPN (OpenVPN, WireGuard, etc) с маршрутами по умолчанию

Читайте также:  Удаление криптопро mac os

Есть proxychains, можно на каком то уровне его впилить по идее. Но изкоробочного — вроде нет. Как впрочем и нигде особо нет насколько я знаю. Может если токо в макоси…

Как впрочем и нигде особо нет насколько я знаю

Под оффтопик есть(был?) proxifier. Торренты, dc++ точно через него работали, udp трафик тоже мелькал. Будь у меня возможность быть безработным, я бы даже запилил подобную поделку, ибо идея простая как рубильник, и именно proxifier брал тем, что позволял ещё до кучи по имени процессов фильтры ставить.

Proxifier удобен тем, что позволяет завернуть в SOCKS5 прокси (например, Tor) программы, которые его не поддерживают: Download Master, Offline Explorer.

Глобальный прокси для всех программ — только через таблицу маршрутизации. Т.е. VPN и туннели. И то у рутовых программ будет возможность это обойти.

А вот в оффтопике — есть драйвера фильтры… бе бе бе, бе бе 🙂

можно же через iptables перенаправлять трафик на внешний прозрачный прокси.

мне пардон такие магии не доступны, но для рутрекера к трансмиссии прикручена такая строчка и она таки работает.

/sbin/iptables -t nat -A OUTPUT -p tcp -m tcp —dport 80 -d 195.82.146.120/30 -j DNAT —to-destination 163.172.*.*:3128

где последнее выражение адрес прозрачного прокси (адрес скрыл от сглаза). значит можно ??

Для всего что основывается на UDP, TCP к примеру.

А ничего что твой прокси только для http работает?

А вот и нет. Если первая часть адреса и порт такие — то его можно найти за 2^16 (65536) запросов. Это займет несколько минут.

Кроме того как можно говорить о «скрытии от сглаза», если прокси доступен снаружи по стандартному порту без авторизации? Ты им явно уже не один пользуешься.

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

В линуксе модули к iptables тоже можно писать.

данный пример работает для конкретных условий и т.д. тем более это офф.рекомендация с рутрекера.

это лишь про то что такое возможно. т.е. возможность проксифицировать трафик средствами системного фаервола есть.

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

Источник

Прозрачное Socks5 проксирование приложений в linux

Потребовалось мне как-то запустить игру, которая запускается под wine, через прокси. Поднял ssh-туннель, запустил игру через proxychains, и… игра не смогла соединиться с сервером, хотя chromium без проблем работал и показывал ip прокси. Попробовал tsocks — игра вообще не запустилась. Можно, конечно, было настроить VPN-туннель с помощью того же ssh, но сервер — VPS, под OpenVZ, у которого по умолчанию выключен TUN, что привело бы к письму в техподдержку и ожиданию.
Итак, пятиминутное гугление привело меня к заброшенному проекту Transocks, который, в отличие от proxychains и tsocks, которые подгружают свои библиотеки и перехватывают сетевые вызовы, слушает определенный порт и перенаправляет все, что в него пришло, через socks4 прокси. К сожалению, transocks у меня не собрался, и я начал гуглить дальше. Оказывается, у проекта есть два форка: transocks_ev на c и transocks_em на ruby. Первый поддерживает Socks5, не поддерживает авторизацию и UDP. Второй же поддерживает Socks5, UDP, *BSD, но тоже, вроде бы, не поддерживает авторизацию(не нашел в коде, а документации нет). Так как UDP мне не нужно, я остановился на transocks_ev.

Читайте также:  Как установить оем windows

Сборка

Собрать transocks_ev очень просто: достаточно скачать Makefile и transocks_ev.c со страницы проекта, установить libevent и выполнить
make
У нас появился бинарник transocks_ev
tranSOCKS-ev — libevent-based transparent SOCKS5-Proxy
Usage: ./transocks_ev [-f] [-p Port] [-H IP-Address] [-s port] [-S IP-Address]

-f Do not fork into background upon execution
-p Bind our server-socket to this port
-H Listen on this IP-Address for incomming connections
-s Expect SOCKS5-Server on this Port
-S Expect SOCKS5-Server on this IP-Address

Так как я поднимал ssh-туннель на порту 4441, запускаю transocks_ev с такими параметрами:
./transocks_ev -p 4445 -H 127.0.0.1 -s 4441 -S 127.0.0.1
Теперь у нас на порту 4445 висит сервер, который будет пускать все запросы через наш socks5. Немного похоже на NAT, только на определенном порту.

Настройка

Перенаправлять пакеты будем с помощью iptables. Я решил сделать подобие proxychains, чтобы можно было запустить любое приложения через прокси, а не просто проксирование по адресу или порту(хотя для игры сгодится и оно).
Создаем новую группу proxified:
sudo groupadd proxified
Редактируем /etc/sudoers так, чтобы мы могли запускать приложения под этой группой. Должно быть что-то вроде этого:
valdikss ALL=(ALL:ALL) ALL

Теперь перейдем к настройкам iptables.
sudo iptables -t nat -I OUTPUT -m owner —gid-owner proxified -p tcp -j REDIRECT —to-ports 4445
Эта команда будет перенаправлять все пакеты от приложений с группой proxified на transocks сервер.

Запуск

Запускаем приложение с группой proxified
sudo -g proxified chromium-browser

Вот и всё. Этот метод может быть использован для гарантированной проксификации всей системы, либо даже для прозрачной проксификации на роутере. Если вам нужно использовать прокси с аутентификацией, то установите 3proxy локально и укажите в нем ваш прокси как прокси сервер верхнего уровня.

Источник

Использование прокси

Содержание

В этой статье содержится описание настроек прокси-соединений для различных программ.

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

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

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

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

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

Читайте также:  Homes with large windows

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

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 адрес из командной строки:

Источник

Оцените статью