WireGuard

Arch Linuxは意外に標準パッケージが少ないが、ワイヤーガードがあるではないか。逆に、Ubuntuは19.10以上でないとない。ということでArchWikiを参考にセットアップ。

# pacman -S wireguard-tools
# mkdir /etc/wireguard
# cd /etc/wireguard
# wg genkry > server.key
# chmod 600 server.key
# wg pubkey < server.key > server.pub
# wg genkry > android.key
# chmod 600 android.key
# wg pubkey < android.key > android.pub
# vi wg0.conf

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = xxxx
PrivateKey = xxxxxxxxxxxxxxxxx
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = xxxxxxxxxxxxxxxx
AllowedIPs = 10.0.0.2/32

# chmod 600 wg0.conf
# ufw allow xxxx/udp
# systemctl start wg-quick@wg0
# systemctl status wg-quick@wg0
# systemctl enable wg-quick@wg0
# wg show
# wg showconf wg0

設定の説明は以下を参照
https://github.com/pirate/wireguard-docs

net.ipv4.ip_forward=1を確認する。設定されていなければ、設定を追加する。
sysctl net.ipv4.ip_forward
echo net.ipv4.ip_forward=1 >> /etc/sysctl.d/99-sysctl.d
ufwが動いていることを確認し、動いていなければ必要な設定をする。
systemctl status ufw
systemctl enable ufw
systemctl start ufw

Androidは、Google PlayでWireGuardをインストール。
Interfaceの設定は、PrivateKeyはandroid用に作成したPrivateKeyを入力する。
アドレスはwg0.confのPeerに設定したAllowedIPsを入力。
ServerのPeerに設定したアドレスの入力。
DNSは8.8.8.8, 8.8.4.4を入力。2つ設定して置いたほうがレスポンスが良い印象。1.1.1.1, 1.0.0.1でもよいと思う。
PortとMTUは入力しなくてもよい。
PublicKeyは自動変換で表示されるので、wg0.confのPeerに設定したものと比較すると、入力ミスが発見しやすい。
Peerを追加し、サーバ用のPrivateKeyをPublicKeyに変換したものを入力。
Endpointは、サーバアドレス:ポート
Allowed IPsは、0.0.0.0/0を入力。

デフォルトのポートは51820。VPNとして、非常に早くて快適。
クライアントIPを自動化するには細工が必要なので、手動で割り振るのが少し面倒。

通信がudpしか使えないので、中国のGFWではブロックされやすようだ。GFW対策には、PersistentKeepaliveを使わないほうがよいような気がする。

コメント