WireGuardは、シンプルで使いやすいように設計された、オープンソースでセキュリティに重点を置いた仮想プライベートネットワークです。 Linux、macOS、Windows、BSD、Androidなどのさまざまなオペレーティングシステムをサポートしています。これはシンプルで汎用のVPNであり、小さなデバイスからハイエンドサーバーに簡単に導入できます。これは、クライアントサーバーモデルではなく、ポイントツーポイントのVPNサーバーです。公開鍵交換メカニズムを使用してクライアントを認証します。
軽量で高速なVPNをお探しの場合は、WireGuardVPNが最適です。このチュートリアルでは、WireGuardVPNサーバーとクライアントをUbuntu20.04にインストールする方法を示します。
- Ubuntu20.04サーバーを実行している2台のサーバー。
- ルートパスワードは両方のサーバーで構成されています。
まず、システムパッケージを最新バージョンに更新することをお勧めします。次のコマンドで更新できます:
apt-get update -y
すべてのパッケージが更新されたら、システムにIptablesをインストールする必要があります。次のコマンドでインストールできます:
apt-get install iptables -y
インストールが完了したら、次の手順に進むことができます。
WireGuardVPNサーバーをインストールする
デフォルトでは、WireGuardパッケージはUbuntu20.04のデフォルトリポジトリで利用できます。次のコマンドを実行してインストールできます:
apt-get install wireguard -y
WireGuardパッケージがインストールされたら、次のステップに進むことができます。
WireGuardサーバーを構成する
WireGuardは、WireGuardネットワーク内の各デバイス間で公開鍵を交換することで機能します。そのため、サーバーに公開鍵と秘密鍵を作成する必要があります。
WireGuardは、キーを作成してインターフェイスを管理するためのwgおよびwg-quickコマンドラインユーティリティを提供します。
次のコマンドを使用して、公開鍵と秘密鍵の両方を作成できます。
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
両方のキーが作成されたら、次のコマンドでそれらを確認できます。
ls /etc/wireguard
次の出力が表示されます。
privatekey publickey
次のコマンドを使用して、秘密鍵の内容を表示できます。
cat /etc/wireguard/privatekey
次の出力が表示されます。
4M1l65NIaoR2+fQ6xVnIdwj6iVjsSPDkEMuzVnbFh3A=
次のコマンドを使用して、公開鍵の内容を表示できます。
cat /etc/wireguard/publickey
次の出力が表示されます。
00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4=
次に、WireGuardのネットワークインターフェイスを作成する必要があります。次のコマンドで作成できます:
nano /etc/wireguard/wg0.conf
次の行を追加します:
[Interface] Address = 10.0.0.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = server-private-key PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
終了したら、ファイルを保存して閉じます。
場所 :
- 住所: wg0インターフェースのプライベートIPアドレス。
- ListenPort: WireGuardのリスニングポートを指定します。
- PrivateKey: / etc / wireguard/privatekeyファイルに保存されている秘密鍵。
- 投稿: トラフィックがサーバーを出て、VPNクライアントにインターネットへのアクセスを許可するコマンドを指定します。また、eth0をネットワークインターフェイス名に置き換えます。
次に、秘密鍵とwg0ファイルに適切な権限を設定します。
chmod 600 /etc/wireguard/{privatekey,wg0.conf}
次に、次のコマンドを実行してwg0インターフェイスを有効にします。
wg-quick up wg0
次の出力が得られるはずです:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.1/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
以下に示すように、systemdを使用してWireGuardサービスを開始することもできます。
systemctl start [email protected]
次に、次のコマンドを使用して、システムの再起動時にWireGuardサービスを開始できるようにします。
systemctl enable [email protected]
次に、次のコマンドを使用してWireGuardサービスのステータスを確認します。
systemctl status [email protected]
次の出力が得られるはずです:
? [email protected] - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled) Active: active (exited) since Thu 2020-12-10 11:42:14 UTC; 7s 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: 2173 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 2173 (code=exited, status=0/SUCCESS) Dec 10 11:42:14 ubuntu2004 systemd[1]: Starting WireGuard via wg-quick(8) for wg0... Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip link add wg0 type wireguard Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] wg setconf wg0 /dev/fd/63 Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip -4 address add 10.0.0.1/24 dev wg0 Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] ip link set mtu 1420 up dev wg0 Dec 10 11:42:14 ubuntu2004 wg-quick[2173]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Dec 10 11:42:14 ubuntu2004 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.
次のコマンドを使用して、wg0インターフェイスのステータスを確認することもできます。
wg show wg0
次の出力が得られるはずです:
interface: wg0 public key: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4= private key: (hidden) listening port: 51820
次のコマンドを使用して、wg0インターフェイスのIPアドレスステータスを取得できます。
ip a show wg0
次の出力が得られるはずです:
13: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 10.0.0.1/24 scope global wg0 valid_lft forever preferred_lft forever
終了したら、次のステップに進むことができます。
IP転送を有効にする
次に、サーバーでIP転送を有効にして、VPNクライアントとインターネット間でパケットをルーティングする必要があります。ファイル/etc/sysctl.confを編集して有効にできます:
nano /etc/sysctl.conf
次の行を変更します:
net.ipv4.ip_forward=1
ファイルを保存して閉じてから、次のコマンドを実行して構成の変更を適用します。
sysctl -p
終了したら、次のステップに進むことができます。
WireGuardクライアントのインストールと構成
まず、WireGuardパッケージをクライアントマシンにインストールする必要があります。次のコマンドでインストールできます:
apt-get install wireguard -y
WireGuardパッケージをインストールした後、次のコマンドを使用して秘密鍵と公開鍵を作成します。
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
両方のキーを作成したら、新しい構成ファイルを作成する必要があります。
次のコマンドで作成できます:
nano /etc/wireguard/wg0.conf
次の行を追加します:
[Interface] PrivateKey = client-private-key Address = 10.0.0.2/24 [Peer] PublicKey = server-public-key Endpoint = server-ip-address:51820 AllowedIPs = 0.0.0.0/0
終了したら、ファイルを保存して閉じます。
場所 :
- 住所: wg0インターフェースのプライベートIPアドレス。
- PrivateKey: クライアントマシンで秘密鍵を指定します。
- PublicKey: サーバーマシンの公開鍵を指定します。
- エンドポイント: サーバーのIPアドレスを指定します。
- 許可されたIP: 許可されるIPアドレスのリストを指定します。
次に、サーバーマシンにクライアントの公開鍵とIPアドレスを追加する必要があります。
サーバーマシンで、次のコマンドを実行して両方を追加します。
wg set wg0 peer client-public-key allowed-ips 10.0.0.2
次に、クライアントマシンでwg0インターフェイスを起動する必要があります。
クライアントマシンで、次のコマンドを実行してインターフェイスを表示します。
wg-quick up wg0
次の出力が得られるはずです:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.2/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] wg set wg0 fwmark 51820
この時点で、クライアントマシンはWireGuardVPNサーバーに接続されています。次のコマンドで接続状態を確認できます:
wg
次の出力が得られるはずです:
interface: wg0 public key: 3FXBDpAO4Vado1tDjLtVQt+JnOCa+W2piLeFYQ8KyB4= private key: (hidden) listening port: 38830 fwmark: 0xca6c peer: 00Jsbppv/gVMy6oHMfFZ+T/eEFBAWVbiZo33HjQBSU4= endpoint: 69.87.216.36:51820 allowed ips: 0.0.0.0/0 latest handshake: 41 seconds ago transfer: 5.27 KiB received, 12.97 KiB sent
おめでとうございます!これで、Ubuntu20.04サーバーにWireGuardVPNサーバーとクライアントが正常にインストールおよび構成されました。これで、クライアントマシンからのトラフィックはサーバーマシンを経由してルーティングされるはずです。これで、匿名でインターネットを閲覧し、データを非公開にすることができます。