Стоит 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 "человеческий" способ настроить прокси в одном месте и забыть об этом?
По крайней мере до тех пор пока не придется сменить адрес прокси.
Настройка системы для выхода в интернет через socks5 прокси
yars,
Вот так?
#!/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 :)
это имеется ввиду http трафик
Да вот это и имеется в виду
Добавлено: 24.05.2017 15:41:02
$IPTABLES -P INPUT DROP
И надо есче добавить:
[console]
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
[/console]
Вот это:
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. Значит, к
--dport 80,8080надо добавить 443.
lone_wolf, спасибо, буду пробовать.
Добавлено: 25.05.2017 22:43:59
Нелишним будет ознакомиться с руководством.
Спасибо, почитаю.
надо добавить 443.
Добавил.
Меня еще такой вопрос интересует, пакеты на прокси то я направил, а как же быть с авторизацией?
Прокси ведь запароленный.
Для этого нужно redsocks использовать?
eth0 ! -d 192.168.0.0/24
А вот эта строчка говорит о том что мы берем пакеты с ip 192.168.0.0/24 и отправляем их на
DNAT --to 192.168.0.10:3128
Или я не правильно понял?
Или я не правильно понял?
Неправильно. Там условие -- стоит восклицательный знак(!), означающий НЕ, и далее, мы видим ключик -d (то же, что --destination). То есть, пакеты, не направленные в сеть 192.168.0.0/24 (локальная сеть).
Для этого нужно redsocks использовать?
Никак нет. Redsocks -- это надстройка над iptables, которая "упрощает" настройку, не более.
а как же быть с авторизацией?
Как? В браузере можно настроить авторизацию...
Если у вас NetworkManager, то можно в него вбить настройки прокси.
Неправильно. Там условие -- стоит восклицательный знак(!), означающий НЕ, и далее, мы видим ключик -d (то же, что --destination). То есть, пакеты, не направленные в сеть 192.168.0.0/24 (локальная сеть).
Понял, спасибо большое за разьяснение :)
Спасибо большое всем за помощь, проблема решена.
Оставлю настройки которые мне помогли, возможно кому то еще пригодится :)
redsocks.conf
Показать
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
Показать
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
sudo sh ./script_name.sh startДля отката iptables
sudo sh ./script_name.sh stop