OpenWrt + Starlink 環境での自宅IPv6アドレスでのWireGuardサーバ
こんにちは、無能です。
自宅前回の記事で自宅回線にパブリックなIPv6アドレスを取得することができたため、以下のようにします。
サーバー: OpenWrt + WireGuard Server
Interface: wg1(10.2.0.0/24)
出口IPとしては自宅回線、帯域上限(VPS等の帯域上限値)フリーの環境
クライアント: スマホ、ノートPC
また、今回の目的としてこのWireGuradサーバからConoHa VPS上でホストしているWireGuardサーバのインターフェイス wg0(10.1.0.0/24)に疎通出来るようにしたいと思います。
常時wg1のインターフェイスのVPN環境を作ることで常に内部ネットワーク上への参加を帯域気にすること無く有効に出来るようになります。このネットワークセグメント上に参加出来ること自体が脆弱になるのでは、という懸念はありますがパブリックIPで公開するよりはちょっとマシなのとそもそもwg0のインターフェイス上に参加できればそもそもおしまい。
今回の対応によってOpenWrt側でDnsmasqで内部用DNSサーバをホストして広告ブロック用も常時行えるようになります。
OpenWrtにWireGuard
wireguard-tools をインストールします。
root@OpenWrt:~# apk search wireguard
kmod-wireguard-6.12.74-r1
luci-proto-wireguard-26.120.35050~a611522
prometheus-node-exporter-ucode-wireguard-2024.02.07-r2
rpcd-mod-wireguard-2
wireguard-tools-1.0.20250521-r1
root@OpenWrt:~# apk add wireguard-tools-1.0.20250521-r1また、おそらく luci-proto-wireguard-26.120.35050~a611522 をいれることでWeb UI上のLuCIからWireGuardの設定が出来るようになるんだと思いますが入れません。
設定
/etc/config/network
以下の用にサーバ側のインターフェイスを作成。
~~~
config interface 'wg1'
option proto 'wireguard'
option private_key 'wg1 server private key'
option listen_port '51820'
list addresses '10.2.0.1/24'
list addresses 'fd02::1/64'
option mtu '1420'
~~~以下で許可するクライアント側の設定も追加します。本来は PreSharedKey を設定し事前共有鍵の設定も行った方がいいですが一旦スキップ。
config wireguard_wg1
option public_key 'wg1 client public key'
list allowed_ips '10.2.0.2/32'
list allowed_ips 'fd02::2/128'
list allowed_ips 'client ipv6 addr ::2/128'
option persistent_keepalive '25'
option route_allowed_ips '1'クライアント側で wg1.conf を作成します。全てのトラフィックをOpenWrtルータを介します。
[Interface]
PrivateKey = "wg1 client public key "
Address = 10.2.0.2/24, fd02::2/64, client ipv6 addr::2/64
DNS = 10.2.0.1 # すでにDnsmasqでDNSサーバ建てているので設定済み
[Peer]
PublicKey = "wg1 server public key"
Endpoint = "wg1 ipv6 addr :51820"
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25このままだと、ファイアーフォールで弾かれるので wg のゾーン作成し wan 側IPv6での 51820/udp のポート解放、そして自宅環境下としての LAN 許可、 wg が wan を通り外へ出られるようにします。
基本的にIPv6の場合はNAT不要なので明示的に切っておきます。
/etc/config/firewall
config zone
option name 'wg'
list network 'wg1'
list network 'wg0'
option input 'ACCEPT'
option forward 'ACCEPT'
option output 'ACCEPT'
option masq '1'
option masq6 '0'
config rule
option name 'Allow-WireGuard-IPv6'
option src 'wan'
option family 'ipv6'
option proto 'udp'
option dest_port '51820'
option target 'ACCEPT'
config forwarding
option src 'wg'
option dest 'lan'
config forwarding
option src 'wg'
option dest 'wan'この状態だと wg0 と疎通は出来ないので設定追記
wg0 サーバ側での設定も以下に合わせて追記するものとします(ここでは割愛します)
/etc/config/network
config route
option interface 'wg0'
option target '10.1.0.0/24'
config interface 'wg0'
option proto 'wireguard'
option private_key 'wg0 client private key'
list addresses '10.1.0.99/24'
config wireguard_wg0
option public_key 'wg0 server public key'
option endpoint_host 'wg0 server addr'
option endpoint_port '51820'
list allowed_ips '10.1.0.0/24'
list allowed_ips '10.2.0.0/24'
option persistent_keepalive '25'これで基本的に設定完了ですが dnsmasq は以下
自分の環境だと最初から入っていましたので有効化するだけ
/etc/init.d/dnsmasq enable
/etc/init.d/dnsmasq start後は /etc/dnsmasq.d/adblock.conf みたいにリスト入れてブロックする。
/etc/init.d/dnsmasq restartここまで来れば再読み込みするだけです。
/etc/init.d/network restart
/etc/init.d/firewall restartこれによってCGNAT IPであるIPv4からでも、IPv6でもOKなデュアルスタック環境の完了です。
OpenWrt環境からのスピードテスト
以下はWireGuard接続していない有線環境
$ speedtest-go -s 48463
speedtest-go v1.7.10 (git-dev) @showwin
✓ ISP: 206.83.125.125 (Starlink) [35.6893, 139.6899]
✓ Found 1 Specified Public Server(s)
✓ Test Server: [48463] 5.80km Tokyo by IPA CyberLab 400G
✓ Latency: 41.037747ms Jitter: 8.459256ms Min: 24.163074ms Max: 57.008632ms
✓ Packet Loss Analyzer: Running in background (<= 30 Secs)
✓ Download: 173.63 Mbps (Used: 211.22MB) (Latency: 35ms Jitter: 6ms Min: 25ms Max: 41ms)
✓ Upload: 45.99 Mbps (Used: 81.23MB) (Latency: 35ms Jitter: 29ms Min: 23ms Max: 136ms)
✓ Packet Loss: N/A以下は5GHz帯のWi-Fi環境の wg1 のVPN環境から
$ speedtest-go -s 48463
speedtest-go v1.7.10 (git-dev) @showwin
✓ ISP: 206.83.125.125 (Starlink) [35.6893, 139.6899]
✓ Found 1 Specified Public Server(s)
✓ Test Server: [48463] 5.80km Tokyo by IPA CyberLab 400G
✓ Latency: 28.199611ms Jitter: 1.516613ms Min: 26.461289ms Max: 31.90411ms
✓ Packet Loss Analyzer: Running in background (<= 30 Secs)
✓ Download: 79.63 Mbps (Used: 114.99MB) (Latency: 98ms Jitter: 39ms Min: 27ms Max: 151ms)
✓ Upload: 65.86 Mbps (Used: 96.92MB) (Latency: 62ms Jitter: 73ms Min: 26ms Max: 285ms)
✓ Packet Loss: N/Aこれで外からでもスマホからこの wg1 のVPN環境にアクセス出来るようになりました。