MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
設定 - VPNサーバのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
設定 - VPNサーバ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == WireGuard == WireGuardは、IPv4およびIPv6接続をサポートする軽量のVPNである。<br> <br> VPNは、信頼されていないネットワークをプライベートネットワークであるかのように通過することができる。<br> また、Tailscaleの仕組みと同様に、SSHや他の機密ポートをオープンにしておく必要がないように、自社のインフラにアクセスするためにVPNを導入したいと思うかもしれない。<br> <br> WireGuardの暗号化は、ピア同士が暗号化されたトンネルを確立するための公開鍵と秘密鍵に依存している。<br> WireGuardの各バージョンでは、シンプルさ、セキュリティ、ピアとの互換性を確保するために、特定の暗号スイートが使用されている。<br> <br> それに比べて、OpenVPNやIPSec等の他のVPNソフトウェアは、TLS(Transport Layer Security)と証明書を使用して、システム間の認証と暗号化トンネルの確立を行う。<br> TLSのバージョンが異なると、何百種類もの暗号スイートやアルゴリズムがサポートされるため、様々なクライアントに柔軟に対応できる反面、TLSを使用したVPNの設定に時間がかかり、複雑で、エラーが起こりやすくなる。<br> <br><br> == Shadowsocksとは == Shadowsocksは、SOCKS5プロキシを使用してインターネットトラフィックを迂回・偽装して、検閲ブロックを突破するツールである。<br> 当初は中国のプログラマーによって開発されたため、中国のグレート・ファイアウォールを突破するのに特に役立つが、他の政権のブロックを回避するためにも使用できるという報告を受けている。<br> <br> しかし、Netflixのリージョンを変更したり、Torrentを利用したりするのであれば、VPNを利用した方がはるかに良い。<br> <br> Shadowsocksの問題点は、設定に少しコツがいることである。<br> Shadowsocksをインストールする方法はいくつかあるが、その多くはギークが作成したスクリプトを使用する必要がある。<br> <br><br> == VPNサーバの構築 (BPHの使用) == ==== BPHの概要 ==== しかし、Netflixやその他のストリーミングサービスのブロックを解除する場合、VPSを使用してもVPNの使用が検出される可能性が高いため、うまくいかない場合がある。<br> また、Torrentの利用にはセキュリティの強化が必要なため、VPSの利用は推奨しない。<br> <br> VPSとOutlineというソフトウェアを使用して、Shadowsocksプロトコルをセットアップした方がよい。<br> <br> ==== BPHサービス企業 ==== BPH(防弾ホスティング)のVPS<br> * HostMaze *: ルーマニア拠点 *: https://hostmaze.com * CockBox *: ルーマニア拠点 *: https://cockbox.org * W3Space *: バングラデシュ拠点 *: https://www.w3space.net/ * VPSAG *: キプロスに拠点を置く。サーバは、ブルガリアのNeterraを利用している。 *: https://www.vpsag.com/ * Vultr *: https://www.vultr.com/ * BitLaunch *: https://bitlaunch.io/ * Pterodactyl *: https://pterodactyl.io/ * NiceVPS.net *: https://nicevps.net/ <br> ==== 構築 ステップ1 : WireGuardのインストールとキーペアの生成 ==== Debian 11上でWireGuardをセットアップして、IPv4とIPv6の両方の接続(一般にデュアルスタック接続と呼ばれる)を使用して、ピアとして接続するように別のデバイスを設定する。<br> また、暗号化されたP2PトンネルにVPNを使用するだけでなく、ゲートウェイ構成でピアのインターネットトラフィックをWireGuardサーバー経由でルーティングする方法も記載する。<br> <br> ここでは、Debian 11をWireGuardサーバのピア(クライアントとも呼ばれる)として設定する。<br> <br> まず、WireGuardをサーバにインストールする。<br> sudo apt update sudo apt install wireguard <br> 次に、WireGuardサーバ用の秘密鍵と公開鍵のペアを生成する。<br> 組み込みのwg genkeyおよびwg pubkeyコマンドを使用して鍵を作成して、秘密鍵をWireGuardの設定ファイルに追加する。<br> <bt> また、chmodコマンドを使用して、作成した鍵のパーミッションを変更する必要がある。<br> (<code>chmod go=</code>コマンドは、ルートユーザだけが秘密鍵にアクセスできるように、ルートユーザ以外のユーザやグループのファイルのパーミッションを削除している。)<br> wg genkey | sudo tee /etc/wireguard/private.key sudo chmod go= /etc/wireguard/private.key <br> base64エンコードされた1行を出力する。これが秘密鍵である。<br> この出力は、/etc/wireguard/private.keyファイルにも保存されている。<br> 出力された秘密鍵は、WireGuardの設定ファイルに追加する必要があるため、覚えておく必要がある。<br> <br> 次に、秘密鍵から派生する対応する公開鍵を作成する。<br> # 最初のコマンドは、秘密鍵ファイルを読み込み、標準出力ストリームに出力する。 # 2番目のコマンドは、最初のコマンドの出力を標準入力として受け取り、それを処理して公開鍵を生成する。 # 最後のコマンドは、公開鍵生成コマンドの出力を受け取り、/etc/wireguard/public.keyファイルにリダイレクトする。 sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key <br> 上記のコマンドを実行すると、Base64エンコードされた出力が1行表示される。<br> この公開鍵は、WireGuardサーバに接続するピアに配布する必要があるため、参照用にどこかにコピーする必要がある。<br> <br> ==== 構築 ステップ2 : IPv4 および IPv6 アドレスの選択 ==== 上記のセクションでは、WireGuardをインストールし、サーバとの間のトラフィックを暗号化するために使用するキーペアを生成した。<br> <br> このセクションでは、WireGuardサーバ用の設定ファイルを作成して、WireGuardサーバの再起動時にWireGuardが自動的に起動するように設定する。<br> また、WireGuardサーバとピアで使用するプライベートIPv4アドレスとIPv6アドレスを定義する。<br> <br> IPv4アドレスとIPv6アドレスの両方を使用する場合は、このセクションの両方に従う必要がある。<br> <br> ===== IPv4を使用する ===== WireGuardサーバをIPv4ピアで使用する場合、サーバには、クライアントおよびトンネルインターフェースに使用するプライベートIPv4アドレスの範囲が必要である。<br> 以下の予約済みアドレスブロックから、任意の範囲のIPアドレスを選択できる。<br> * 10.0.0.0 ~ 10.255.255.255 (10/8 プレフィックス) * 172.16.0.0~172.31.255.255 (172.16/12プレフィックス) * 192.168.0.0〜192.168.255.255 (192.168/16プレフィックス) <br> ここでは、予約IPの最初の範囲からIPアドレスのブロックとして、10.8.0.0/24を使用する。<br> この範囲は最大255の異なるピア接続を許可して、一般的に他のプライベートIP範囲と重複または競合するアドレスを持つべきではない。<br> この例の範囲がユーザのネットワークに適合しない場合は、ユーザのネットワーク構成に適合するアドレス範囲を自由に選択する。<br> <br> WireGuardサーバは、プライベートトンネルIPv4アドレスとして、この範囲から1つのIPアドレスを使用する。<br> ここでは、10.8.0.1/24を使用するが、10.8.0.1~10.8.0.255の範囲であればどのアドレスでも使用できる。<br> 10.8.0.1/24と異なるものを使用する場合は、選択したIPアドレスを覚えておくこと。<br> <br> このIPv4アドレスは、次のセクションで定義する設定ファイルに追加する。<br> <br> ===== IPv6を使用する ===== IPv6でWireGuardを使用する場合は、RFC 4193のアルゴリズムに基づいて、一意のローカルIPv6ユニキャストアドレスプレフィックスを生成する必要がある。<br> WireGuardサーバで使用するアドレスは、仮想トンネルインターフェースに関連付けられる。<br> <br> プライベートIPv6アドレスの予約済みfd00::/8ブロック内でランダムな一意のIPv6プレフィックスを生成するには、いくつかの手順を完了する必要がある。<br> <br> RFCによると、一意のIPv6プレフィックスを取得する推奨方法は、シリアル番号やデバイスIDのようなシステムからの一意の識別値と時刻を組み合わせることである。<br> これらの値は、ハッシュ化されて切り捨てられた結果、IPの予約済みプライベートfd00::/8ブロック内で一意なアドレスとして使用できるビットセットになる。<br> <br> まず、WireGuardサーバのIPv6範囲の生成を開始するには、日付ユーティリティを使用して64ビットのタイムスタンプを収集する。<br> 以下の例では、1970-01-01 00:00:00 UTCからの秒数(<code>date</code>コマンドの<code>%s</code>)とナノ秒数(<code>%N</code>)を合わせたものである。<br> date +%s%N 出力例 : 1650301699497770167 <br> 次に、WireGuardサーバのマシンID値を、/var/lib/dbus/machine-idファイルからコピーする。<br> この識別子は、システム固有のもので、WireGuardサーバが存在する限り変更されることはない。<br> # /var/lib/dbus/machine-idファイルの例 610cef4946ed46da8f71dba9d66c67fb <br> タイムスタンプとマシンIDを組み合わせて、SHA-1アルゴリズムを使用してハッシュ化する必要がある。<br> printf <タイムスタンプ><マシンID> | sha1sum # 実行例 : printf 1650301699497770167610cef4946ed46da8f71dba9d66c67fb | sha1sum # 出力例 : 442adea1488d96388dae9ab816045b24609a6c18 - <br> <code>sha1sum</code>コマンドの出力は16進数であるため、1バイトのデータを表すのに2文字を使用することに注意する。<br> 例えば、出力例の4fと26は、ハッシュ化されたデータの最初の2バイトである。<br> <br> RFCのアルゴリズムは、ハッシュ化された出力の最下位(末尾)の40ビット、つまり5バイトしか必要としないため、<code>cut</code>コマンドを使用して、ハッシュから最後の5バイトを16進エンコードして出力する。<br> <code>-c</code>オプションは、<code>cut</code>コマンドに指定された文字の集合だけを選択するように指示する。<br> 例えば、31-オプションは、<code>cut</code>コマンドに31位から入力行の終わりまでの全ての文字を表示する。<br> printf 442adea1488d96388dae9ab816045b24609a6c18 | cut -c 31- # 出力例 : 24609a6c18 <br> 上記の出力例では、バイトのセットは、24 60 9a 6c 18となる。<br> これにより、生成した5バイトをfdプレフィックスに追加して、2バイトごとに:(コロン)で区切って読みやすくすることで、一意のIPv6ネットワークプレフィックスを構築することができる。<br> 一意なプレフィックスに含まれる各サブネットは、合計で18,446,744,073,709,551,616個のIPv6アドレスを保持できるため、簡単にするためにサブネットを標準サイズの/64に制限することができる。<br> <br> 先に/64サブネットサイズで生成したバイトを使用すると、結果のプレフィックスは次のようになる。<br> # 一意のローカルIPv6プレフィックス例 fd24:609a:6c18::/64 <br> 上記の例のfd24:609a:6c18::/64の範囲は、WireGuardサーバとピアのWireGuardトンネルインターフェイスに個々のIPアドレスを割り当てるために使用する。<br> WireGuardサーバにIPアドレスを割り当てるには、最後の<code>::</code>の後に1を追加する。<br> 上記のものを例に取ると、アドレスはfd24:609a:6c18::1/64になる。<br> <br> ピアはこの範囲内のどのIPアドレスでも使用できるが、通常はピアを追加するたびに値を1ずつ増やす。(例 : fd24:609a:6c18::2/64)<br> このIPアドレスは、次のセクションのWireGuardサーバの設定で使用するために覚えておく必要がある。<br> <br> ==== 構築 ステップ3 : WireGuardサーバ構成の作成 ==== 必要な秘密鍵とIPアドレスを使用して、WireGuardサーバの設定ファイルを作成する。<br> <br> PrivateKeyキー値は秘密鍵のフルパス、Addressキー値はIPアドレスを指定する。<br> SaveConfigキー値は、WireGuardインターフェイスがシャットダウンされた時に、変更内容が設定ファイルに保存されるようにする設定である。<br> WireGuardを別のポートで使用したい場合は、ListenPortキー値を変更することもできる。<br> sudo vi /etc/wireguard/wg0.conf <br> # /etc/wireguard/wg0.confファイル [Interface] PrivateKey = <秘密鍵ファイルのフルパス> Address = <IPv4のアドレス 例 : 10.8.0.1/24>, <IPv6のアドレス 例 : fd24:609a:6c18::1/64> ListenPort = 51820 SaveConfig = true <br> ==== 構築 ステップ4 : WireGuardサーバのネットワーク設定の調整 ==== WireGuardピアのインターネットトラフィックをWireGuardサーバー経由でルーティングする場合は、このセクションに従ってIP転送を設定する必要がある。<br> <u>WireGuardを使用してピアをWireGuardサーバーに接続して、サーバー上のサービスにのみアクセスする場合は、このセクションの設定は不要である。</u><br> <br> 転送の設定をするには、/etc/sysctl.confファイルを編集する。<br> sudo vi /etc/sysctl.conf <br> WireGuardでIPv4を使用している場合は、ファイルの一番下に以下の行を追加する。<br> net.ipv4.ip_forward=1 <br> WireGuardでIPv6を使用する場合は、ファイルの末尾に次の行を追加する。<br> net.ipv6.conf.all.forwarding=1 <br> <u>IPv4とIPv6の両方を使用する場合は、両方の行を追記する。</u><br> <br> 設定を反映させる。<br> sudo sysctl -p <br> これにより、WireGuardサーバは、仮想VPNイーサネットデバイスからの受信トラフィックをサーバー上の他のデバイスに転送して、そこからパブリックインターネットに転送できるようになる。<br> この設定を使用すると、WireGuardピアからの全てのウェブトラフィックをサーバのIPアドレス経由で転送できるようになり、クライアントのパブリックIPアドレスは効果的に隠蔽される。<br> <br> ただし、トラフィックをサーバ経由で正しくルーティングする前に、いくつかのファイアウォールルールを設定する必要がある。<br> このルールにより、WireGuardサーバとピアとの間のトラフィックが正しく流れるようになる。<br> <br><br> ==== 構築 ステップ5 : WireGuardサーバのファイアウォールの設定 ==== このセクションでは、WireGuardサーバとクライアント間のトラフィックが正しくルーティングされるようにするため、ファイアウォールルールを追加する。<br> もし、WireGuard VPNをマシン間接続にのみ使用して、VPNに制限されているリソースにアクセスする場合は、この設定は不要である。<br> <br> WireGuard VPNトラフィックをサーバのファイアウォール経由で許可する場合は、マスカレードを有効にする必要がある。<br> マスカレードとは、クライアント接続を正しくルーティングするためにオンザフライで動的なネットワークアドレス変換(NAT)を行うiptablesの概念である。<br> <br> まず、WireGuardサーバのパブリックネットワークインターフェースを探す。<br> <br> パブリックインターフェースは、このコマンド出力の"dev"の後に続く文字列である。<br> 以下の例では、eth0というインターフェイスが表示される。<br> ip route list default # 出力例 default via 203.0.113.1 dev eth0 proto static <br> ファイアウォールルールをWireGuardサーバに追加するため、/etc/wireguard/wg0.confファイルの最下行に、以下に示す設定を追記する。<br> sudo vi /etc/wireguard/wg0.conf # /etc/wireguard/wg0.confファイル # ...略 PostUp = ufw route allow in on wg0 out on eth0 PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PreDown = ufw route delete allow in on wg0 out on eth0 PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE <br> PostUpの行は、WireGuardサーバが仮想VPNトンネルを開始するときに実行される。<br> 上記の例では、3つのufwルールとiptablesルールが追加される。<br> <br> * <code>ufw route allow in on wg0 out on eth0</code> *: このルールは、wg0 VPNインターフェースから入ってくるIPv4とIPv6のトラフィックをサーバのeth0ネットワークインターフェースに転送することを許可する。 *: 前のセクションで設定した<code>net.ipv4.ip_forward</code>と<code>net.ipv6.conf.all.forwarding sysctl</code>の値と連動する。 *: <br> * <code>iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE</code> *: このルールは、マスカレードを設定して、wg0 VPNインターフェースに入力されるIPv4トラフィックを書き換えて、WireGuardサーバのパブリックIPv4アドレスから直接発信されているように見せかける。 *: <br> * <code>ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE</code> *: このルールは、マスカレードを設定して、wg0 VPNインタフェースから侵入してくるIPv6トラフィックを書き換えて、WireGuardサーバのパブリックIPv6アドレスから直接発信されているように見せかける。 <br> PreDownルールは、WireGuardサーバが仮想VPNトンネルを停止するときに実行される。<br> これらのルールは、PostUpルールの逆で、VPNが停止された時にVPNインターフェイスの転送ルールとマスカレードルールを元に戻す働きをする。<br> <br> どちらの場合も、VPNに適したIPv4ルールとIPv6ルールを含むか含まないか、設定を編集する。<br> 例えば、IPv4のみを使用しているのであれば、ip6tablesコマンドで行を除外することができる。<br> 逆に IPv6のみを使うのであれば、ip6tablesコマンドだけを含むように設定を編集する。<br> <br> ufwの行は、IPv4とIPv6のネットワークの組み合わせに関係なく存在する必要がある。<br> <br> WireGuardサーバのファイアウォール設定の最後は、WireGuard UDPポート自体とのトラフィックを許可することである。<br> WireGuardサーバの/etc/wireguard/wg0.confファイルでポートを変更しなかった場合、開くポートは51820である。<br> もし、別のポートを使用する場合は、必ずufwコマンドを実行して、該当ポートを置き換えること。<br> <br> また、SSHポートを開放すること。<br> sudo ufw allow 51820/udp sudo ufw allow OpenSSH <br> <u>※注意</u><br> <u>別のファイアウォールを使用している場合、または、UFWの設定をカスタマイズしている場合は、追加のファイアウォールルールを追加する必要がある場合がある。</u><br> <u>例えば、ネットワークトラフィックの全てをVPN接続でトンネリングする場合、DNSリクエストにはポート53、HTTPとHTTPSトラフィックにはそれぞれ80と443のようなポートを許可する必要がある。</u><br> <u>また、VPN経由で使用する他のプロトコルがある場合は、それらのルールも追加する必要がある。</u><br> <br> ルールの設定を反映させるため、UFWを無効にして再度有効にする。<br> sudo ufw disable sudo ufw enable <br> ルールが反映されているかどうかを確認する。<br> sudo ufw status # 出力例 Status: active To Action From -- ------ ---- 51280/udp ALLOW Anywhere 22/tcp ALLOW Anywhere 51280/udp (v6) ALLOW Anywhere (v6) 22/tcp (v6) ALLOW Anywhere (v6) <br> これにより、ピアの転送やマスカレード等、VPNのトラフィックを正しく処理するようにWireGuardサーバが設定される。<br> ファイアウォールルールを設定した後、WireGuardサービス自体を起動してピア接続をリッスンすることができる。<br> <br> ==== 構築 ステップ6 : WireGuardサーバーの起動 ==== WireGuardは、組み込みのwg-quickスクリプトを使用して、systemdサービスとして実行するように設定できる。<br> <br> VPNを使用するたびに<code>wg</code>コマンドを使用して手動でトンネルを作成することもできるが、手作業で行うため繰り返しが多くなり、エラーが発生しやすくなる。<br> 代わりに、wg-quickスクリプトの助けを借りてトンネルを管理するためにSystemdサービスユニットを使用することができる。<br> <br> Systemdサービスユニットを使用することにより、ブート時にWireGuardが起動するように設定することで、サーバが稼働している限り、いつでもVPNに接続することができる。<br> これを行うには、定義したwg0トンネルのwg-quickサービスをsystemctlに追加して有効にする。<br> sudo systemctl enable wg-quick@wg0.service <br> <u>※注意</u><br> <u>サービス名の一部としてトンネルwg0デバイス名を指定していることに注意する。</u><br> <u>この名前は、/etc/wireguard/wg0.confファイルにマッピングされる。</u><br> <u>このように名前の付けることにより、任意の個別のVPNトンネルを作成できることを意味する。</u><br> <br> <u>例えば、prodという名前のトンネルデバイスを持つようにする場合、その設定ファイルは/etc/wireguard/prod.confファイルとなる。</u><br> <u>各トンネル設定には、異なるIPv4、IPv6、クライアントファイアウォール設定を含めることができる。</u><br> <br> <u>このようにして、それぞれ固有のIPアドレスとルーティングルールを持つ複数の異なるピア接続をサポートすることができる。</u><br> <br> WireGuardサービスを起動する。<br> sudo systemctl start wg-quick@wg0.service <br> WireGuardサービスがアクティブであることを確認する。<br> 正常に起動している場合、アクティブ(実行中)と表示される。<br> sudo systemctl status wg-quick@wg0.service # 出力例 ● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2022-04-18 17:22:13 UTC; 2s ago Docs: man:wg-quick(8) man:wg(8) https://www.wireguard.com/ https://www.wireguard.com/quickstart/ https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8 https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 Process: 98834 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 98834 (code=exited, status=0/SUCCESS) CPU: 193ms Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] wg setconf wg0 /dev/fd/63 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip -4 address add 10.8.0.1/24 dev wg0 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip -6 address add fd24:609a:6c18::1/64 dev wg0 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip link set mtu 1420 up dev wg0 Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ufw route allow in on wg0 out on ens3 Apr 18 17:22:13 thats-my-jam wg-quick[98890]: Rule added Apr 18 17:22:13 thats-my-jam wg-quick[98890]: Rule added (v6) Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE Apr 18 17:22:13 thats-my-jam wg-quick[98834]: [#] ip6tables -t nat -I POSTROUTING -o ens3 -j MASQUERADE Apr 18 17:22:13 thats-my-jam systemd[1]: Finished WireGuard via wg-quick(8) for wg0. <br> 上記の出力例では、仮想wg0デバイスを作成して、設定ファイルに追加したIPv4アドレスとIPv6アドレスを割り当てるために使用される<code>ip</code>コマンドを示している。<br> これらのルールは、トンネルのトラブルシューティングに使用することができる。<br> <br> WireGuardサーバの設定と実行が完了した後、クライアントマシンをWireGuardピアとして設定して、WireGuardサーバに接続する。<br> <br> ==== 構築 ステップ7 : WireGuardピアの設定 ==== WireGuardピアの設定は、WireGuardサーバの設定と似ており、<br> クライアントソフトウェアをインストールした後、公開鍵と秘密鍵のペアを生成して、ピアのIPアドレスまたはアドレスを決定およびピアの設定ファイルを定義して、wg-quickスクリプトを使用してトンネルを開始する。<br> <br> 以下の手順で鍵ペアの生成と設定することにより、VPNにいくつでもピアを追加することができる。<br> 複数のピアをVPNに追加する場合は、衝突を防ぐために必ずプライベートIPアドレスを確認すること。<br> <br> WireGuardピア上で、WireGuardパッケージをインストールする。<br> sudo apt update sudo apt install wireguard <br> WireGuardサーバと同様の手順で、WireGuardピア上でキーペアを生成する。<br> <br> まず、WireGuardピアの秘密鍵ファイルを生成する。(base64エンコードされている)<br> 出力された秘密鍵は、このセクションの後半でWireGuardピアの設定ファイルに追加する必要がある。<br> wg genkey | sudo tee /etc/wireguard/private.key sudo chmod go= /etc/wireguard/private.key <br> 次に、WireGuardピアの公開鍵ファイルを生成する。(base64エンコードされている)<br> 暗号化された接続を確立するには、WireGuardピアの公開鍵をWireGuardサーバに配布する必要がある。<br> sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key <br> 次に、WireGuardサーバへの接続を確立するために必要な全ての情報を含むWireGuardピア用の設定ファイルを作成する。<br> この設定ファイルには、以下に示す情報が必要となる。<br> * WireGuardピア上で生成した秘密鍵をbase64エンコードしたもの。 * WireGuardサーバで定義したIPv4およびIPv6アドレス範囲。 * WireGuardサーバから取得したbase64エンコードされた公開鍵。 * WireGuardサーバの公開IPアドレスとポート番号。<br>通常、これはIPv4アドレスになるが、もし、WireGuardサーバにIPv6アドレスがあり、クライアントマシンがインターネットにIPv6接続できる場合は、IPv4の代わりにこれを使用することができる。 <br> WireGuardピア上にある/etc/wireguard/wg0.confファイルを、以下に示すように編集する。<br> sudo vi /etc/wireguard/wg0.conf <br> <syntaxhighlight lang="ini"> # /etc/wireguard/wg0.confファイル [Interface] PrivateKey = base64_encoded_peer_private_key_goes_here Address = 10.8.0.**2**/24 Address = fd24:609a:6c18::**2**/64 [Peer] PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= AllowedIPs = 10.8.0.0/24, fd24:609a:6c18::/64 Endpoint = 203.0.113.1:51820 </syntaxhighlight> <br> 最初のAddressキー値は、先ほど選んだ10.8.0.0/24サブネットのIPv4アドレスを使用していることに注目する。<br> このIPアドレスは、サーバのIPと異なる限り、サブネット内のどのアドレスでも構わない。<br> ピアを追加するたびにアドレスを1ずつ増やすのが、一般的にIPを割り当てる最も簡単な方法である。<br> <br> 2番目のAddressキー値は、先ほど生成したサブネットのIPv6アドレスを使用して、サーバのアドレスを1ずつ増やしていることに注目する。<br> この場合も、異なるアドレスを使用する場合は、範囲内のどのIPでも有効である。<br> <br> この設定ファイルのもう1つの注目すべき部分は、AllowedIPsキー値である。<br> この2つのIPv4とIPv6の範囲は、宛先システムがいずれかの範囲のIPアドレスを持っている場合にのみ、VPN経由でトラフィックを送信するようピアに指示する。<br> AllowedIPsキーを使用することにより、WireGuardピアのVPNを制限して、VPN上の他のWireGuardピアやサービスのみに接続させることも、全てのトラフィックをVPN上にトンネルして、WireGuardサーバをゲートウェイとして使用するように設定することもできる。<br> <br> IPv4のみを使用する場合は、末尾のfd24:609a:6c18::/64範囲(、カンマを含む)を省略する。<br> 逆に、IPv6のみを使用する場合は、fd24:609a:6c18::/64プレフィックスのみを含め、10.8.0.0/24 IPv4範囲を省略する。<br> <br> どちらの場合も、相手のトラフィックを全てVPN経由で送信して、WireGuardサーバを全てのトラフィックのゲートウェイとして使用する場合は、<br> IPv4アドレス空間全体を表す0.0.0.0/0と、IPv6アドレス空間全体を表す::/0を使用できる。<br> <br><br> __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:Windows10]]
設定 - VPNサーバ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse