関連ガイド
Linux サーバーとコマンドラインツールを経路に通す方法
更新日
Linux には、用途に応じて2つの道があります。マシン全体を経路に通したい(Docker イメージの取得、海外へのアクセスが必要なサービス、無人で動くマシン)なら OpenVPN を使います。/etc/openvpn/client/ にプロファイルを1つ置き、起動時に立ち上げるだけです。いくつかのコマンド(git、pip、npm、curl)だけを通したいなら Webプロキシを使います。プロキシのアドレスを http_proxy 変数に入れるだけで、他は何も変わりません。デスクトップの Linux ではネットワークマネージャーから読み込むこともできます。このガイドでは3つの方法すべてと、認証情報ファイル、確認用のコマンドを説明します。
方法1:マシン全体を通す(OpenVPN)
- クライアントをインストールします。Debian/Ubuntu:
sudo apt install openvpnFedora:sudo dnf install openvpnArch:sudo pacman -S openvpn - サイトにログインし、OpenVPN のページから地域の .ovpn をダウンロードします。Linux 用のプロファイルには認証情報が埋め込まれていない(埋め込まれたファイルはネットワークマネージャーが受け付けないため)ので、認証情報ファイルを作ります。1行目にサイトのメールアドレス、2行目にパスワードの2行です。そして自分だけが読めるように制限します:
chmod 600 <credentials-file> - .ovpn を /etc/openvpn/client/<地域>.conf にコピーし、ファイル内の auth-user-pass の後ろに認証情報ファイルのパスを書き足します。
- 有効にして起動します:
sudo systemctl enable --now openvpn-client@<region>状態を確認します:systemctl status openvpn-client@<region>出口を確かめます。選んだ地域が表示されるはずです:curl -s https://ipinfo.io/country - 別の地域を使うには、別のプロファイルをダウンロードして別のユニットを有効にします。同時に動かすのは1つだけにしてください。
方法2:コマンドラインツールだけを通す(Webプロキシ)
このサイトの Webプロキシのページにあるプロキシのアドレスと認証情報を、そのまま環境変数に入れます(パスワードに特殊文字があれば URL エンコードしてください):export https_proxy=https://user:password@proxy-address export http_proxy=$https_proxy 以後、そのシェルの curl、wget、git、pip、npm は経路を通り、他には何も影響しません。
Docker デーモンはシェルの変数を無視します。/etc/systemd/system/docker.service.d/proxy.conf に Environment= の行を書いて docker を再起動してください。apt の場合は、/etc/apt/apt.conf.d/proxy.conf に Acquire::https::Proxy を設定します。
この方法には、そもそも切れる接続がありません。root 権限も不要で、ルーティングも変えないので、会社のサーバーや、取得を速くしたいだけの場合に向いています。カバーするのはプロキシ変数に従うプログラムです。
方法3:デスクトップ Linux ではネットワークマネージャーから
- network-manager-openvpn-gnome をインストールします(このサイトの OpenVPN のページでワンクリックするとソフトウェアセンターが開きます)。
- 設定 →「ネットワーク」→「VPN」→「+」→「ファイルからインポート」で .ovpn を選び、サイトのメールアドレスとパスワードを入力して保存します。
- 上部バーかトレイから VPN のオン・オフを切り替えます。起動時に接続したい場合は、有線または無線の接続の設定で「VPN に自動接続」にチェックを入れます。
確認とトラブル対処
- 出口:出力の country が選んだ地域になっているはずです:
curl -s https://ipinfo.io - DNS:VPN のインターフェースに、経路から配られた DNS が表示されるはずです:
resolvectl status漏れている場合は、プロファイルに dhcp-option DNS を追加するか、update-systemd-resolved スクリプトを使ってください。 - AUTH_FAILED:認証情報ファイルが間違っているか、アカウントの期限切れです。パスワードを変えたら、ファイルも更新してください。
- TLS handshake timeout(TLS ハンドシェイクのタイムアウト):サーバーへの UDP が通っていません。地域かネットワークを変えてください。クラウドサーバーでは、セキュリティグループで送信方向の UDP を許可してください。
- 中国国内のサーバーで、中国のミラーには直接つなぎたい:接続すると通信はすべて経路から出ていくので、apt / pip / npm を国内のミラーに向けるか、方法2で特定のコマンドだけを経路に通してください。
知っておくこと
- Linux マシンは、プランの同時接続台数(個人2台、ファミリー4台、ビジネス8台)のうち1台として数えられ、他の端末と枠を共有します。方法2の Webプロキシも接続ごとに数えられます。
- プロファイルと認証情報ファイルはあなたのアカウントそのものです。git リポジトリにコミットしたり、イメージに焼き込んだりしないでください。
- パスワードを変えると、古いプロファイルは仕様ですぐに無効になります。認証情報ファイルを更新してください。
- クラウドサーバーで経路を使う場合は、クラウド事業者の規約に従ってください。当サービスが記録するのは接続時間と合計通信量だけです。
よくある質問
Linux 用のプロファイルに認証情報が埋め込まれていないのはなぜですか?
認証情報が埋め込まれたプロファイルはネットワークマネージャーが受け付けず、インポートに失敗するためです。そのため Linux 用プロファイルでは入力をお任せしており、systemd で使う場合は認証情報ファイルに書きます。
Docker だけを経路に通せますか?
できます。Docker デーモンに専用のプロキシ変数を設定する(方法2)か、独自の OpenVPN を持つコンテナ(gluetun)を動かして、特定のコンテナだけが経路を通るようにします。
Linux でプライベート(Tailscale)を使うには?
公式スクリプトで1行でインストールでき、その後次のコマンドでログインします:tailscale up --login-server=<this site’s control server> マシンに外部からアクセスする必要がある場合や、一度設定したらつながったままにしておきたい場合に向いています。取得を速くしたいだけなら、OpenVPN かプロキシのほうが簡単です。
ルーターの OpenWrt でも同じですか?
OpenWrt に luci-app-openvpn を入れて .ovpn をアップロードすれば、LAN 全体が経路を通ります。このサイトのファームウェアを入れたルーターなら、そうした作業は一切不要で、アカウントでログインするだけです。