Private Internet Access

提供: ArchWiki
2024年8月16日 (金) 20:11時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎vopono: 参照を追加)
ナビゲーションに移動 検索に移動

Private Internet Access はサブスクリプションベースの VPN サービスです。

ノート: 2019年に PIA は Kape Technologies と合併しましたが、この出来事は Reddit の投稿を中心に多くの論争を巻き起こしました。しかし、合併後、PIA のインフラには以下の改善が行われました:
  • すべての PIA アプリケーションがオープンソースとして公開されました: https://github.com/pia-foss
  • WireGuard が VPN サーバーおよび VPN アプリに追加されました
  • VPN サーバーが Ubuntu 14.04 LTS から Arch Linux に移行されました
  • すべての VPN サーバーが Arch Linux 開発者のアドバイスに従い、dm-crypt によって暗号化されました
  • すべての VPN サービスが現在、ramdisk を使用してメモリ内で実行されています

手動

ノート:
  • PIA は IPv6 をサポートしていないため、IPv6 の無効化を行ってください。[1]
  • PIA のウェブサイトに記載されている PIA の DNS サーバーを使用していることを確認してください。

NetworkManager アプレットのアプローチ

インストール

PIA から OpenVPN 設定ファイルをダウンロードします。ZIP ファイルをユーザーホームディレクトリまたは将来アクセスしやすい場所に解凍します。Linux バイナリやアプリで WireGuard を使用できる場合でも、PIA はまだ設定用の WireGuard ファイルを提供していないことに注意してください。つまり、NetworkManager アプローチを使用する場合、使用できるのは OpenVPN のみです。

NetworkManager を NetworkManager アプレットおよび OpenVPN プラグインと共にインストールして設定します。

設定

  1. デスクトップ環境から NetworkManager アプレットを右クリックし、「接続の編集」をクリックします。表示されるネットワーク接続ウィンドウの左下にあるプラス記号をクリックします。
  2. 接続タイプを選択する際、ドロップダウンメニューをクリックし、「保存された VPN 設定のインポート」に到達するまでスクロールします。そのオプションを選択し、「作成」をクリックします。
  3. 先ほど OpenVPN ファイルを解凍したディレクトリに移動し、そのフォルダからファイルの一つを開きます。一般的には、特に接続したい接続に関連するファイルを開くことになります。
  4. OpenVPN ファイルの一つを開いた後、表示されるウィンドウが「<接続タイプ>の編集」であるはずです。Private Internet Access から受け取ったユーザー名とパスワードを入力します。パスワードボックスには資格情報のユーザー権限を示すアイコンがあります。設定を希望するように変更します。
  5. 次に、「詳細設定」をクリックします。「LZO データ圧縮を使用する」横のドロップダウンメニューで「adaptive」を選択し、「仮想デバイスタイプの設定」横のメニューで「TUN」が選択されていることを確認します。
  6. 次に、セキュリティタブに移動し、暗号化方式として「AES-128-CBC」を、HMAC 認証として「SHA-1」を選択します。
  7. ウィンドウの左下にある OK ボタンをクリックして、この変更を保存します。
  8. 「IPv6 設定」タブに移動し、「メソッド」で「無視」を選択します。これは PIA が IPv6 アドレスをブロックしているためです。[2]
  9. 「<接続タイプ>の編集」ウィンドウの右下にある保存をクリックします。

使用方法

OpenVPN#OpenVPN の起動を参照してください。

ヒント: 自動でログインするには、設定ファイルの auth-user-pass の後にユーザー名とパスワードを追加してください。詳しくは openvpn(8) のオプションを参照。

VPN に正常に接続できたかどうかをテストするには、この記事 で推奨されている次の 4 つのツールを参照してください:

AUR アプローチ

公式インストールスクリプト

Private Internet Access は、VPN で使用するために NetworkManager を設定するインストールスクリプトを提供しています。スクリプトを こちら からダウンロードし、実行して設定を行ってください。

ノート: このスクリプトは Python 2 を必要としますが、Python 2 は公式リポジトリで提供されなくなっています。最初に python2AUR をインストールするか、スクリプトを Python 3 用に修正してください。

公式 Linux クライアント

Private Internet Access は、Arch をサポートする公式の Linux クライアントを提供しています。クライアントを このページ からダウンロードし、ファイルを解凍します(例: pia-v81-installer-linux.tar.gz)。その後、インストールスクリプトを実行します(例: # ./pia-v81-installer-linux.sh)。

パッケージ

ヒント: `piavpn.service` を 有効化し、開始する必要があります。
  • piavpn-bin — 公式インストーラーを自動化します
|| piavpn-binAUR
|| private-internet-access-vpnAUR

インストール

private-internet-access-vpnAURインストールします。

ノート: これは python-pip を通じて直接インストールすることを意図していません。詳細は [3] を参照してください。

このパッケージは、OpenVPN 設定ファイル をダウンロードし、それらを /etc/openvpn に保存するツールを提供します。ただし、コマンドラインでの使用をサポートするために、ファイル名が更新されます。

パッケージの設定は /etc/private-internet-access に保存されます。

インストール後

接続に問題があり、connman を使用している場合は、connman-vpn.service再起動してください。

使用方法

自動ログインの有効化

ノート: これは OpenVPN の制限です。詳細は PIA のサポートセンターを参照してください: How can I make OpenVPN remember my username and password?[リンク切れ 2021-05-17]

自動ログインを有効にすると、コマンドラインでパスワードを入力せずに VPN サービスに接続できるようになります(これは networkmanager を使用する場合に必要です)。設定するには、次の手順を実行します:

  • /etc/private-internet-access/login.conf を作成します。
  • ファイルにユーザー名とパスワードを追加します。LINE 1 がユーザー名、LINE 2 がパスワードであることを確認してください。ファイルに他のテキストを追加しないでください。そうしないと機能しません(これは OpenVPN の制限です)。
/etc/private-internet-access/login.conf
USERNAME
PASSWORD
  • ファイルの権限を 0600 に変更し、所有者を root:root に設定します:
# chmod 0600 /etc/private-internet-access/login.conf
# chown root:root /etc/private-internet-access/login.conf
これにより、非 root ユーザーからのファイルアクセスが保護されます。詳細はファイルのパーミッションと属性を参照してください。自動ログインを有効にする場合、これは必須です。
  • root 権限で pia -a を実行します。
 ** networkmanager がインストールされている場合、networkmanager 用の設定ファイルが作成されます。これらを確認するには、networkmanager再起動してください。
 ** connman がインストールされている場合、connman 用の設定ファイルが作成されます。まだ実行されていない場合は connman-vpn.service開始してください。プロファイルが自動的に読み込まれます。
 ** いずれにしても、OpenVPN の .conf ファイルは /etc/openvpn/client に作成されます。
ヒント: 設定ファイル /etc/private-internet-access/pia.confopenvpn_auto_login = False を追加し、pia -a を実行することで自動ログインを無効化できます。

手動で VPN に接続する

# openvpn --config /etc/openvpn/client/{config_file_name}

{config_file_name} は /etc/openvpn ディレクトリにリストされているか、pia -l を実行して確認できます。

自動的に VPN に接続する

connman の場合

  • connman-vpn.service有効化します。
  • root 権限で pia -a を実行します(まだ実行していない場合)。
# pia -a
  • すべての connman サービスのリストを取得し、VPN 設定の名前(例: Finland)を2列目で確認します。
connmanctl services
...

*   Finland_VPN          vpn_fi_privateinternetaccess_com_privateinternetaccess_com
...
  • 選択した VPN 設定に接続し、その設定に対する connman 設定ファイルを作成します:
# connmanctl connect vpn_fi_privateinternetaccess_com_privateinternetaccess_com
  • 関連する設定ファイル(例: /var/lib/connman/vpn_fi_privateinternetaccess_com_privateinternetaccess_com/settings)を編集します。
  • AutoConnect=false 行を AutoConnect=true に変更し、保存して終了し、再起動します。
ヒント:
  • cmstAUR の詳細タブで自動接続を設定することもできます。
  • 標準の openvpn とは異なり、スリープ解除後も VPN は引き続き動作します(以下を参照)。

openvpn の場合は、OpenVPN#systemd サービスの設定を参照してください。

高度なオプション

警告: バージョン 3.1 以降、プロトコルとポートの組み合わせは機能しなくなりました。詳細は Github Issue #17 または PIA のサポートを参照してください - Which encryption/auth settings should I use for ports on your gateways?
  • /etc/private-internet-access/pia.conf を作成します。
  • [pia] セクションの設定:
オプション オプションの値 説明
openvpn_auto_login True,False デフォルト: True; OpenVPN 設定ファイルで自動ログインを有効にするかどうかを設定します。#Enabling auto-login を参照。
  • [configure] セクションの設定:
オプション オプションの値 説明
apps cm, nm デフォルト: すべて; これは設定されるアプリケーションを設定します。アプリケーションはインストールされているすべてのアプリケーションを設定しますが、ユーザーが Conman のみの設定を必要とする場合は、これを 'cm' に設定することで、NetworkManager がインストールされていても、その設定のみが生成されます。OpenVPN の設定は常に生成されます。cm = Conman; nm = NetworkManager
port リストはこちらを参照: PIA のサポート -
Which encryption/auth settings should I use for ports on your gateways?
デフォルト: 1198

トラブルシューティング

NetworkManager のアプレットを使用する

network-manager-applet を使用して接続するには、次の手順を実行します:

  1. システムトレイの NetworkManager アイコンを右クリックします
  2. 「ネットワーク接続の設定...」をクリックします
  3. 次に「追加」をクリックします
  4. 「VPN のインポート...」を選択します
  5. 使用したい設定ファイル(例: /etc/openvpn/client/CA_Toronto.conf)を参照して選択します
  6. 「開く」をクリックします
  7. Gateway: から :1198 を削除します(存在する場合)。このボックスにはドメイン名のみが含まれるべきです
  8. Username: フィールドには p1234567 のようなユーザー名を入力します
  9. Password: フィールドには対応するパスワードを入力します
  10. 次に「詳細...」をクリックします
  11. 「カスタムゲートウェイポート」を設定し、1198 に設定します
  12. 「セキュリティ」タブをクリックします
  13. 「暗号化方式(Cipher)」を AES-128-CBC に設定します
  14. 「HMAC 認証」を SHA-1 に設定します
  15. 「OK」をクリックします
  16. もう一度「OK」をクリックします

DNS リーク

DNS リークに関して(python-pia/#13 を参照)、NetworkManager は /etc/resolv.conf の設定方法により情報がリークします。以下のスクリプトは、@maximbaz によって投稿され、この問題を回避するために使用されます。リークが続く場合は、IPv6 の無効化をする必要があるかもしれません。

/etc/NetworkManager/dispatcher.d/pia-vpn

#!/bin/bash
#/etc/NetworkManager/dispatcher.d/pia-vpn

interface="$1"
status=$2

case $status in
  vpn-up)
    if [[ $interface == "tun0" ]]; then
      chattr -i /etc/resolv.conf
      echo -e "nameserver 209.222.18.222\nnameserver 209.222.18.218" > /etc/resolv.conf
      chattr +i /etc/resolv.conf
    fi
    ;;
  vpn-down)
    if [[ $interface == "tun0" ]]; then
      chattr -i /etc/resolv.conf
    fi
    ;;
esac

vopono

vopono は、一時的なネットワークネームスペースを使用して特定のアプリケーションを VPN 接続経由で実行するためのツールです。PrivateInternetAccess の自動設定生成をサポートしています。

デフォルトでキルスイッチのサポートが含まれており、ネットワークネームスペースからホストへのポート転送とプロキシサポートも備えているため、システムの他の部分に影響を与えることなく、VPN 経由でデーモンやサーバーを実行できます。

参照

ヒントとテクニック

インターネットのキルスイッチ

以下の iptables ルールは tun インターフェイス経由のネットワーク通信のみ許可します (VPN 接続を確立するときに使用する PIA の DNS サーバーへの接続とポート 1197 は例外的に許可します):

/etc/iptables/iptables.rules
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:10]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 209.222.18.222/32 -j ACCEPT
-A OUTPUT -d 209.222.18.218/32 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 1197 -j ACCEPT
-A OUTPUT -o tun+ -j ACCEPT
-A OUTPUT -j REJECT --reject-with icmp-net-unreachable
COMMIT

上記のように設定することで VPN から切断されたときに、ネットワーク通信が入ったり出たりすることがないと保証されます。

LAN 上のデバイスにもアクセスしたい場合、明示的に許可してください。例えば、192.0.0.0/24 のデバイスへのアクセスを許可するには、以下の2つのルールを (REJECT ルールの前に) 追加します:

-A INPUT -s 192.168.0.0/24 -j ACCEPT
-A OUTPUT -d 192.168.0.0/24 -j ACCEPT

さらに、上記のルールは ICMP プロトコルもブロックします。詳しくは こちらのスレッド を見てください。