LinuxForum.Fans
Тема

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

Автор: i_love_linux 10 сообщений 840 просмотров
23.05.2017 23:24 #423217

Стоит 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 "человеческий" способ настроить прокси в одном месте и забыть об этом?
По крайней мере до тех пор пока не придется сменить адрес прокси.

24.05.2017 12:59 #423223

Iptables же. Первым правилом все в DROP, а потом: тыц.

24.05.2017 15:17 #423226

yars,
Вот так?

text

#!/bin/sh
INET_IFACE="eth0"
IPTABLES="/sbin/iptables"
echo 1 > /proc/sys/net/ipv4/ip_forward

$IPTABLES -P INPUT DROP

# Разрешаем трафик на loopback-интерфейсе iptables -A INPUT -i lo -j ACCEPT # Разрешаем доступ из внутренней сети наружу iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT # Запрещаем доступ снаружи во внутреннюю сеть iptables -A FORWARD -i ppp0 -o ppp0 -j REJECT # Заворачиваем http на прокси iptables -t nat -A PREROUTING -i eth0 ! -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.10:3128

Строчка "заворачиваем http на прокси" это имеется ввиду http трафик, или заворачивается трафик на http прокси?
Я в этом абсолютно ничего не понимаю *DONT_KNOW*

Слепил то что нашел в гугле и то что нашел по предоставленной вами ссылке.
Помогите пожалуйста настроить этот iptables :)

24.05.2017 16:41 #423227
"i_love_linux" написал:
это имеется ввиду http трафик

Да вот это и имеется в виду
Добавлено: 24.05.2017 15:41:02

"i_love_linux" написал:
$IPTABLES -P INPUT DROP

И надо есче добавить:
[console]
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
[/console]

25.05.2017 19:26 #423253

Вот это:

text
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
iptables -A FORWARD -i ppp0 -o ppp0 -j REJECT

вам не нужно, раз у вас сетевой интерфейс всего один. (раньше локальные сети на Ethernet называли eth0, сейчас в дистрибутивах systemd его обзывают по-всякому (привет predictable network names). Поэтому смотрите, как у вас он называется и правьте имена интерфейсов в командах соответствующим образом.
P.S. Нелишним будет ознакомиться с руководством. И да, помимо HTTP-трафика, надо "заворачивать" и HTTPS, для которого используется TCP порт 443. Значит, к

text
--dport 80,8080

надо добавить 443.

25.05.2017 22:43 #423256

lone_wolf, спасибо, буду пробовать.
Добавлено: 25.05.2017 22:43:59

"yars" написал:
Нелишним будет ознакомиться с руководством.

Спасибо, почитаю.

"yars" написал:
надо добавить 443.

Добавил.

Меня еще такой вопрос интересует, пакеты на прокси то я направил, а как же быть с авторизацией?
Прокси ведь запароленный.

Для этого нужно redsocks использовать?

26.05.2017 00:07 #423259
"i_love_linux" написал:
eth0 ! -d 192.168.0.0/24

А вот эта строчка говорит о том что мы берем пакеты с ip 192.168.0.0/24 и отправляем их на

"i_love_linux" написал:
DNAT --to 192.168.0.10:3128

Или я не правильно понял?

26.05.2017 01:58 #423261
"i_love_linux" написал:
Или я не правильно понял?

Неправильно. Там условие -- стоит восклицательный знак(!), означающий НЕ, и далее, мы видим ключик -d (то же, что --destination). То есть, пакеты, не направленные в сеть 192.168.0.0/24 (локальная сеть).

"i_love_linux" написал:
Для этого нужно redsocks использовать?

Никак нет. Redsocks -- это надстройка над iptables, которая "упрощает" настройку, не более.

"i_love_linux" написал:
а как же быть с авторизацией?

Как? В браузере можно настроить авторизацию...
Если у вас NetworkManager, то можно в него вбить настройки прокси.

26.05.2017 23:51 #423282
"yars" написал:
Неправильно. Там условие -- стоит восклицательный знак(!), означающий НЕ, и далее, мы видим ключик -d (то же, что --destination). То есть, пакеты, не направленные в сеть 192.168.0.0/24 (локальная сеть).

Понял, спасибо большое за разьяснение :)

27.05.2017 00:15 · отредактировано #423283

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

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

redsocks.conf

Показать
text

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

Показать
text

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

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

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

text
sudo sh ./script_name.sh start

Для отката iptables

text
sudo sh ./script_name.sh stop
Войдите или зарегистрируйтесь, чтобы ответить.