モチベーション
私のようなある程度のセキュリティ意識の高いオタクにとって、ホーム VPN サーバーをセットアップしたい理由はいくつかあります。
- 自宅のコンピュータをインターネットに (つまり潜在的な悪者に) 公開せずに、画面共有を介してアクセスします。
- IP ホワイト リストを使用してサーバーにアクセスする (セキュリティが強化された IT システムの一般的なケース)。
- 旅行中に Netflix など、郡 IP でフィルターされたものにアクセスする。
- 安全でない WiFi ネットワークからプライベートにブラウジングする。
- 制限された企業ネットワーク内でブロックされているサービスへのアクセス。
私はこれらすべてのユースケースを時々持っていますが、OpenVPN を思いどおりに動作させるために何度もイライラしながら試した後、試してみることにしました。ワイヤーガードこれは、安全な (そして高速な) 接続を提供しながら、OpenVPN や IPSec の複雑さの一部を克服することを約束するかなり新しい VPN ソフトウェアです。(私のように) 普段あまり接続をしない場合、セットアップは少し難しいかもしれません。ネットワーク関連については詳しくなく、すべてを詳しく知っているわけではないので、ここでは私の「ダミーのためのワイヤーガード」について説明します。
重要な説明
Wireguard には専用のサーバーやクライアントはなく、「ピア」だけが存在します。ここで説明するセットアップでは、一方がサーバーとして機能し、もう一方がクライアントとして機能するため、これらの用語を使用して説明します。明確にするために。
Wireguard サーバーのインストール
役人ワイヤーガードの取り付けこのページには、さまざまなプラットフォーム向けの手順が記載されています。私の Wireguard サーバーは RaspberryPi (RaspbianBuster を実行) 上にあるので、Debian の手順に従いました。これはうまくいきました。
これらの手順の残りの部分は、他の UNIX サーバーでも機能するはずです (または、より高速な場合は、Docker コンテナー内で Wireguard を実行する場合でも)。
インストールしたら、次に進みます。
Wireguard サーバーの構成、パート 1
秘密鍵を生成する
走るwg ゲンキー
名前が示すように、VPN 接続のセキュリティを確保するには、秘密キーを秘密にしておく必要があります。
この例では、6NJepbdEduV97+秘密鍵の例はこれを使用しないでください=
- するない実際のセットアップでそのキーを使用し、独自のキーを生成してください。
サーバー構成ファイル
ファイルを編集(または作成)します/etc/wireguard/wg0.conf
次のようになります:
[インターフェース]秘密鍵 = 6NJepbdEduV97+秘密鍵の例はこれを使用しないでください=住所 = 10.14.0.0/24リッスンポート = 51820# eth0 をインターネットに開かれたインターフェイスに置き換えます (たとえば、Wi-Fi の場合は wlan0 になる可能性があります)アプローチ = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A ポストルーティング -o eth0 -j マスカレードポストダウン = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D ポストルーティング -o eth0 -j マスカレード
ここで使用するのは、10.14.0.0/24
Wireguard サーバーの「アドレス」として使用します。の/24
最後に、10.14.0.1 から 10.14.0.254 までのすべての IP アドレスのサブネットを使用することを意味します。
これは自宅の LAN とは別の IP ネットワークなので、ない接続する VPN クライアントはこのネットワーク内の IP を使用し、後で設定するルーティング経由で LAN にアクセスできるようになります。
Wireguard クライアントの構成、パート 1
私の例では、macOS 用の Wireguard クライアントただし、構成ファイルの形式はすべてのクライアントで同じであるため、好みのバージョンを使用できるはずです。前述のサイトには、macOS、Android、iOS、Windows、および多数の Linux および BSD のクライアントへのリンクがあります。ワイヤーガードの取り付けページ。
まず、新しいトンネルを作成します。
macOS クライアントは、秘密鍵
新しいトンネルを作成するときにフィールドを使用します。クライアントがトンネルを作成しない場合は、次のコマンドを使用してサーバー上でトンネルを生成できます。wg ゲンキー
上で使用したコマンド。サーバー構成で使用される秘密キーと同じであってはなりません。
生成されたものをコピーする公共キー (ここでも、macOS クライアントが自動的に生成します) を使用して、サーバー設定に入力できるようにします。
Wireguard サーバーの構成、パート 2
サーバー上で編集します/etc/wireguard/wg0.conf
また。
ステップ 1 で追加した構成の下に、これを追加します。
[ピア]# 私のラップトップ (これは単なるコメントです。デバイスを識別できるように変更してください)公開鍵 = SOMETHINGSOMETHING+クライアント公開鍵ここ=許可されたIP = 10.14.0.10/32
から公開キーを入力します。クライアント。
のIPアドレス許可されたIP
サーバー上に設定したサブネット内のどの IP アドレスを決定します (10.14.0.0/24
) クライアントに使用を許可する必要があります。10.14.0.10/32
クライアントは IP を使用する必要があることを意味します10.14.0.10
したがって、一度にアクティブな接続は 1 つだけしか持つことができません。
私の意見では、これは合理的な構成です。接続したいデバイスが複数ある場合は、別々の公開鍵/秘密鍵を使用し、それぞれに異なる IP アドレスを与える必要があります。
これを追加したら、Wireguard サーバーを起動する準備が整います。これを実行するには、次のコマンドを実行します。sudo wg-クイックアップ wg0
。
次のような出力が出力されます。
[#] ip リンク追加 wg0 タイプ ワイヤーガード[#] wg setconf wg0 /dev/fd/63[#] ip -4 アドレス追加 10.14.0.0/24 dev wg0[#] ip リンク セット mtu 1420 アップ dev wg0[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A ポストルーティング -o eth0 -j マスカレード
それが完了したら、次のコマンドを実行してサーバーのステータスを確認します。sudowg
次のようなものが出力されるはずです。
インターフェース: wg0公開キー: ASDFJKASDFSERVERPublicKEyHERE=秘密鍵: (非表示)リスニングポート: 51820ピア: SOMETHINGSOMETHING+clientpublickeyhere=許可される IP: 10.14.0.10/32
コピーサーバーのステータス情報から公開キーを取得するので、それを使用してクライアントを構成できます。
Wireguard クライアントの構成、パート 2
これでサーバーが実行され、クライアントを構成するために必要なものがすべて揃いました。
前に作成したトンネルを編集し、構成を次のように変更します (前に設定した秘密キーはそのままにして、サーバー構成の公開キーと一致させます)。
[インターフェース]秘密鍵 = SOMETHINGSOMETHING+クライアント秘密鍵はこちら=住所 = 10.14.0.10/32DNS = 10.42.0.1[ピア]公開鍵 = ASDFJKASDFSERVERPublicKEYHERE=許可されたIP = 0.0.0.0/0、::/0終点 = you.example.net:51820
この構成を独自に使用する場合は、注意すべき重要な点がいくつかあります。
の
公開鍵
の公開鍵でなければなりませんサーバ。それぞれの側には独自のものがありますプライベートキーと他のサイドの公共鍵。の
住所
の中に[インターフェース]
のセクションクライアントと一致する必要があります許可されたIP
に設定されています[ピア]
サーバー上のセクション。許可されたIP
でクライアントどの IP アドレスが VPN 接続を通じてルーティングされるかを決定します。ここで使用するのは0.0.0.0/0
それを尋ねるワイルドカードとして全てトラフィックは VPN 経由で送信されます。これは、動機のセクションで説明した理由 2 ~ 5 のために必要なものです。 VPN 経由で自宅の LAN にアクセスするだけで、それ以外は通常のネットワーク接続を使用する場合は、代わりにそのネットワークを入力します。192.168.1.0/24
。::/0
IPv6 に対しても同じことを行います。の
DNS
エントリは、VPN 経由でネットワークにアクセスするときに使用される DNS サーバーを定義します。この例では、自宅 LAN 内のルーターの IP アドレスです。終点
は、Wireguard サーバーにアクセスできるホスト名 (または IP アドレス) とポート番号です。平均的な家庭 LAN がある場合は、インターネットから Wireguard サーバーにアクセスできるように、ホーム ルーターでポート転送を設定する必要があります。これがどのように行われるかはルーターごとに異なるため、これ以上詳しくは説明できません。
静的 IP を持っていない場合は、おそらく動的 DNS も設定する必要があるでしょう。
最後の仕上げ
Wireguard サーバーに接続しているクライアントが LAN (およびインターネット) に接続できるようにするには、ルーターとして機能するようにサーバーを構成する必要があります。
Raspbian では、これは編集によって行われます。/etc/sysctl.conf
そして編集net.ipv4.ip_forward
言うべきラインnet.ipv4.ip_forward=1
。この行がまだ存在しない場合は追加します。
IPv6ルーティングの場合も設定しますnet.ipv6.conf.all.forwarding=1
同じファイル内にあります。
また、再起動時に Wireguard を自動的に開始することもできます。 Raspbian では、これは以下を実行することで行われます。
sudo systemctl を有効にする wg-quick@wg0
それが完了したら、再起動してすべてが正しく読み込まれるかどうかを確認し、有効にした IP 転送が正しく読み込まれていることを確認します。
再起動後、実行すると、sudowg
以前と同じ出力が表示され、Wireguard サーバーが期待どおりに実行されていることを示します。
やってみて
それがすべて完了すると、macOS 上でこのアクティブ化ボタンを使用して接続できるようになります (機密情報は編集されています)。
すべてがうまくいけば、次のように、VPN 接続を介してデータが流れていることを示す情報が変更されるはずです。
ご覧のとおり、複数のトンネル構成をセットアップしました。1 つはすべてのトラフィックを転送し、もう 1 つは家庭 LAN へのアクセスのみを許可します。
サーバーに接続して実行するとsudowg
、次のようなものが表示されるはずです。
インターフェース: wg0公開キー: ASDFJKASDFSERVERPublicKEyHERE=秘密鍵: (非表示)リスニングポート: 51820ピア: SOMETHINGSOMETHING+clientpublickeyhere=エンドポイント: 11.22.44.88:55393許可される IP: 10.14.0.10/32最新のハンドシェイク: 51 秒前転送: 受信 284.68 KiB、送信 421.42 KiB
謝辞
フレンドリーな人たちに集まってもらった後でこれを書きました#ワイヤーガード
Channel onFreenode (IRC) は、Wireguard をより深く理解するのに役立ちます。ありがとう、皆さん。
この文書とそのイラストは、次の条件に基づいて公開されています。クリエイティブ・コモンズ CC0、したがって誰でも自由に使用できます。