Vyos1.5 NAT66を試してみた
vyos1.5 NAT66を試してみた。
エーピーコミュニケーションズ Advent Calendar 2024 18日目
極めて限定的な場面ですが、Vyosに建てているVPNのクライアント側でIPv6が必要になってしまった。
試してみたので、以下に記載する。
環境図
Linode(VPS)上にVyosがある。
モバイル端末は家の環境を参照したい時等に、このLinode上のVyosを経由して家の環境に到達できるよう設定されている。
そしてこのモバイル端末は、Linodeから割り当てられたIPv4アドレスを用いてインターネットに出て行っている。
このモバイル端末から、VPS上のvyosに振られているIPv6アドレスからインターネットに出ようという記事になっている。
下記バージョン
vyos@vyos:~$ show version
Version: VyOS 1.5-rolling-202412140007
vyos@vyos:~$ show version all | grep wireguard
ii wireguard-tools 1.0.20210914-1+b1 amd64 fast, modern, secure kernel VPN tunnel (userland utilities)
準備編
IPv6ユニークローカルアドレス設計
モバイル端末に割り振るIPを設計する。
IPv6のプライベート環境で使用できるIPは「FD00::/8」となっている。[1]
そのため、このレンジからお好みで/64切り出して対応することとする。
今回は「fd00:105::/64」を使用する。
WireGuardにIPv6を割り振り
次にWireGuardにIPv6を割り振る。
Linode上のVyosには以下を設定。
vyos@vyos# set interfaces wireguard wg2 address 'fd00:105::172:18:76:17/64'
モバイル端末側は以下を設定した。
スマホで手打ちするのが嫌だったので、WindowsのWireGuardで作成してスマホにインポートを行った。
[Interface]
PrivateKey = ***************
Address = 172.18.76.17/32,fd00:101::172:18:76:17/128
DNS = [お好み]
[Peer]
PublicKey = ***************
AllowedIPs = 0.0.0.0/0,::/0
Endpoint = [Linode上のVyosのグローバルアドレス]
PersistentKeepalive = 25
インターネットIDの箇所の設計は迷ったが、RFC 6052的な感じにした。[2]
Linode IPv6受け入れ
次にLinodeのIPv6を受け入れる。
Linodesの最低構成Nanode1GBを契約してもIPv6が1つ割り振られる。
契約したLinodesにはRAで降ってくるので、以下をLinode上のVyosに設定した。
vyos@vyos# set interfaces ethernet eth0 ipv6 address autoconf
コミットを行うとすぐにIPv6アドレスが降られる。
ルートも自動で追加されているので手動で追加を行う必要はない。
確認するためのコマンドは以下になる。
vyos@vyos:~$ show interfaces detail
vyos@vyos:~$ show ipv6 route
Vyos NAT66設定
上記でようやく準備が整った。
以下を参考にしつつ、設定を投入した。
set nat66 source rule 100 outbound-interface name 'eth0'
set nat66 source rule 100 source prefix 'fd00::/8'
set nat66 source rule 100 translation address 'masquerade'
fd00/8すべてが外に出れるように設定を投入したが、実運用を考えると存在するセグメント(設計したセグメントのみ)をルールのソースにした方が良いと思われる。
設定の中身は下記で確認できる。
vyos@vyos:~$ show nat66 source rules
Rule Source Destination Proto Out-Int Translation
------ --------- ------------- ------- --------- -------------
100 fd00::/8 ::/0 IP6
設定が終わってコミットできたら接続のテストを行う。
確認してみるとLinodeから出れているようでうまくいった。
下記で確認。
Discussion