WireGuardは、最先端の暗号化を備えたシンプルで最新のVPN(仮想プライベートネットワーク)です。 IPsecやOpenVPNなどの他の同様のソリューションよりも高速で、構成が簡単で、パフォーマンスが高くなります。
WireGuardはクロスプラットフォームであり、Linux、Windows、Android、macOSなど、ほぼすべての場所で実行できます。 WireguardはピアツーピアVPNです。クライアントサーバーモデルに基づいていません。構成に応じて、ピアは従来のサーバーまたはクライアントとして機能できます。
WireGuardは、トンネルとして動作する各ピアデバイスにネットワークインターフェイスを作成することで機能します。ピアは、SSHモデルを模倣して、公開鍵を交換および検証することにより、相互に認証します。公開鍵は、トンネルで許可されているIPアドレスのリストにマッピングされます。 VPNトラフィックはUDPにカプセル化されています。
このチュートリアルでは、VPNサーバーとして機能するCentOS8マシンでWireGuardをセットアップする方法について説明します。また、WireGuardをクライアントとして構成する方法についても説明します。クライアントのトラフィックはCentOS8サーバーを介してルーティングされます。この設定は、中間者攻撃に対する保護、匿名でのWebサーフィン、地理的に制限されたコンテンツのバイパス、または自宅で仕事をしている同僚が会社のネットワークに安全に接続できるようにするために使用できます。
前提条件#
rootまたはsudo権限を持つアカウントとしてアクセスできるCentOS8サーバーが必要です。
WireGuardサーバーのセットアップ#
まず、CentOSマシンにWireGuardをインストールし、サーバーとして機能するように設定します。また、クライアントのトラフィックをシステム経由でルーティングするようにシステムを構成します。
CentOS 8へのWireGuardのインストール#
WireGuardツールとカーネルモジュールは、EpelおよびElrepoリポジトリからインストールできます。システムにリポジトリを追加するには、次のコマンドを実行します。
sudo dnf install epel-release elrepo-release
完了したら、WireGuardパッケージをインストールします。
sudo dnf install kmod-wireguard wireguard-tools
リポジトリのGPGキーをインポートするように求められる場合があります。 y
と入力します プロンプトが表示されたら。
WireGuardの構成#
wireguard-tools
パッケージには、wg
という名前の2つのコマンドラインツールが含まれています およびwg-quick
これにより、WireGuardインターフェースを構成および管理できます。
VPNサーバーの構成を/etc/wireguard
に保存します ディレクトリ。 CentOSでは、このディレクトリはインストール中に作成されません。次のコマンドを実行して、ディレクトリを作成します。
sudo mkdir /etc/wireguard
/etc/wireguard
で公開鍵と秘密鍵を生成します ディレクトリ。
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
cat
でファイルを表示できます またはless
。秘密鍵は絶対に誰とも共有しないでください。
キーが生成されたので、次のステップは、VPNトラフィックをルーティングするトンネルデバイスを構成することです。
デバイスは、コマンドラインからip
を使用してセットアップできます。 およびwg
または、テキストエディタで構成ファイルを作成します。
wg0.conf
という名前の新しいファイルを作成します 次のコンテンツを追加します:
sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf [Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade
PostDown = firewall-cmd --zone=public --remove-port 51820/udp && firewall-cmd --zone=public --remove-masquerade
インターフェイスには任意の名前を付けることができますが、wg0
などを使用することをお勧めします。 またはwgvpn0
。インターフェイスセクションの設定には、次の意味があります。
-
アドレス-
wg0
のv4またはv6IPアドレスのコンマ区切りリスト インターフェース。プライベートネットワーク用に予約されている範囲(10.0.0.0/8、172.16.0.0/12、または192.168.0.0/16)のIPを使用します。 -
ListenPort-WireGuardが着信接続を受け入れるポート。
-
PrivateKey-
wg genkey
によって生成された秘密鍵 指図。 (ファイルの内容を確認するには、次のコマンドを実行します:sudo cat /etc/wireguard/privatekey
) -
SaveConfig-trueに設定すると、シャットダウン時にインターフェイスの現在の状態が構成ファイルに保存されます。
-
PostUp-インターフェースを起動する前に実行されるコマンドまたはスクリプト。この例では、
firewall-cmd
を使用しています WireGuardポートを開き、マスカレードを有効にします。これにより、トラフィックがサーバーを離れることができ、VPNクライアントがインターネットにアクセスできるようになります。 -
PostDown-インターフェイスを停止する前に実行されるコマンドまたはスクリプト。インターフェイスがダウンすると、ファイアウォールルールは削除されます。
wg0.conf
およびprivatekey
通常のユーザーはファイルを読み取れないようにする必要があります。 chmod
を使用する 権限を600
に設定します :
sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}
完了したら、wg0
を持参してください 構成ファイルで指定された属性を使用してインターフェースを確立します:
sudo 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 ens3 -j MASQUERADE
インターフェイスの状態と構成を表示するには、次を実行します。
sudo wg show wg0
interface: wg0
public key: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
private key: (hidden)
listening port: 51820
ip
を使用することもできます インターフェイスの状態を確認するコマンド:
ip a show wg0
4: 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
wg0
を持ってくるには 起動時にインターフェイスは次のコマンドを実行します:
sudo systemctl enable wg-quick@wg0
サーバーネットワーク#
NATが機能するには、IP転送を有効にする必要があります。新しいファイルを作成します/etc/sysctl.d/99-custom.conf
、次の行を追加します:
sudo nano /etc/sysctl.d/99-custom.conf
/etc/sysctl.d/99-custom.conf net.ipv4.ip_forward = 1
ファイルを保存し、sysctl
を使用して変更を適用します :
sudo sysctl -p /etc/sysctl.d/99-custom.conf
net.ipv4.ip_forward = 1
それでおしまい。サーバーとして機能するCentOSピアがセットアップされました。
LinuxおよびmacOSクライアントのセットアップ#
サポートされているすべてのプラットフォームのインストール手順は、https://wireguard.com/install/で入手できます。 Linuxシステムでは、ディストリビューションパッケージマネージャーを使用してパッケージをインストールでき、macOSではbrew
を使用してインストールできます。 。 WireGuardをインストールしたら、以下の手順に従ってクライアントデバイスを構成します。
LinuxおよびmacOSクライアントをセットアップするプロセスは、サーバーの場合とほとんど同じです。公開鍵と秘密鍵を生成することから始めます:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
ファイルwg0.conf
を作成します 次のコンテンツを追加します:
sudo nano /etc/wireguard/wg0.conf
/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
のv4またはv6IPアドレスのコンマ区切りリスト インターフェース。 - PrivateKey-クライアントマシンでファイルの内容を確認するには、次のコマンドを実行します:
sudo cat /etc/wireguard/privatekey
ピアセクションには、次のフィールドが含まれています。
- PublicKey-接続するピアの公開鍵。 (サーバーの
/etc/wireguard/publickey
の内容 ファイル)。 - エンドポイント-接続するピアのIPまたはホスト名、コロン、リモートピアがリッスンするポート番号。
- AllowedIPs-ピアの着信トラフィックが許可され、このピアの発信トラフィックが送信されるv4またはv6IPアドレスのコンマ区切りのリスト。トラフィックをルーティングしていて、サーバーピアが任意の送信元IPでパケットを送信するようにしたいため、0.0.0.0/0を使用しています。
追加のクライアントを構成する必要がある場合は、別のプライベートIPアドレスを使用して同じ手順を繰り返すだけです。
Windowsクライアントのセットアップ#
WireGuardWebサイトからWindowsmsiパッケージをダウンロードしてインストールします。
インストールしたら、WireGuardアプリケーションを開き、下の画像に示すように、[トンネルの追加]->[空のトンネルの追加...]をクリックします。
公開鍵のペアが自動的に作成され、画面に表示されます。
トンネルの名前を入力し、次のように構成を編集します。
[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
インターフェイスセクションで、クライアントトンネルアドレスを定義するための新しい行を追加します。
ピアセクションで、次のフィールドを追加します。
- PublicKey-CentOSサーバーの公開鍵(
/etc/wireguard/publickey
ファイル)。 - エンドポイント-CentOSサーバーのIPアドレスと、それに続くコロン、およびWireGuardポート(51820)。
- 許可されたIP-0.0.0.0/0
完了したら、[保存]ボタンをクリックします。
クライアントピアをサーバーに追加する#
最後のステップは、クライアントの公開鍵とIPアドレスをサーバーに追加することです。
sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2
必ずCLIENT_PUBLIC_KEY
を変更してください クライアントマシンで生成した公開鍵(sudo cat /etc/wireguard/publickey
)クライアントのIPアドレスが異なる場合は調整します。 Windowsユーザーは、WireGuardアプリケーションから公開鍵をコピーできます。
完了したら、クライアントマシンに戻り、トンネリングインターフェイスを起動します。
LinuxおよびmacOSクライアント#
Linuxクライアントでは、次のコマンドを実行してインターフェイスを起動します。
sudo wg-quick up wg0
これで、CentOSサーバーに接続し、クライアントマシンからのトラフィックをサーバー経由でルーティングする必要があります。次のコマンドで接続を確認できます:
sudo wg
interface: wg0
public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg=
private key: (hidden)
listening port: 60351
fwmark: 0xca6c
peer: My3uqg8LL9S3XZBo8alclOjiNkp+T6GfxS+Xhn5a40I=
endpoint: XXX.XXX.XXX.XXX:51820
allowed ips: 0.0.0.0/0
latest handshake: 41 seconds ago
transfer: 213.25 KiB received, 106.68 KiB sent
ブラウザを開いて「whatismyip」と入力すると、CentOSサーバーのIPアドレスが表示されます。
トンネリングを停止するには、wg0
を停止します インターフェイス:
sudo wg-quick down wg0
Windowsクライアント#
WindowsにWireGuardをインストールした場合は、[アクティブ化]ボタンをクリックします。ピアが接続されると、トンネルのステータスがアクティブに変わります: