1. サーバー環境の設定#
サーバー側のカーネル転送を有効にする
sysctl net.ipv4.ip_forward=1
sysctl net.ipv6.conf.all.forwarding=1
sysctl -p
Wireguard プログラムをインストールする
apt install wireguard
2. サーバー側の Wireguard インターフェースの設定#
サーバーの鍵ペアを生成する
wg genkey | tee /dev/stderr | wg pubkey
/etc/wireguard フォルダーに ifs0.conf というファイルを作成する
wireguard サービスは 10203/udp でリッスンする
ネットワークは 192.168.3.0/24 のプライベートネットワークを使用する
サーバーは 192.168.3.1/32 を割り当てる
クライアントは 192.168.3.2/32 を割り当てる
ここで eth0 は実際の出口インターフェース名に置き換える必要があります
Peer の AllowedIPs は入力トラフィックの IP アドレスと一致するように使用され、一致する場合は wireguard が接続を処理します
[Interface]
PrivateKey = サーバーのプライベートキー
Address = 192.168.3.1/32
PostUp = iptables -A FORWARD -i ifs0 -j ACCEPT; iptables -A FORWARD -o ifs0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i ifs0 -j ACCEPT; iptables -D FORWARD -o ifs0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 10203
[Peer]
PublicKey = クライアントの公開鍵
AllowedIPs = 192.168.3.2/32
wireguard の ifs0 設定を開始し、PostUp の設定も実行する
wg-quick up ifs0
wireguard の ifs0 設定を終了し、PostDown の設定も実行する
wg-quick down ifs0
3. クライアントの設定#
Wireguard プログラムをインストールする
apt install wireguard
クライアントの鍵ペアを生成する
wg genkey | tee /dev/stderr | wg pubkey
/etc/wireguard フォルダーに ifc0.conf というファイルを作成する
このクライアントは以前のサーバーで処理される IP アドレス 192.168.3.2/32 を割り当てる
Peer エンドポイントにはサーバーの wireguard プロセスを記入する(クライアントが 114.51.41.91 を介してサーバーにアクセスできると仮定する)
この時点で Peer の AllowedIPs は出力トラフィックの IP アドレスと一致するように使用され、一致する場合は wireguard を介してトンネルアクセスされます。例の設定ではすべての IPv4 トラフィックを処理しますが、192.168.3.0/24 を使用してネットワークトラフィックのみを処理することもできます
[Interface]
PrivateKey = クライアントのプライベートキー
Address = 192.168.3.2/32
[Peer]
PublicKey = サーバーの公開鍵
AllowedIPs = 0.0.0.0/0
Endpoint = 114.51.41.91:10203
wireguard の ifs0 設定を開始し、PostUp の設定も実行する
wg-quick up ifs0
wireguard の ifs0 設定を終了し、PostDown の設定も実行する
wg-quick down ifs0
4.1 複数クライアント(サーバーをゲートウェイとして抽象化)#
サーバーに複数の Peer マッチを追加するだけです
[Interface]
###省略###
[Peer]
PublicKey = クライアント192.168.3.2の公開鍵
AllowedIPs = 192.168.3.2/32
[Peer]
PublicKey = クライアント192.168.3.3の公開鍵
AllowedIPs = 192.168.3.3/32