Linodeで追加のIPv6割り当ててWireguard のクライアントIPとして使う
半年前だが、以下の記事を投稿した。
環境図の引用
上記の記事はモバイル端末にプライベート向けのIPv6の付与を行ったものになる。
しかし、先日Linodeのドキュメントを読んでいたところ以下の記述を見つけてしまった。
Manage IP addresses on a Compute Instance
上記に「Adding an IP address」の記載がありこれを行うと追加でIPv6の割り当てを受けれるとのこと。
この手順でグローバルなIPv6を付与していただければNAT66する必要もなくIPv6を使うことができるだろう。
早速追加してみた。そんなに使用する予定はないが、念のため/56で取得してみた。
SGリージョンなので前回の記事と異なるアドレス
追加しても自動ではアドレスが降ってこない。おそらく、ルートだけ向いているような感じがする。
念のため、Wireguard のインターフェースにアドレスを振って到達性が有るのか確かめることとする。
vyos@vyos# set interfaces wireguard wg2 address 2001:0DB8::1/64
vyos@vyos# commit
上記はLinodeより割り振られたIPv6に読み替えて設定すること。
/56で到達性があるはずなので/64でとりあえずやってみる。
設定後、Pingを行うと応答があった。到達性はある。
実際に置き換えることができそうなので前回設定したアドレスを置き換えていく。
NATの削除
前回の記事と同じ設定の仕方をしていれば下記で問題なし。
NAT66設定していなければ実施しなくてよい。
delete nat66 source rule 100 outbound-interface name 'eth0'
delete nat66 source rule 100 source prefix 'fd00::/8'
delete nat66 source rule 100 translation address 'masquerade'
commit
消えたことを確認する。
vyos@vyos:~$ show nat66 source rules
Rule Source Destination Proto Out-Int Translation
------ -------- ------------- ------- --------- -------------
vyos@vyos:~$
WireGuardにIPv6を割り振り
Wireguard はDHCPが使用できない(はず)なので基本的にはStaticでアドレスを割り振る必要がある。
とはいえ、ここで決めたアドレスがそのまま相手方のサーバにアクセスログが残るのでそれを考えると1とか2とか安直なものにはしたくないと考えた。
※特に気にしなくてもいいような気もするが、気持ち的に。
今回はWireguard インターフェース毎に/112を割り振って最後のオクテットを2~65534でランダムで割り振ることとした。接続台数も多くないし自宅環境なので試験的な意味合いもある。
まずはLinodeのVyosから割り振ることとする。出口側なので、ここは1を割り当てた。
set interfaces wireguard wg2 address 2001:0DB8:1111:2222:3333:4444:5555:1/112
モバイル端末側は以下のようにした。
[Interface]
PrivateKey = ***************
Address = 172.18.76.17/32,2001:0DB8:1111:2222:3333:4444:5555:74F/128
DNS = [お好み]
[Peer]
PublicKey = ***************
AllowedIPs = 0.0.0.0/0,::/0
Endpoint = [Linode上のVyosのグローバルアドレス]
PersistentKeepalive = 25
今回は適当に74F(1871)としてあるが、割り振れるアドレスであれば何でもよい。
接続確認
下記で確認。IPv6が表示されていればうまくいっている。
Discussion