bashセッションですべてのネットワーク通信を代理する


0

bashセッションですべてのネットワーク通信にプロキシを指定することは可能ですか?私はsshを使ってそれを行うことが可能であると思うが、もっと良い方法があるなら私はむしろそれを使わない方がよい。

回答:


1

Linuxでは proxychains そして proxychains-ng。私は後者がと呼ばれていると思います proxychains4 Ubuntuで。使い方はこんな感じです:

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
    

これをありがとう。私 brew install Mac上でこれを編集しました。うまくいっていないようです。設定ファイルに記入した後 [ProxyList] への入り口 socks5 127.0.0.1 8888curl -x 127.0.0.1:8888 ipecho.net/plain そして proxychains4 curl ipecho.net/plain 異なる結果を出します。考え?
Walrus the Cat

@WalrustheCatはどうですか? curl -x socks5://127.0.0.1:8888 ipecho.net/plain
Kamil Maciorowski

うまくいく
Walrus the Cat

0

あなたはSOCKSをサポートするほとんどのプログラムによって使用されるプロキシを設定することができます。 telnetwget 環境変数としてエクスポートして

export http_proxy=http://username:password@proxyhost:port/ 
export https_proxy=https://username:password@proxyhost:port/
export ftp_proxy=http://username:password@proxyhost:port/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.