LinuxでHTTPプロキシとSOCKSを使用する

Linuxには、必要に応じてプロキシ経由で実行したい便利なコンソールコマンドが多数あります。 一部のアプリケーションにはプロキシサポートが組み込まれていますが、組み込まれていないアプリケーションもあります。 以下は、プロキシを介して一般的なユーティリティを使用する方法を説明しています。



curl:プロキシを介したデータ転送



curlは、HTTPプロキシとSOCKSの両方を完全にサポートしています。



テストのために、フリーリスト( socks-sockslist.netおよびHTTPプロキシ-proxyhttp.net )からプロキシサーバーを使用できます。 IPアドレスの確認は、 check-host.netリソースを使用して行われます



#  HTTP proxy curl --proxy 11.22.33.44:5555 check-host.net/ip #  ,    HTTP proxy   curl --proxy 11.22.33.44:5555 -U username:password check-host.net/ip #  socks4 curl --socks4 11.22.33.44:5555 check-host.net/ip #  socks5 curl --socks5 11.22.33.44:5555 check-host.net/ip #  ,       SOCKS # (         "DNS   proxy") curl --socks5-hostname 11.22.33.44:5555 check-host.net/ip
      
      









一部のcurlパラメーターは〜/ .curlrcファイルに書き込むことができます

 socks5 = 11.22.33.44:5555 proxy-user = username:password user-agent = "Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
      
      







時間とカールを使用して、サーバーの応答時間も測定できます。

 #  proxy: time curl check-host.net/ip #  proxy: time curl --socks5 11.22.33.44:5555 check-host.net/ip #   : time curl habrahabr.ru
      
      







結果は次のようになります。

 real 0m0.307s user 0m0.000s sys 0m0.004s
      
      







wget:プロキシ経由でファイルをアップロードします





wgetには組み込みのプロキシサポートがあります。 唯一の欠点は、HTTPプロキシのみがサポートされることです。 SOCKSと組み合わせて使用​​する場合は、 danteソックスを使用することをお勧めします。



  #    proxy: http_proxy="http://33.22.44.44:8080" wget http://www.google.com/favicon.ico  ,   HTTPS https_proxy="http://33.22.44.44:8080" wget https://www.google.com/favicon.ico #  proxy   http_proxy="http://33.22.44.44:8080" wget --proxy-user=user --proxy-password=password http://www.google.com/favicon.ico
      
      







常に--proxy-userと--proxy-passwordを指定しないようにするには、それらを〜/ .wgetrcファイルに登録できます

 proxy-user = username proxy-password = password user-agent = Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
      
      







ssh:サーバーアクセス





sshおよびプロキシ経由でサーバーにアクセスするには、 dante sockifierを使用することをお勧めします。



ソキシファイアーダンテ





インストール:

 apt-get install dante-client #   Debian-based 
      
      







使用法:

 #     ssh   SOCKS_PASSWORD="" SOCKS_SERVER="11.22.33.44:1080" socksify ssh myserver #  ,         SOCKS_USERNAME="user" SOCKS_PASSWORD="password" SOCKS_SERVER="11.22.33.44:1080" socksify ssh myserver #    IRC  - irssi SOCKS_PASSWORD="" SOCKS_SERVER="11.22.33.44:1080" socksify irssi #  ,    HTTP proxy    CONNECT HTTP_CONNECT_PROXY="http://11.22.33.44:8080" socksify irssi
      
      







socksifyを使用すると、コンソールアプリケーションだけでなく、ほぼすべてのアプリケーションをプロキシ経由でルーティングできます。



常にプロキシデータを入力しないようにするには、ファイル/etc/socks.confを作成できます

SOCKSの例:

 route { from: 0.0.0.0/0 to: 0.0.0.0/0 via: 11.22.33.44 port = 55555 protocol: tcp udp proxyprotocol: socks_v4 socks_v5 method: none }
      
      







許可付きのHTTPプロキシの例:

 route { from: 0.0.0.0/0 to: 0.0.0.0/0 via: 11.22.33.44 port = 8080 command: connect proxyprotocol: http method: username }
      
      







また、SOCKSまたはHTTPプロキシに認証が必要な場合は、変数SOCKS_USERNAMEおよびSOCKS_PASSWORDをエクスポートします。

 export SOCKS_USERNAME="username" export SOCKS_PASSWORD="password"
      
      







プロキシを介したDNSクエリ





多くの場合、プロキシを介した名前変換も必要です。 danteを使用する場合、名前解決要求はプロキシと/etc/resolv.confで指定されたネームサーバーの両方を介して送信されます。 1つではなく2つの同一のリクエストがある理由を理解することはできませんでした。 したがって、次の2つのオプションを提供できます。

1) /etc/resolv.confファイル内のネームサーバーをコメントアウトし 、名前の変換がプロキシ経由でのみ行えるようにします。 これはシステム全体に影響します。

2) /etc/resolv.confを変更し、必要な国のネームサーバー、または単にプロバイダーのサーバーとは異なるネームサーバーを設定します。 たとえば、Googleサーバーをインストールします。

 nameserver 8.8.8.8 nameserver 8.8.4.4
      
      







プロバイダーのネームサーバーによってデータが上書きされるのを防ぐため(再接続時)、ネームサーバーのリストがネットワークマネージャー(NetworkManager / wicd)またはDHCPクライアントによって更新されるのを防ぐことができます(調整についてはergilに感謝します)。



または、「大まかな」方法を使用します-/ etc/resolv.confファイルへの変更を禁止します。

 sudo chattr +i /etc/resolv.conf
      
      







追加がある場合は、書いてください。見つけて適用すると便利です。



追加情報:

man socks.conf

男靴下

男のカール



All Articles