ULAのPrefixを生成するなら
openssl rand -hex 5 | sed -r 's|^(.{2})(.{4})(.{4})|fd\1:\2:\3::/48|'
ローカルアドレスのプレフィックスの場合は、
prefix に16のネットワーク・アドレスを付ける。まとめてランダム生成すると。
openssl rand -hex 7 | sed -r 's|^(.{2})(.{4})(.{4})(.{4})|fd\1:\2:\3:\4::/64|'
実行例
root@router01:~# openssl rand -hex 5 | sed -r 's|^(.{2})(.{4})(.{4})|fd\1:\2:\3::/48|' fd8b:9230:0268::/48
root@router01:~# openssl rand -hex 7 | sed -r 's|^(.{2})(.{4})(.{4})(.{4})|fd\1:\2:\3:\4::/64|' fd71:c054:8514:c035::/64
あとは、これに ::1 とか書いておけば、実験用なサンプルのv6アドレスをランダムに生成することができる。
たとえば、::1
と書いておく。
root@router01:~# openssl rand -hex 7 | sed -r 's|^(.{2})(.{4})(.{4})(.{4})|fd\1:\2:\3:\4::1/64|' fd8a:c6e2:e280:275d::1/64
フルランダムで、128ビットのすべてを作ってもいいけど、実験用にv6アドレスを作る分には、MACアドレスから生成したりインタフェース名も冗長だし可視性も低下するので、ランダムで/64くらいで、適当な実験をするには十分なのです。
アドレスを追加する例
ユニークローカルユニキャストアドレスを明示する
ADDR=$(openssl rand -hex 7 | sed -r 's|^(.{2})(.{4})(.{4})(.{4})|fd\1:\2:\3:\4::1/64|') ip addr add $ADDR dev eth1 ip -6 addr show eth1
ユニークローカルユニキャストアドレス
fd00 ってなに?ユニークローカルユニキャストアドレスってfc00 じゃないの?という疑問も出てくると思うが。
fc00::/7 は 先頭7ビットが1111,110である
F | C | 0 | 0 |
---|---|---|---|
1111 | 1100 | 0000 | 0000 |
先頭7ビット(1111,110 ) が固定で残りの全ては0/1のすべてを含む
1111,1100,000,....0 から 1111,1101,1111,111...1である。
すなわち FC00:00... から FDFF までである。
2023-04-21
実行例を追記
FC00 と fd12 などのプレフィックスについて追記。