LoginSignup
1
2

More than 1 year has passed since last update.

IPv6リンクローカルアドレスを固定する

Last updated at Posted at 2022-02-05

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にしてみました。
の部分はお好みでどうぞ

再度ネットワークスインターフェースを確認

$ 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 aeno2には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設定のファイルを既に作成してある場合は addressesfe80::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リンクローカルアドレスの恒久的な固定化ができました。

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2