プレフィックス長/40をBGPを使っている環境で取得し、クライアント側に vxlanをつかって /64 と /48 プレフィックスをルーティングさせてみたので、備忘録として挙げてみました。なお環境はクライアントサーバともにDebian 12(net inst, network-manager無)です。
まず最初は/40をどのように分割して複数のクライアントに/64と/48サブネットをルーティングさせるのかを検討してみました。
今回割り当てられた/40は 2001:db8:ae00::/40 だとします。/48サブネットは 2001:db8:ae00::/48のプレフィックス(つまり2001:db8:ae00:0::/48)で /64 と /80のvxlanインターフェースに割り当てるプレフィックスを予約して使用することにしてみましたので、/48サブネットは2001:db8:ae01::/40から2001:db8:aeff::/40までの255個にすることにしました。
続いてルーティングさせる/64ですが、前述の予約プレフィックスの内 2001:db8:ae00:01::/64 から 2001:db8:ae00:ff::/64 までの255個を割り当てるようにしました。
最後はvxlanに割り当てる/80のプレフィックスですが、2001:db8:ae00:0:01::/80から2001:db8:ae00:0:ff::/80までの255個を割り当てるようにしました。
この方針に沿い、vxlanのインターフェース名は、vxlan01からvxlanffまでの255個とします。これで、/40を255個に分割して/64と/48を割り当てることが出来ることになります。
プレフィックス割り当ての方針がきまったので、次は サーバ側のvxlan01(id=01)設定例です。なお、remote 10.1.1.2はクライアント側のグローバルアドレスです。
つついてクライアント側の設定です。vxlanをipv6のデフォルトゲートウェイにする場合は、例として以下のようにしてみました。
続いてIPv6 default gatewayを別途優先する場合のクライアント側のvxlan01(id=01)の設定例(シンプルなポリシーベースルーティングを適用した場合)です。
今回は以上です。それでは。
まず最初は/40をどのように分割して複数のクライアントに/64と/48サブネットをルーティングさせるのかを検討してみました。
今回割り当てられた/40は 2001:db8:ae00::/40 だとします。/48サブネットは 2001:db8:ae00::/48のプレフィックス(つまり2001:db8:ae00:0::/48)で /64 と /80のvxlanインターフェースに割り当てるプレフィックスを予約して使用することにしてみましたので、/48サブネットは2001:db8:ae01::/40から2001:db8:aeff::/40までの255個にすることにしました。
続いてルーティングさせる/64ですが、前述の予約プレフィックスの内 2001:db8:ae00:01::/64 から 2001:db8:ae00:ff::/64 までの255個を割り当てるようにしました。
最後はvxlanに割り当てる/80のプレフィックスですが、2001:db8:ae00:0:01::/80から2001:db8:ae00:0:ff::/80までの255個を割り当てるようにしました。
この方針に沿い、vxlanのインターフェース名は、vxlan01からvxlanffまでの255個とします。これで、/40を255個に分割して/64と/48を割り当てることが出来ることになります。
プレフィックス割り当ての方針がきまったので、次は サーバ側のvxlan01(id=01)設定例です。なお、remote 10.1.1.2はクライアント側のグローバルアドレスです。
auto vxlan01 iface vxlan01 inet6 static address 2001:db8:ae00:0:01::1 netmask 80 pre-up ip link add vxlan01 type vxlan id 01 dstport 4789 remote 10.1.1.2 dev enp1s0f0 post-up ip -6 route add 2001:db8:ae00:01::/64 via 2001:db8:ae00:0:01::2 dev vxlan01 post-up ip -6 route add 2001:db8:ae01::/48 via 2001:db8:ae00:0:01::2 dev vxlan01 post-down ip link del dev vxlan01サーバ側の設定で特に難しいところはありません。
つついてクライアント側の設定です。vxlanをipv6のデフォルトゲートウェイにする場合は、例として以下のようにしてみました。
auto vxlan01 iface vxlan01 inet6 static address 2001:db8:ae00:0:01::2 netmask 80 gateway 2001:db8:ae00:0:01::1 pre-up ip link add vxlan01 type vxlan id 01 dstport 4789 remote 10.1.1.1 dev enp6s0f1 post-up ip -6 addr add 2001:db8:ae00:01::1/64 dev vxlan01 post-up ip -6 addr add 2001:db8:ae01::1/48 dev vxlan01 post-down ip link del dev vxlan01なお remote 10.1.1.1はサーバ側のグローバルアドレスです。
続いてIPv6 default gatewayを別途優先する場合のクライアント側のvxlan01(id=01)の設定例(シンプルなポリシーベースルーティングを適用した場合)です。
auto vxlan01 iface vxlan01 inet6 static address 2001:db8:ae00:0:01::2 netmask 80 pre-up ip link add vxlan01 type vxlan id 01 dstport 4789 remote 23.150.41.227 dev enp6s0f1 post-up ip -6 addr add 2001:db8:ae00:01::1/64 dev vxlan01 post-up ip -6 addr add 2001:db8:ae01::1/48 dev vxlan01 post-up echo 100 vxlan01 >> /etc/iproute2/rt_tables post-up ip -6 rule add from all to 2001:db8:ae00:0:01::/80 tab vxlan01 priority 100 post-up ip -6 rule add to all from 2001:db8:ae00:0:01::/80 tab vxlan01 priority 100 post-up ip -6 route add to 2001:db8:ae00:0:01::/80 dev vxlan01 tab vxlan01 post-up ip -6 route add to default via 2001:db8:ae00:0:01::1 dev vxlan01 tab vxlan01 post-down ip -6 rule del from all to 2001:db8:ae00:0:01::/80 tab vxlan01 priority 100 post-down ip -6 rule del to all from 2001:db8:ae00:0:01::/80 tab vxlan01 priority 100 post-down sed -i '/vxlan01/d' /etc/iproute2/rt_tables post-up echo 101 routed64 >> /etc/iproute2/rt_tables post-up ip -6 rule add from all to 2001:db8:ae00:01::/64 tab routed64 priority 101 post-up ip -6 rule add to all from 2001:db8:ae00:01::/64 tab routed64 priority 101 post-up ip -6 route add to 2001:db8:ae00:01::/64 dev vxlan01 tab routed64 post-up ip -6 route add to default via 2001:db8:ae00:0:01::1 dev vxlan01 tab routed64 post-down ip -6 rule del from all to 2001:db8:ae00:01::/64 tab routed64 priority 101 post-down ip -6 rule del to all from 2001:db8:ae00:01::/64 tab routed64 priority 101 post-down sed -i '/routed64/d' /etc/iproute2/rt_tables post-up echo 102 routed48 >> /etc/iproute2/rt_tables post-up ip -6 rule add from all to 2001:db8:ae01::/48 tab routed48 priority 102 post-up ip -6 rule add to all from 2001:db8:ae01::/48 tab routed48 priority 102 post-up ip -6 route add to 2001:db8:ae01::/48 dev vxlan01 tab routed48 post-up ip -6 route add to default via 2001:db8:ae00:0:01::1 dev vxlan01 tab routed48 post-down ip -6 rule del from all to 2001:db8:ae01::/48 tab routed48 priority 102 post-down ip -6 rule del to all from 2001:db8:ae01::/48 tab routed48 priority 102 post-down sed -i '/routed48/d' /etc/iproute2/rt_tables post-down ip link del dev vxlan01こちらは少し複雑ですが、例えば vxlan01のインターフェースに割り当てられた /80アドレス宛もしくは/80からのパケットは vxlan01 (100) というテーブルを使うルールとし、同じく、/80宛もしくは/80からのパケットは、対向のサーバ側vxlanをデフォルトゲートウェイにするようにしています。(以下 /64 /48も同様です。) こうすることでたとえばフレッツ光などで提供される半固定の IPv6 ネットワークを使いつつ、固定のIPv6アドレスを同時に使うことが出来るようになります。
今回は以上です。それでは。
コメント
コメントを投稿