Як змусити всі програми Linux використовувати SOCKS proxy


1

Використовуючи Linux, мені потрібен спосіб маршрутизації всього мережевого трафіку інтерфейсу enp2s0 через SOCKS4 192.168.1.2:1080 (або будь-якого проксі SOCKS для цього питання) - щось подібне до Proxifier у Windows. Проксі працює нормально, коли встановлено вручну в Chrome або Firefox.

ОС: Linux Mint 19.1

Речі, які я спробував:

  • Я встановлюю проксі вручну в мережевих налаштуваннях, але це так само, як я його не встановив; Chrome досі підключається безпосередньо. Ось знімок екрана:

  • Proxychains працює відмінно, але я повинен вручну запускати кожну програму окремо від терміналу.

Я не знаю, як використовувати redsocks або iptables (поки).

Я сподіваюся, що графічний інтерфейс, як Proxifier для Linux, але рішення на основі терміналу (CLI) є нормальним.


Ви також переглянули Redsocks2 ( github.com/semigodking/redsocks )? Це, здається, активно підтримується, і документацію легше слідувати, ніж Redsocks. Чи розглянули ви відповіді на запитання askubuntu.com/a/513956/385961 та superuser.com/a/1122572/168962 , що стосуються gsettings під Gnome та загальні змінні середовища оболонки для впливу на перенаправлення проксі-сервера на основі http?
Moreaki

Відповіді:


1

для нетерплячого просто виконайте наступне; припускаючи, що проксі є example.com:7777і це socks5 (змінити його з вашим власним пізніше)

  • спочатку встановіть redsocks sudo apt-get install redsocks

, зробіть порожній файл в будь-якому місці і назвіть його redsocks.conf (або що завгодно /etc/redsocks.conf).

  • Відредагуйте створений файл (redsocks.conf) наступним чином
base {
 log_debug = on;
 log_info = on;
 log = "stderr";
 daemon = off;
 redirector = iptables;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 12345;

    ip = example.com;
    port = 7777;
    type = socks5;
      // known types: socks4, socks5, http-connect, http-relay

    // login = username;
    // password = password;
        }

змінити за example.com 7777допомогою проксі-сервера (зауважте, що ви можете використовувати будь-який local_portінший, ніж 12345локальний порт, який ми встановимо для переспрямування трафіку на iptable, тому, якщо ви використовуєте інше, переконайтеся, що ви використовуєте його пізніше)

- тепер запустіть redsocks з адресою конфігураційного файлу наступним чином

sudo redsocks -c /etc/redsocks.conf

змінити з адресою вашого redsocks.conf (якщо ви отримуєте "bind: Address вже у використанні" спробуйте killall redsocks) ви також можете перевірити, якщо redsocks прив'язаний до локального порту 12345 зnetstat -tulpn

- Тепер, коли redsocks працює і готова, давайте змінимо правила iptables для використання redsocks. це потрібно налаштувати відповідно до ваших потреб, але якщо ви хочете перенаправляти всі пакети HTTP і HTTPS через проксі-сервер. Визначте наступні правила.

sudo iptables -t nat -N REDSOCKS

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

sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345

sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDSOCKS
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDSOCKS

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

тепер ваш HTTP і https трафік повинні бути перенаправлені example.com:7777

якщо ви хочете, щоб ваш iptables скинув використання:

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

додатковий рада: якщо у вас є vpn на вашому iphone або андроїд, ви можете використовувати його безкоштовно у вашому комп'ютері незалежно від того, що це ОС. просто підключіть додаток телефону VPN, і встановити проксі-сервер шкарпетки (в андроїд ви можете використовувати "сервери кінцевої" додаток), а потім використовувати проксі в комп'ютері, як вище, тепер всі ваші ПК трафік маршрутизується через телефон VPN. акуратний.


0

Необхідно переадресовувати весь вихідний локальний трафік iptables. Не відомо про будь-які програми з графічним інтерфейсом, які це роблять. Моє використання iptablesобмежується або дуже простими письмовими сценаріями, щоб викликати його для побудови маршрутизатора і т.д., або для виконання типового налаштування брандмауера на основі хоста ufw. Існує графічний інтерфейс для ufw( gufwуявіть, що), але я ніколи не використовував його.

Це (закрите для того, щоб бути поза темою) питання / відповідь повинні вас почати.

https://stackoverflow.com/questions/23180696/linux-iptables-redirect-outgoing-traffic-to-local-port


Переадресація трафіку на локальний порт не зробить трафік SOCKS.
Daniel B
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.