ネットワーク・プロキシの設定


私は私のubuntuデスクトップ上のシステム全体のプロキシを設定するスクリプトを作成しようとしていた.Linuxは、すべてのアプリケーション間でプロキシを設定するにはあまりにも困難になります.

目次
  • App Specific Proxies
  • Gnome network settings
  • Using Environment Variables
  • Configure Firewall

  • 0 .アプリケーション固有のプロキシの設定

    Most web browsers (Firefox in particular) have their own internal proxy settings. There is abundant documentation for all of these on their respective websites.


    GNOMEネットワーク設定

    If you are using Gnome, you can go to Settings > Network > Network Proxy . Select Manual and enter the proxy details.

    This the most obvious method and it covers most general use cases like using a proxy for WiFi inside a corporate or university network.


    フードの下で、この属性はgconf (maybe dconf 現代のdistrosで.端末から以下のようにします.
    gsettings set org.gnome.system.proxy mode 'manual'
    gsettings set org.gnome.system.proxy.http enabled true
    gsettings set org.gnome.system.proxy.http host 'proxy.server.addr'
    gsettings set org.gnome.system.proxy.http port proxy_port
    

    2環境変数の設定

    The previous method does not always work for shell instances. A proven way for using a proxy while working on the terminal (either while doing a simple curl, or while launching an app) is by setting environment variables like http_proxy or HTTP_PROXY to set a proxy for all http request.

    Note: you might want to set both the uppercase and the lowercase version. This is necessary because, without a proper standard, over the years apps and languages either support both (with a set of priorities) or any one of the two. This leads to some long, head scratching debugging sessions, like this one


    以下のようにシェルのインスタンスごとにこれを行うことができます.
    http_proxy="username:password@proxy_address:port" 
    curl http://www.example.com
    
    # you can skip the authentication part for an open proxy
    
    またはスマートガイであり、これと他の関連変数を内部でエクスポートする.bashrc または.zshrc ) AS
    export http_proxy="http://$username:$password@$proxy_address:$port"
    export HTTP_PROXY="http://$username:$password@$proxy_address:$port"
    
    他のrelavant変数によって
  • https_proxy / HTTPS_PROXY
  • ftp_proxy / FTP_PROXY
  • no_proxy / NO_PROXY
  • rsync_proxy / RSYNC_PROXY
  • これらの変数が適切に設定されているかどうかを確認するには、次の手順を実行します.set | grep -i proxy同様に、必要に応じて個別に設定できませんunset http_proxyボーナス
    このような気がするのなら、(proxyman)のような道具を使うことができますhttps://github.com/himanshub16/ProxyMan/ ] これは軽量シェルスクリプトで、これらの変数の設定と解除を行う簡単なインターフェイスです.
    また、このようなコマンドのプロキシを設定するような高度なステップを行いますapt update , 必要ならば.
    これは以下を加えることによってされます/etc/apt/apt.conf
    Acquire::http::Proxy "http://username:password@proxy_address:port";
    
    あなたはさらにツールのように行くことができますproxychains それはあなたチェーン複数のプロキシを聞かせて.これはtorを設定している間に使用され、カリとparrotosのようなpentests distrosでプリインストールされています.

    iptablesの使い方 Most general use cases will be satisfied by the above 2 steps.
    Even if you need to setup something like your own
    man-in-the-middle proxy ライクmitm またはtransparent proxy 単純なログ記録のためのイカのように、あなたはまだ前のステップを使用することができますし、ターミナルからのアプリを起動しながら、プロキシサーバーを指すように必要な変数を設定して
    それはほとんどが仕事です.
    しかし、あなたのプロキシを介してシステムのトラフィックのすべてを送信する場合はどうですか?
    システム全体のプロキシを設定するには、ほとんどのGoogle検索では、いくつかの形式のメソッド
    しかし、Gitlab blog それは常に動作しない、また、不要なバグのソースです.

    Full disclaimer: I haven't tried this properly myself and am also fairly new to using iptables. But, it seems like the only valid approach out there that tries to solve this specific problem
    I have kept my explanation; based on my rudimentary understanding; as short as possible
    Please reference the post mentioned below for a better explanation

    iptables ツールはnetfilter これは、システムにカスタムファイアウォールを設定するために使用されます.
    私たちのユースケースのために、我々は特定のユーザーからすべての我々の外へ行くネットワークパケットをマークして、それを我々の代理を実行しているプロセスに進めることができます.
    プロキシが独自の出力を傍受するのを防ぐために、プロキシが別々のユーザの下で実行していることを確認してください.
    ステップバイステップの手順-https://serverfault.com/a/674389/946308

    私を助けたオンラインリファレンス
  • https://unix.stackexchange.com/a/213740/428441
  • https://wiki.archlinux.org/title/Proxy_server
  • https://discourse.mitmproxy.org/t/transparent-proxying-on-a-single-machine-iptables/97
  • https://about.gitlab.com/blog/2021/01/27/we-need-to-talk-no-proxy/