Можно ли указать прокси для всех сетевых соединений в сеансе bash? Я подозреваю, что это можно сделать с помощью ssh, но я бы предпочел не использовать его, если есть лучший способ.

2 ответа2

1

В Linux есть proxychains и proxychains-ng . Я полагаю, что в Ubuntu последняя называется proxychains4 . Использование это так:

proxychains4 some_program     # see the manual to learn about config files

или же

proxychains4 -f configfile.conf some_program

Можно ли указать прокси для всех сетевых соединений в сеансе bash?

В основном да.

proxychains4 bash

Инструмент работает с использованием переменной LD_PRELOAD для предварительной загрузки его общего объекта, который выполняет реальную работу. Прежде всего, сам bash проксируется (обычно вы не ожидаете, что ваша оболочка инициирует сетевые подключения, но Bash делает это для специальных перенаправлений, таких как foo > /dev/tcp/host/port , они будут проксироваться). Переменная находится в среде, поэтому любая команда, вызванная в этом сеансе Bash, будет затронута.

# from within our proxified Bash
wget -O /dev/null superuser.com     # also proxified

тем не мение

  • если наш проксированный Bash (или любая проксифицированная команда) порождает дочернего элемента, у которого LD_PRELOAD не указывает на нужный объект, дочерний элемент не будет проксифицирован, например:

    # from within our proxified Bash
    LD_PRELOAD="" wget -O /dev/null superuser.com     # not proxified
    
  • если наш проксированный Bash (или любая проксифицированная команда) выполняет новый процесс (возможно, новый его экземпляр) с LD_PRELOAD не указывающим на нужный объект, результирующий процесс не будет проксифицирован, например:

    # from within our proxified Bash
    unset LD_PRELOAD
    exec bash
    # now we are in non-proxified Bash, it replaced the proxified one
    wget -O /dev/null superuser.com     # not proxified
    
0

Вы можете установить прокси, который используется большинством программ, поддерживающих SOCKS (например, telnet , wget и т. П.), Экспортировав его в качестве переменной среды:

export http_proxy=http://username:password@proxyhost:port/ 
export https_proxy=https://username:password@proxyhost:port/
export ftp_proxy=http://username:password@proxyhost:port/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .