文書の過去の版を表示しています。
目次
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で動作しているものとする。
サーバ
インストール
パッケージがあるのでそれをインストールすればよい。
$ sudo apt install -y wireguard
設定
最初に行うべきは鍵の生成である。 鍵はwgコマンドで生成する。 鍵は画面に表示されるだけだが、ファイルに保存しておいた方が後々便利なのでそのようにする。
$ 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}
別にどこに保存してもいいですが、ばらけるとめんどくさいのでとりあえず/etc/wireguard に置きます。 一応中身を見られないように600にしておきます。
次に、設定ファイルを作りますが、これはVPNのインターフェイスごとに作ります。 仮に wg0 がインターフェイスだとしたら、/etc/wireguard/wg0.conf というファイルになります。 これも600で作成します。
- 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
Peerは接続してくるクライアントごとに持たせることができる。 DHCP機能はないので、IPはここで設定されたものが渡される。 クライアント側で生成されたPublicKeyに従って割り当てが行われる。
外部に対して、192.168.1.2:51800/UDP を公開して、サービスを起動すればVPN接続を待ち受ける。
$ sudo systemctl enable wg-quick@wg0 $ sudu systemctl start wg-quick@wg0
