WireGuard-Linux用の高速で最新の安全なVPNトンネル


WireGuardは、最先端の暗号化を使用する、最新の安全なクロスプラットフォームの汎用VPN実装です。これは、IPsecよりも高速で、シンプルで、スリムで、機能的であることを目指しており、OpenVPNよりもパフォーマンスが高いことを目的としています。

さまざまな状況で使用するように設計されており、組み込みインターフェイス、完全にロードされたバックボーンルーター、およびスーパーコンピューターに同様に展開できます。 Linux、Windows、macOS、BSD、iOS、Androidオペレーティングシステムで動作します。

推奨読書:生涯サブスクリプションを備えた13の最高のVPNサービス

これは、SSHのように構成および展開が簡単で、シンプルであることを目的とした、非常に基本的でありながら強力なインターフェースを提供します。その主な機能には、シンプルなネットワークインターフェイス、暗号化キールーティング、組み込みのローミング、およびコンテナのサポートが含まれます。

この記事の執筆時点では、開発が進んでいることに注意してください。一部のパーツは安定した1.0リリースに向けて動作していますが、他のパーツはすでに存在しています(正常に動作しています)。

この記事では、LinuxにWireGuardをインストールして構成し、2つのLinuxホスト間にVPNトンネルを作成する方法を学習します。

このガイドでは、セットアップ(ホスト名とパブリックIP)は次のとおりです。

Node 1 : tecmint-appserver1: 		10.20.20.4
Node 2 : tecmint-dbserver1: 		10.20.20.3

LinuxディストリビューションにWireGuardをインストールする方法

両方のノードにログインし、次のようにLinuxディストリビューションに適切なコマンドを使用してWireGuardをインストールします。

$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms
$ sudo yum copr enable jdoss/wireguard
$ sudo yum install wireguard-dkms wireguard-tools
$ sudo yum install epel-release
$ sudo yum config-manager --set-enabled PowerTools
$ sudo yum copr enable jdoss/wireguard
$ sudo yum install wireguard-dkms wireguard-tools
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
$ sudo yum install wireguard-dkms wireguard-tools
$ sudo dnf install wireguard-tools
# echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
# printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
# apt update
# apt install wireguard
$ sudo add-apt-repository ppa:wireguard/wireguard
$ sudo apt-get update
$ sudo apt-get install wireguard
$ sudo zypper addrepo -f obs://network:vpn:wireguard wireguard
$ sudo zypper install wireguard-kmp-default wireguard-tools

2つのLinuxホスト間のWireGuardVPNトンネルの構成

両方のノードでwireguardのインストールが完了したら、ノードを再起動するか、両方のノードで次のコマンドを使用してLinuxカーネルからwireguardモジュールを追加できます。

$ sudo modprobe wireguard
OR
# modprobe wireguard

次に、図のように、両方のノードでwgユーティリティを使用して、base64でエンコードされた公開鍵と秘密鍵を生成します。

---------- On Node 1 ---------- 
$ umask 077
$ wg genkey >private_appserver1

---------- On Node 2 ----------
$ umask 077
$ wg genkey >private_dbserver1
$ wg pubkey < private_dbserver1

次に、以下に示すように、ピア上のwiregaurd用のネットワークインターフェイス(wg0など)を作成する必要があります。次に、作成した新しいネットワークインターフェイスにIPアドレスを割り当てます(このガイドでは、ネットワーク192.168.10.0/24を使用します)。

---------- On Node 1 ---------- 
$ sudo ip link add dev wg0 type wireguard
$ sudo ip addr add 192.168.10.1/24 dev wg0

---------- On Node 2 ----------
$ sudo ip link add dev wg0 type wireguard
$ sudo ip addr add 192.168.10.2/24 dev wg0

ピアに接続されているネットワークインターフェイスとそのIPアドレスを表示するには、次のIPコマンドを使用します。

$ ip ad

次に、各ピアの秘密鍵をwg0ネットワークインターフェイスに割り当て、図のようにインターフェイスを起動します。

---------- On Node 1 ---------- 
$ sudo wg set wg0 private-key ./private_appserver1
$ sudo ip link set wg0 up

---------- On Node 2 ----------
$ sudo wg set wg0 private-key ./private_dbserver1
$ sudo ip link set wg0 up

両方のリンクがそれぞれ秘密鍵に関連付けられてアップしているので、引数なしでwgユーティリティを実行して、ピア上のWireGuardインターフェイスの構成を取得します。次に、次のようにWireguardVPNトンネルを作成します。

ピア(公開鍵)、allowed-ips(ネットワーク/サブネットマスク)、およびエンドポイント(public ip:port)は反対側のピアです。

----------  On Node1 (Use the IPs and Public Key of Node 2) ---------- 
$ sudo wg
$ sudo wg set wg0 peer MDaeWgZVULXP4gvOj4UmN7bW/uniQeBionqJyzEzSC0= allowed-ips 192.168.10.0/24  endpoint  10.20.20.3:54371

----------  On Node2 (Use the IPs and Public Key of Node 1) ----------
$ sudo wg
$ sudo wg set wg0 peer 6yNLmpkbfsL2ijx7z996ZHl2bNFz9Psp9V6BhoHjvmk= allowed-ips 192.168.10.0/24 endpoint  10.20.20.4:42930

Linuxシステム間のWireGuardVPNトンネルのテスト

Wireguard VPNトンネルが作成されたら、Wireguardネットワークインターフェイスのアドレスを使用して反対側のピアにpingを実行します。次に、wgユーティリティをもう一度実行して、図のようにピア間のハンドシェイクを確認します。

---------- On Node 1 ----------
$ ping 192.168.10.2
$ sudo wg

---------- On Node 2 ----------
$ ping 192.168.10.1
$ sudo wg

今のところ以上です! WireGuardは、将来に向けた、最新の安全でシンプルでありながら強力で構成が簡単なVPNソリューションです。それは大規模な開発が行われているため、作業が進行中です。特に内部の内部動作やその他の構成オプションに関する詳細は、WireGuardホームページから入手できます。