Можно ли указать прокси для всех сетевых соединений в сеансе bash? Я подозреваю, что это можно сделать с помощью ssh, но я бы предпочел не использовать его, если есть лучший способ.
2 ответа
В 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
Вы можете установить прокси, который используется большинством программ, поддерживающих 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/