IPv6が有効になっている機器では、基本的にMacアドレスから自動的にリンクローカルユニキャストアドレスが生成されます。
しかし、サーバー管理などを行う上で扱いにくいので、覚えやすいアドレスに変更してみました。
想定事項
- Linuxサーバーを利用していて、IPv6で同一ネットワーク内のリンクローカルユニキャストアドレスを固定化したい
-
ip
コマンドが利用できる環境を想定
ネットワークスインターフェースを確認
ip addr
(ip a
)コマンドでネットワークのIPアドレスを確認します。
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 90:1b:0e:ff:aa:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eno2
valid_lft forever preferred_lft forever
inet6 fe80::921b:eff:feff:aabb/64 scope link
valid_lft forever preferred_lft forever
1番のlo
はループバック用のネットワークインターフェースです。
2番のeno2
が今回設定を変更するネットワークインターフェースです。
※メーカーによって名称は異なります。以降eno2
は必ずご利用の環境にあった名前に置き換えてください。
目次
一時的に固定する(CentOS7・Ubuntu20.04共通)
既に割り振られているアドレスを消去する
先ほどのコマンドでeno2
にはfe80::921b:eff:feff:aabb/64
が割り当てられていました。
それを一旦消去します。
$ sudo ip a del fe80::921b:eff:feff:aabb/64 dev eno2
使用したいIPv6アドレスを設定する
$ sudo ip a add fe80::2/64 dev eno2
ローカルIPv4アドレスが192.168.1.2
なので、リンクローカルIPv6アドレスはfe80::2/64
にしてみました。
2
の部分はお好みでどうぞ
再度ネットワークスインターフェースを確認
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 90:1b:0e:ff:aa:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eno2
valid_lft forever preferred_lft forever
inet6 fe80::2/64 scope link
valid_lft forever preferred_lft forever
これでIPv6リンクローカルアドレスの一時的な固定化ができました。
しかし、このままではネットワークを再起動するとリセットされてしまうため、以下の設定をします。
CentOS7で恒久的に固定する
設定ファイルを編集
$ sudo vim /etc/sysconfig/network-scripts/ifcfg-eno2
eno2
の部分はお使いの環境に合わせてください。
# IPv6
の箇所に以下の行を追加
IPV6ADDR="fe80::2/64"
ネットワークをリロード
$ sudo systemctl restart network
ネットワークスインターフェースを確認
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 90:1b:0e:ff:aa:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eno2
valid_lft forever preferred_lft forever
inet6 fe80::2/64 scope link
valid_lft forever preferred_lft forever
リロードしてもIPアドレスが固定化されています。
これでCentOS7環境でのIPv6リンクローカルアドレスの恒久的な固定化ができました。
Ubuntu20.04で恒久的に固定する
既に割り振られているアドレスを消去する
$ ip a
でeno2
にはfe80::921b:eff:feff:aabb/64
が割り当てられていました。
それを一旦消去します。
$ sudo ip a del fe80::921b:eff:feff:aabb/64 dev eno2
##デフォルトの設定ファイルを無効化
初期の設定ファイルの名前を変更して無効化し、新しい設定ファイルを作成します。
※IPv4設定のファイルを既に作成してあり、そこに追記したい場合はこの工程を飛ばしてください。
$ cd /etc/netplan/
$ sudo mv 00-installer-config.yaml 00-installer-config.yaml.disabled
$ sudo touch 99-netcfg.yaml
設定ファイルを編集
※IPv4設定のファイルを既に作成してある場合はそのファイル名
$ sudo vim 99-netcfg.yaml
中身は次のようにします。
network:
version: 2
ethernets:
eno2:
addresses: [
192.168.1.2/24,
fe80::2/64
]
gateway4: 192.168.1.1
nameservers:
addresses: [
8.8.8.8,
8.8.4.4
]
search: []
optional: true
この環境では次のように設定していますので、お使いの環境に合わせた設定に置き換えてください。
名称 | 意味 |
---|---|
eno2 | 設定するネットワークインターフェイス |
192.168.1.2/24 | 固定するIPv4アドレス |
fe80::2/64 | 固定するIPv6リンクローカルアドレス |
192.168.1.1 | IPv4のデフォルトゲートウェイ(ルータ等) |
8.8.8.8 | DNSサーバ(プライマリ) |
8.8.4.4 | DNSサーバ(セカンダリ) |
※IPv4設定のファイルを既に作成してある場合は addresses
に fe80::2/64
(固定するIPv6リンクローカルアドレス)を追加するだけでOK
ネットワークをリロード
$ sudo netplan apply
ネットワークスインターフェースを確認
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 90:1b:0e:ff:aa:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eno2
valid_lft forever preferred_lft forever
inet6 fe80::2/64 scope link
valid_lft forever preferred_lft forever
リロードしてもIPアドレスが固定化されています。
これでUbuntu20.04環境でのIPv6リンクローカルアドレスの恒久的な固定化ができました。