内容へ移動
WildTree Wiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
wireguard
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Wire Guard ====== ===== 概要 ===== 様々な実装のあるVPNのなかで比較的後発のもの。 実装サイズは小さく軽量高速であるとされている。 Ubuntuのパッケージもあり、デスクトップにも統合されるので、導入が簡単である。 クライアントとして、Windows, Android, iOSなどもサポートされている。 ===== 設定 ===== サーバをLinux(Ubuntu)に乗せて、外部から、Windows, Android, Ubuntuで接続する想定で説明する。 家庭内のLANは 192.168.1.0/24で構成されており、VPNは 192.168.10.0/24で構成されるものとする。 LAN内のDNSは192.168.1.1に、Wire Guardのサーバは192.168.10.1を持ち、192.168.1.2で動作しているものとする。 ==== サーバ ==== === インストール === パッケージがあるのでそれをインストールすればよい。 <code bash> $ sudo apt install -y wireguard </code> === 設定 === 最初に行うべきは鍵の生成である。 鍵はwgコマンドで生成する。 鍵は画面に表示されるだけだが、ファイルに保存しておいた方が後々便利なのでそのようにする。 <code bash> $ sudo wg genkey | sudo tee /etc/wireguard/server.key $ sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub $ sudo chmod 600 /etc/wireguard/server.{key,pub} </code> 別にどこに保存してもいいですが、ばらけるとめんどくさいのでとりあえず/etc/wireguard に置きます。 一応中身を見られないように600にしておきます。 VPNから別のネットワークにアクセスするにはIPフォワーディングを有効化する必要があります。 /etc/sysctl.conf の中にある net.ipv4.ip_forward=1の行のコメントマークを削除しておきます。 <code ini> # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 </code> 即座に有効化するには以下のコマンドを発行します。 <code bash> $ sudo sysctl -p </code> 次に、設定ファイルを作りますが、これはVPNのインターフェイスごとに作ります。 仮に wg0 がインターフェイスだとしたら、/etc/wireguard/wg0.conf というファイルになります。 これも600で作成します。 <file ini wg0.conf> [Interface] Address = 192.168.10.1/24 SaveConfig = true PostUp = iptables -A INPUT -i wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D INPUT -i wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE ListenPort = 51800 PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= [Peer] PublicKey = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY= AllowedIPs = 192.168.10.2/32 [Peer] PublicKey = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ= AllowedIPs = 192.168.10.3/32 [Peer] PublicKey = UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU= AllowedIPs = 192.168.10.4/32 [Peer] PublicKey = WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW= AllowedIPs = 192.168.10.5/32 </file> Peerは接続してくるクライアントごとに持たせることができる。 DHCP機能はないので、IPはここで設定されたものが渡される。((とはいえ、DHCPで新しいデバイスをばかばかつなぐような性質のものではないので、これでいいと思われる。DHCPでアドレスを静的割り当てする設定と大差ないので実用上問題はないと思う。)) クライアント側で生成されたPublicKeyに従って割り当てが行われる。 -o eth0 の部分は実際に動かすサーバのネットワークインターフェイスと置き換える必要がある。 外部に対して、192.168.1.2:51800/UDP を公開して、サービスを起動すればVPN接続を待ち受ける。 <code bash> $ sudo systemctl enable wg-quick@wg0 $ sudo systemctl start wg-quick@wg0 </code> ==== クライアント ==== === Linux (Ubuntu) === サーバと同じく wireguard パッケージをインストールする。 <code bash> $ sudo apt install -y wireguard </code> 設定も鍵を作って、/etc/wireguard/wg0.confを作成するところまでは同じである。 <code bash> $ sudo wg genkey | sudo tee /etc/wireguard/client.key $ sudo cat /etc/wireguard/client.key | wg pubkey | sudo tee /etc/wireguard/client.pub $ sudo chmod 600 /etc/wireguard/client.{key,pub} </code> <file ini wg0.conf> [Interface] PrivateKey = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy= Address = 192.168.10.2/24 DNS = 192.168.1.1 [Peer] PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= EndPoint = vpn.example.com:51800 AllowedIPs = 192.168.10.0/24, 192.168.1.0/24 </file> 上の例では、LAN内へのトラフィックだけをVPNへ流すようにしていますが、AllowedIPs = 0.0.0.0/0 とすればすべてのトラフィックをVPN経由とします。 デスクトップ版を使っている場合はタスクバーに統合されているウィジェットから起動することもできますが、手動で起動する場合には、コマンドラインから以下のようにします。 <code bash> $ sudo wg-quick up wg0 </code> 停止は次のようになります。 <code bash> $ sudo wg-quick down wg0 </code> === Windows === クライアントを[[https://download.wireguard.com/windows-client/wireguard-installer.exe|公式サイト]]からダウンロードしてインストールします。 === Android === クライアントを[[https://play.google.com/store/apps/details?id=com.wireguard.android|Google Play]]からダウンロードしてインストールします。 ==== メモ ==== === 鍵の転送 === 設定ファイルには、鍵を書込む必要があるが、当然鍵をネットワーク越しに渡すのは注意が必要である。 秘密鍵は外部に出さないように注意すること。 公開鍵だけがわかったところで簡単にはクラックされないが両方そろうとそれは問題である。
wireguard.txt
· 最終更新:
2025/12/12 01:05
by
araki
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ