Настройка системы для выхода в интернет через socks5 прокси (Настройка системы для выхода в интернет через socks5 прокси)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
Аватара пользователя
dimamid
Сообщения: 25
ОС: Linux Mint 19.3

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

Сообщение dimamid »

Стоит Ubuntu 16.04.2, имеется Socks5 прокси (запароленный)
Нужно настроить систему на работу через этот прокси.
Повторюсь, именно всю систему, так как мне нужно чтобы все приложения работали через этот прокси, а не отдельные.

Прежде чем написать сюда перелопатил терабайт информации в гугле и все безрезультатно :(

Какие действия предпринимались:
1. Запись строки socks_proxy="socks://user:pass@proxy:port/" в файл /etc/environment - чтобы изменения вступили в силу нужно перезагрузить компьютер, но после перезагрузки изза этой "чудо строчки" не запускаются сетевые сервисы (на ноуте полностью отсутствуют какие либо признаки наличия сетевых адаптеров)

2. Настройка через GUI - Настройки -> Сеть -> Прокси сервер - Режим: Настроить самостоятельно -> Узел Socks - после этих действий при попытке открыть какой либо сайт в браузерах выдает ошибку: Страница по адресу https://адрес сайта/ может быть временно недоступна или перемещена на новый адрес

3. Читал информацию про dante-client, но как я понял что для того чтобы запустить какую нибудь программу, при этом чтобы она работала через прокси, нужно в терминале писать команду socksify <имя программы>. Но такой вариант запуска программ для меня как для новичка в Linux это маразм :D

4. Читал информацию про proxychain, но насколько я понял, с помощью нее можно только консольные приложения запускать через прокси.


Исходя из всего вышесказанного назревает вопрос, есть ли в Linux, в частности в Ubuntu "человеческий" способ настроить прокси в одном месте и забыть об этом?
По крайней мере до тех пор пока не придется сменить адрес прокси.
I Love Linux
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Настройка системы для выхода в интернет через socks5 прокси

Сообщение Bizdelnick »

Боюсь, совсем универсального способа нет. Могу только дать пару советов. Во-первых, сдаётся мне, что в схеме URI надо указывать версию протокола (socks5://), и слеш в конце не нужен. Во-вторых, чем сразу настраивать глобальные переменные для всей системы, поэкспериментируйте с отдельными программами (env ALL_PROXY=socks5://user:pass@host:port curl https://unixforum.org/ >/dev/null — для curl должно сработать, с другими программами надо пробовать).

Upd. А вообще народ рекомендует использовать для этой цели redsocks.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
dimamid
Сообщения: 25
ОС: Linux Mint 19.3

Re: Настройка системы для выхода в интернет через socks5 прокси

Сообщение dimamid »

Bizdelnick писал(а):
24.05.2017 00:46
А вообще народ рекомендует использовать для этой цели redsocks.


Да, я сейчас пытаюсь настроить этот redsocks, только ничего не получается((
Вы не подскажете где можно почитать вразумительную информацию на русском об настройке redsocks для работы через socks5 прокси?
Если таковая имеется вообще))
I Love Linux
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Настройка системы для выхода в интернет через socks5 прокси

Сообщение Bizdelnick »

Я так понимаю, из интересных Вам настроек там всего пять параметров. Остальное — магия iptables. Пример с оф. сайта:

Код: Выделить всё

iptables -t nat -N REDSOCKS

# Ignore LANs and some other reserved addresses.
# See Wikipedia and RFC5735 for full list of reserved networks.
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN

# Anything else should be redirected to port 12345
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
dimamid
Сообщения: 25
ОС: Linux Mint 19.3

Re: Настройка системы для выхода в интернет через socks5 прокси

Сообщение dimamid »

Bizdelnick

Спасибо большое за помощь :thank_you:

Еще добавил правило:

Код: Выделить всё

# Any tcp connection made by `user_name' should be redirected.
iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner user_name -j REDSOCKS


Без него почему то не работало.
I Love Linux
Спасибо сказали:
Аватара пользователя
dimamid
Сообщения: 25
ОС: Linux Mint 19.3

Re: Настройка системы для выхода в интернет через socks5 прокси

Сообщение dimamid »

Спасибо большое всем за помощь! Проблема решена.

Оставлю настройки которые мне помогли, возможно кому то еще пригодится :)

redsocks.conf
Spoiler

Код: Выделить всё

base {
    log_debug = off;
    log_info = off;
    log = "file:/var/log/redsocks.log";
    daemon = on;
    redirector = iptables;
}

redsocks {
    local_ip = 0.0.0.0;
    local_port = 8123;

    ip = ip_addres;
    port = 8080;
    # Если есть авторизация
    //login = "";
    //password = "";
    type = socks5;
}


Скрипт для записи/отката iptables
Spoiler

Код: Выделить всё

IPTABLES="iptables"
REDSOCKS="redsocks"
REDSOCKSCFG="/etc/redsocks.conf"

if [ "$1" = "start" ]; then
        echo '(Re)starting redsocks...'
        pkill -U $USER redsocks 2>/dev/null
        sleep 1
        $REDSOCKS -c $REDSOCKSCFG

        iptables -t nat -N REDSOCKS
        iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
        iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
        iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
        iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
        iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
        iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
        iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
        iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN

        iptables -t nat -A REDSOCKS -p tcp --dport 80 -j REDIRECT --to-ports 8123
        iptables -t nat -A REDSOCKS -p tcp --dport 8080 -j REDIRECT --to-ports 8123
        iptables -t nat -A REDSOCKS -p tcp --dport 443 -j REDIRECT --to-ports 8123

        iptables -t nat -A OUTPUT -p tcp -j REDSOCKS

        iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDSOCKS
        iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDSOCKS
        iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDSOCKS

        echo IPtables reconfigured.
        exit 0;
elif [ "$1" = "stop" ]; then
        $IPTABLES -t nat -F
        $IPTABLES -t nat -X
        killall redsocks
        exit 0;
        echo All be back
else
        exit 1;
fi


Памятка для тех кто не силён в bash(типо меня :D )

Скрипт запускать так:
Для записи в iptables

Код: Выделить всё

sudo sh ./script_name.sh start

Для отката iptables

Код: Выделить всё

sudo sh ./script_name.sh stop
I Love Linux
Спасибо сказали:
Ответить