↓ メインコンテンツへスキップ
  1. Linux 関連記事一覧/
  2. Ubuntu 26.04 LTS Server/

Ubuntu 26.04 LTS Server のネットワーク設定(Netplan)

目次

Netplan によるネットワーク設定

Ubuntu では Netplan でネットワークを設定します。/etc/netplan/ 配下の YAML ファイルを読み込み、実際の設定はバックエンド(renderer)が行う仕組みです。

renderer には systemd-networkd と NetworkManager があり、Server 版の既定は systemd-networkd、Desktop 版の既定は NetworkManager です。本記事は Server 版を対象とします。

静的アドレス、DHCP、IPv6 の自動設定(ルータ広告)、DHCPv6 の設定方法を、実際にルータと通信した結果とあわせて解説します。

現在の設定を確認する

インタフェースとアドレスは ip コマンドで確認します。-br(brief)を付けると一覧で表示されます。

アドレスの確認コマンド
ip -br a
ip a show [INTERFACE]
アドレスの確認 実行例
kazulog@sv1:~$ ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128
ens2             UP             10.19.12.11/16 fe80::5054:ff:fedc:e2c5/64 
ens3             UP             192.168.100.100/24 metric 1024 2001:db8:100:0:5054:ff:feba:7498/64 fe80::5054:ff:feba:7498/64 
kazulog@sv1:~$ ip a show ens3
3: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:ba:74:98 brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    altname enx525400ba7498
    inet 192.168.100.100/24 metric 1024 brd 192.168.100.255 scope global dynamic ens3
       valid_lft 2319sec preferred_lft 2319sec
    inet6 2001:db8:100:0:5054:ff:feba:7498/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591997sec preferred_lft 604797sec
    inet6 fe80::5054:ff:feba:7498/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
kazulog@sv1:~$

経路と名前解決は ip route と resolvectl status で確認します。

経路の確認 実行例
kazulog@sv1:~$ ip route
default via 10.19.0.1 dev ens2 proto static
default via 192.168.100.1 dev ens3 proto dhcp src 192.168.100.100 metric 1024 
10.19.0.0/16 dev ens2 proto kernel scope link src 10.19.12.11 
192.168.100.0/24 dev ens3 proto kernel scope link src 192.168.100.100 metric 1024 
192.168.100.1 dev ens3 proto dhcp scope link src 192.168.100.100 metric 1024 
kazulog@sv1:~$ ls -l /etc/netplan/
total 4
-rw------- 1 root root 243 Sep 11 11:59 50-cloud-init.yaml
kazulog@sv1:~$

Netplan から見た状態は netplan status で確認できます。どのアドレスがどこから来たか(静的、DHCP、ルータ広告)まで表示されるため、設定の確認に便利です。

Netplan から見た状態の確認コマンド
sudo netplan status --all
Netplan から見た状態 実行例
kazulog@sv1:~$ sudo netplan status --all 2>&1 | head -30
     Online state: online
    DNS Addresses: 127.0.0.53 (stub)
       DNS Search: kazulog.example

●  1: lo ethernet UNKNOWN/UP (unmanaged)
      MAC Address: 00:00:00:00:00:00
        Addresses: 127.0.0.1/8
                   ::1/128

●  2: ens2 ethernet UP (networkd: ens2)
      MAC Address: 52:54:00:dc:e2:c5 (Red Hat, Inc.)
        Addresses: 10.19.12.11/16
                   fe80::5054:ff:fedc:e2c5/64 (link)
    DNS Addresses: 10.1.0.1
                   10.1.0.2
           Routes: default via 10.19.0.1 (static)
                   10.19.0.0/16 from 10.19.12.11 (link)
                   fe80::/64 metric 256

●  3: ens3 ethernet UP (unmanaged)
      MAC Address: 52:54:00:ba:74:98 (Red Hat, Inc.)
        Addresses: 192.168.100.100/24 (dynamic, dhcp)
                   2001:db8:100:0:5054:ff:feba:7498/64 (dynamic, ra)
                   fe80::5054:ff:feba:7498/64 (link)
    DNS Addresses: 192.168.100.1
                   2001:db8:100::1
       DNS Search: kazulog.example
           Routes: default via 192.168.100.1 from 192.168.100.100 metric 1024 (dhcp)
                   192.168.100.0/24 from 192.168.100.100 metric 1024 (link)
                   192.168.100.1 from 192.168.100.100 metric 1024 (dhcp, link)

Netplan が管理していないインタフェースにアドレスが付いていることがあります。 上の例では ens3 が (unmanaged) と表示されているのに DHCP のアドレスを持っています。これは起動時の仕組み(initramfs)が用意した予備の設定が残っているためで、環境によって状態が異なります。

予備の設定の確認 実行例
kazulog@sv1:~$ networkctl status ens3 | head -20
● 3: ens3
                   Link File: /usr/lib/systemd/network/99-default.link
                Network File: /run/systemd/network/zzzz-dracut-default.network
                       State: routable (configured)
                Online state: online
                        Type: ether
                        Path: pci-0000:00:03.0
                      Driver: virtio_net
                      Vendor: Red Hat, Inc.
                       Model: Virtio network device
           Alternative Names: enp0s3
                              enx525400ba7498
            Hardware Address: 52:54:00:ba:74:98
                         MTU: 1500 (min: 68, max: 65535)
                       QDisc: pfifo_fast
IPv6 Address Generation Mode: eui64
    Number of Queues (Tx/Rx): 1/1
            Auto negotiation: no
                     Address: 192.168.100.100 (DHCPv4 via 192.168.100.1)
                              2001:db8:100:0:5054:ff:feba:7498
kazulog@sv1:~$ ls /run/systemd/network/
10-netplan-ens2.network  zzzz-dracut-default.network
kazulog@sv1:~$

Network File が /run/systemd/network/zzzz-dracut-default.network になっています。Netplan で設定すると 10-netplan-*.network が生成され、そちらが使われます。

設定ファイルの構成

設定ファイルは /etc/netplan/ に置きます。クラウドイメージやインストーラが作成したファイルが既にある場合が多く、複数のファイルがある場合はファイル名順に読み込まれ、同じ項目は後のファイルが優先されます。

ファイル内容
50-cloud-init.yamlcloud-init が作成(クラウドイメージ)
00-installer-config.yamlインストーラが作成(通常のインストール)
60-*.yaml など管理者が追加するファイル
既存の設定ファイル 実行例
kazulog@sv1:~$ sudo cat /etc/netplan/50-cloud-init.yaml
network:
  version: 2
  ethernets:
    ens2:
      addresses:
      - "10.19.12.11/16"
      nameservers:
        addresses:
        - 10.1.0.1
        - 10.1.0.2
      dhcp4: false
      routes:
      - to: "default"
        via: "10.19.0.1"
kazulog@sv1:~$

設定ファイルの権限は 600 にします。 それ以外の場合、Netplan が警告を出します。パスワードなどを書くことがあるためです。

権限が緩い場合の警告 実行例
kazulog@sv1:~$ sudo chmod 644 /etc/netplan/60-ens3.yaml
kazulog@sv1:~$ sudo netplan generate
** (configure:3014): WARNING **: 13:00:58.443: Permissions for /etc/netplan/60-ens3.yaml are too open. Netplan configuration should NOT be accessible by others.
kazulog@sv1:~$ sudo chmod 600 /etc/netplan/60-ens3.yaml

静的 IPv4 アドレスを設定する

新しいファイルを作成して設定します。

設定ファイルの作成コマンド
sudo vi /etc/netplan/60-[NAME].yaml
sudo chmod 600 /etc/netplan/60-[NAME].yaml
静的 IPv4 アドレスの設定例
network:
  version: 2
  ethernets:
    ens3:
      dhcp4: false
      addresses:
        - 192.168.100.10/24
      routes:
        - to: default
          via: 192.168.100.1
          metric: 200
      nameservers:
        addresses: [192.168.100.1]
        search: [kazulog.example]
項目内容
ethernets有線インタフェースのセクション
ens3設定対象のインタフェース名
dhcp4DHCP でアドレスを取得するか
addresses割り当てるアドレスとプレフィックス長(CIDR表記)
routes経路。to: default がデフォルトルート、via が次の転送先
metric経路の優先度。値が小さいほど優先される
nameservers.addressesDNS サーバー
nameservers.search検索ドメイン。ping www が www.kazulog.example として解決される

routes にはデフォルトルートだけでなく、宛先ごとの経路も書けます。metric による経路の選択、on-link、IPv6 の経路、ポリシールーティングはスタティックルート設定(Netplan)で解説しています。

設定を反映する

反映の前に netplan generate で文法を確認します。誤りがあれば行番号付きで指摘されます。

文法チェックと反映のコマンド
sudo netplan generate
sudo netplan apply
文法エラーがある場合 実行例
kazulog@sv1:~$ sudo netplan generate
/etc/netplan/99-broken.yaml:5:18: Error in network definition: expected sequence
      addresses: 192.168.100.10/24
                 ^
kazulog@sv1:~$ echo exit=$?
exit=1
kazulog@sv1:~$

問題がなければ netplan apply で反映します。

設定の作成と反映 実行例
kazulog@sv1:~$ sudo cp /tmp/60-ens3.yaml /etc/netplan/60-ens3.yaml && sudo chmod 600 /etc/netplan/60-ens3.yaml
kazulog@sv1:~$ sudo cat /etc/netplan/60-ens3.yaml
network:
  version: 2
  ethernets:
    ens3:
      dhcp4: false
      addresses:
        - 192.168.100.10/24
      routes:
        - to: default
          via: 192.168.100.1
          metric: 200
      nameservers:
        addresses: [192.168.100.1]
        search: [kazulog.example]
kazulog@sv1:~$ sudo netplan generate
kazulog@sv1:~$ echo $?
0
kazulog@sv1:~$ sudo netplan apply
kazulog@sv1:~$ ip a show ens3
3: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:ba:74:98 brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    altname enx525400ba7498
    inet 192.168.100.10/24 brd 192.168.100.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:feba:7498/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
kazulog@sv1:~$ ip route
default via 10.19.0.1 dev ens2 proto static
default via 192.168.100.1 dev ens3 proto static metric 200 
10.19.0.0/16 dev ens2 proto kernel scope link src 10.19.12.11 
192.168.100.0/24 dev ens3 proto kernel scope link src 192.168.100.10 

リモート作業中に設定を誤ると、接続できなくなります。 netplan try を使うと、一定時間内に確定操作をしない限り自動的に元の設定へ戻ります。接続が切れないことを確認してから Enter キーを押して確定してください。

安全に反映するコマンド
sudo netplan try

疎通を確認する

設定したアドレスでルータと他のサーバーへ通信できることを確認します。

疎通の確認 実行例
kazulog@sv1:~$ ping -c 3 192.168.100.1
PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.
64 bytes from 192.168.100.1: icmp_seq=1 ttl=255 time=1.42 ms
64 bytes from 192.168.100.1: icmp_seq=2 ttl=255 time=1.62 ms
64 bytes from 192.168.100.1: icmp_seq=3 ttl=255 time=1.59 ms

--- 192.168.100.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 1.417/1.544/1.622/0.090 ms
kazulog@sv1:~$ ping -c 3 192.168.100.20
PING 192.168.100.20 (192.168.100.20) 56(84) bytes of data.
64 bytes from 192.168.100.20: icmp_seq=1 ttl=64 time=1.61 ms
64 bytes from 192.168.100.20: icmp_seq=2 ttl=64 time=1.86 ms
64 bytes from 192.168.100.20: icmp_seq=3 ttl=64 time=1.73 ms

--- 192.168.100.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.612/1.734/1.862/0.102 ms
kazulog@sv1:~$

設定後は netplan status の表示も変わり、インタフェースが Netplan の管理下(networkd: ens3)に入ったことを示します。

DHCP でアドレスを取得する

DHCP の設定例
network:
  version: 2
  ethernets:
    ens3:
      dhcp4: true
      dhcp6: true
      accept-ra: true
DHCP による取得 実行例
kazulog@sv1:~$ sudo cat /etc/netplan/60-ens3.yaml
network:
  version: 2
  ethernets:
    ens3:
      dhcp4: true
      dhcp6: true
      accept-ra: true
kazulog@sv1:~$ sudo netplan apply
kazulog@sv1:~$ ip a show ens3
3: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:ba:74:98 brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    altname enx525400ba7498
    inet 192.168.100.102/24 metric 100 brd 192.168.100.255 scope global dynamic ens3
       valid_lft 3584sec preferred_lft 3584sec
    inet6 2001:db8:100:0:5054:ff:feba:7498/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591998sec preferred_lft 604798sec
    inet6 fe80::5054:ff:feba:7498/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
kazulog@sv1:~$ ip route show dev ens3
default via 192.168.100.1 proto dhcp src 192.168.100.102 metric 100
192.168.100.0/24 proto kernel scope link src 192.168.100.102 metric 100 
192.168.100.1 proto dhcp scope link src 192.168.100.102 metric 100 
kazulog@sv1:~$ resolvectl status ens3 | head -8
Link 3 (ens3)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
       DNS Servers: 192.168.100.1 2001:db8:100::1
        DNS Domain: kazulog.example
     Default Route: yes

アドレスに加えて、デフォルトルート、DNS サーバー、検索ドメインも DHCP から受け取ります。ip a の表示が dynamic になり、valid_lft(有効期限)が付きます。

配布したルータ側でも、払い出しの状況を確認できます。

ルータ側の払い出し状況(IOS XE)
R1#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address      Client-ID/ 		Lease expiration 	Type       State      Interface
		Hardware address/
		User name
192.168.100.102 ffb5.5e67.ff00.0200.    Sep 11 2026 05:03 AM    Automatic  Active     GigabitEthernet2
                00ab.114a.b5bc.4a7e.
                5a3d.87

やりとりをキャプチャーすると、DHCP の4つのメッセージ(Discover / Offer / Request / ACK)が確認できます。

DHCP のやりとり(tshark)
   11   1.688958      0.0.0.0 → 255.255.255.255 DHCP 333 DHCP Discover - Transaction ID 0xb6d08892
   12   1.692413 192.168.100.1 → 192.168.100.102 DHCP 366 DHCP Offer    - Transaction ID 0xb6d08892
   13   1.693148      0.0.0.0 → 255.255.255.255 DHCP 343 DHCP Request  - Transaction ID 0xb6d08892
   14   1.697570 192.168.100.1 → 192.168.100.102 DHCP 366 DHCP ACK      - Transaction ID 0xb6d08892
上のtshark出力のパケット(No.14 DHCP ACK)のpcapをダウンロード

IPv6 をルータ広告で自動設定する(SLAAC)

IPv6 では、ルータが定期的に送るルータ広告(RA)を受け取って、アドレスとデフォルトルートを自動で設定できます。Netplan では accept-ra で制御し、既定で有効です。

ルータ広告を受け入れる設定例
network:
  version: 2
  ethernets:
    ens3:
      dhcp4: false
      dhcp6: false
      accept-ra: true
      addresses:
        - 192.168.100.10/24
ルータ広告による自動設定 実行例
kazulog@sv1:~$ ip -6 a show ens3
3: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    altname enp0s3
    altname enx525400ba7498
    inet6 2001:db8:100:0:5054:ff:feba:7498/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591995sec preferred_lft 604795sec
    inet6 fe80::5054:ff:feba:7498/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
kazulog@sv1:~$ ip -6 route show dev ens3
2001:db8:100::/64 proto ra metric 1024 expires 2591994sec pref medium
fe80::/64 proto kernel metric 256 pref medium
default nhid 3108948397 via fe80::5054:ff:fe92:855c proto ra metric 1024 expires 1794sec pref medium
kazulog@sv1:~$
確認する箇所内容
inet6 2001:db8:100:0:5054:ff:feba:7498/64ルータが広告したプレフィックスから自動生成されたアドレス。後半64ビットは MAC アドレス(52:54:00:ba:74:98)から作られている
dynamic自動設定されたアドレスであることを示す
valid_lft / preferred_lftルータ広告で指定された有効期限と推奨期限
2001:db8:100::/64 proto ra広告されたプレフィックスへの経路
default ... via fe80::... proto raデフォルトルート。宛先はルータのリンクローカルアドレス

networkctl status では、生成方式(IPv6 Address Generation Mode: eui64)も確認できます。

アドレス生成方式の確認 実行例
kazulog@sv1:~$ networkctl status ens3 | grep -A6 'Address:'
            Hardware Address: 52:54:00:ba:74:98
                         MTU: 1500 (min: 68, max: 65535)
                       QDisc: pfifo_fast
IPv6 Address Generation Mode: eui64
    Number of Queues (Tx/Rx): 1/1
            Auto negotiation: no
                     Address: 192.168.100.10
                              2001:db8:100:0:5054:ff:feba:7498
                              fe80::5054:ff:feba:7498
                     Gateway: 192.168.100.1
                              fe80::5054:ff:fe92:855c
                         DNS: 192.168.100.1
                              2001:db8:100::1
kazulog@sv1:~$ resolvectl status ens3 | head -8
Link 3 (ens3)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 2001:db8:100::1
       DNS Servers: 192.168.100.1 2001:db8:100::1
        DNS Domain: kazulog.example
     Default Route: yes

ルータ広告の中身

ルータ広告をキャプチャーすると、自動設定に必要な情報が入っていることが分かります。

ルータ広告(tshark -V)の抜粋
Internet Control Message Protocol v6
    Type: Router Advertisement (134)
    Code: 0
    Cur hop limit: 64
    Flags: 0x40, Other configuration, Prf (Default Router Preference): Medium
        0... .... = Managed address configuration: Not set
        .1.. .... = Other configuration: Set
    Router lifetime (s): 1800
    Reachable time (ms): 0
    Retrans timer (ms): 0
    ICMPv6 Option (Source link-layer address : 52:54:00:92:85:5c)
    ICMPv6 Option (MTU : 1500)
    ICMPv6 Option (Prefix information : 2001:db8:100::/64)
        Type: Prefix information (3)
        Length: 4 (32 bytes)
        Prefix Length: 64
        Flag: 0xc0, On-link Flag (L), Autonomous Address Configuration Flag (A)
            1... .... = On-link Flag (L): Set
            .1.. .... = Autonomous Address Configuration Flag (A): Set
        Valid Lifetime: 2592000 (30 days)
        Preferred Lifetime: 604800 (7 days)
        Prefix: 2001:db8:100::
上のtshark出力のパケット(No.1 ルータ広告)のpcapをダウンロード
フィールド意味
Autonomous Address Configuration Flag (A)このプレフィックスからアドレスを自動生成してよい。これが立っているため SLAAC が働く
Valid Lifetime / Preferred Lifetimeそのまま ip -6 a の valid_lft / preferred_lft になる
Router lifetimeデフォルトルートとして使える時間。経路の expires に反映される
Managed address configuration (M)アドレスを DHCPv6 から取得するか。ここでは立っていない
Other configuration (O)DNS などの情報を DHCPv6 から取得する。ここでは立っている

ルータ広告を受け取らない設定

accept-ra: false にすると、アドレスもデフォルトルートも自動設定されません。

ルータ広告を無効にした場合 実行例
kazulog@sv1:~$ sudo cp /tmp/60-ens3-nora.yaml /etc/netplan/60-ens3.yaml && sudo chmod 600 /etc/netplan/60-ens3.yaml
kazulog@sv1:~$ sudo netplan apply
kazulog@sv1:~$ ip -6 a show ens3
3: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    altname enp0s3
    altname enx525400ba7498
    inet6 fe80::5054:ff:feba:7498/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
kazulog@sv1:~$ ip -6 route show dev ens3
fe80::/64 proto kernel metric 256 pref medium

リンクローカルアドレスだけが残ります。

DHCPv6 で情報を取得する

上のルータ広告では Other configuration (O) が立っていました。この場合、アドレスは自動生成でまかない、DNS などの情報だけを DHCPv6 から取得します(ステートレス DHCPv6)。

DHCPv6 のやりとり(tshark)
   18   3.156809 fe80::5054:ff:feba:7498 → ff02::1:2    DHCPv6 114 Information-request XID: 0xd2fc29
   20   3.162109 fe80::5054:ff:fe92:855c → fe80::5054:ff:feba:7498 DHCPv6 139 Reply XID: 0xd2fc29
上のtshark出力のパケット(No.20 DHCPv6 Reply)のpcapをダウンロード

応答には DNS サーバーと検索ドメインが入っています。

DHCPv6 Reply の中身(tshark -V)の抜粋
    DNS recursive name server
        Option: DNS recursive name server (23)
        Length: 16
         1 DNS server address: 2001:db8:100::1
    Domain Search List
        Option: Domain Search List (24)
        Length: 17
        Domain name suffix search list
            List entry: kazulog.example.

アドレスの割り当てを DHCPv6 から受ける(ステートフル DHCPv6)場合は、ルータ側で Managed address configuration (M) を立て、DHCPv6 サーバーにアドレスプールを設定します。

静的 IPv6 アドレスを設定する

IPv6 も addresses に併記し、デフォルトルートは to: "::/0" で指定します。

静的 IPv6 アドレスの設定例
network:
  version: 2
  ethernets:
    ens3:
      dhcp4: false
      dhcp6: false
      accept-ra: false
      addresses:
        - 192.168.100.10/24
        - 2001:db8:100::10/64
      routes:
        - to: default
          via: 192.168.100.1
          metric: 200
        - to: "::/0"
          via: 2001:db8:100::1
          metric: 200
      nameservers:
        addresses: [192.168.100.1, "2001:db8:100::1"]
        search: [kazulog.example]
静的 IPv6 の設定と疎通 実行例
kazulog@sv1:~$ sudo cp /tmp/60-ens3-v6.yaml /etc/netplan/60-ens3.yaml && sudo chmod 600 /etc/netplan/60-ens3.yaml
kazulog@sv1:~$ sudo netplan apply
kazulog@sv1:~$ ip -6 a show ens3
3: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    altname enp0s3
    altname enx525400ba7498
    inet6 2001:db8:100::10/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:feba:7498/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
kazulog@sv1:~$ ip -6 route show dev ens3
2001:db8:100::/64 proto kernel metric 256 pref medium
fe80::/64 proto kernel metric 256 pref medium
default via 2001:db8:100::1 proto static metric 200 pref medium
kazulog@sv1:~$ ping6 -c 3 2001:db8:100::1
PING 2001:db8:100::1 (2001:db8:100::1) 56 data bytes
64 bytes from 2001:db8:100::1: icmp_seq=1 ttl=64 time=21.6 ms
64 bytes from 2001:db8:100::1: icmp_seq=2 ttl=64 time=3.29 ms
64 bytes from 2001:db8:100::1: icmp_seq=3 ttl=64 time=2.23 ms

--- 2001:db8:100::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 2.226/9.040/21.606/8.895 ms
kazulog@sv1:~$ ping6 -c 2 2001:db8:100::20
PING 2001:db8:100::20 (2001:db8:100::20) 56 data bytes
64 bytes from 2001:db8:100::20: icmp_seq=1 ttl=64 time=3.53 ms
64 bytes from 2001:db8:100::20: icmp_seq=2 ttl=64 time=1.57 ms

--- 2001:db8:100::20 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.573/2.553/3.534/0.980 ms

ゲートウェイがインタフェースのプレフィックスの外にある場合(VPS などで /128 が割り当てられる構成)は、経路に on-link: true を足して同一リンク上にあることを明示します。

ゲートウェイがプレフィックス外の場合
      addresses:
        - "2001:db8::200/128"
      routes:
        - to: "::/0"
          via: "2001:db8::1"
          on-link: true

ゲートウェイがリンクローカルアドレス(fe80:: で始まるもの)で案内される場合は、常に同一リンク上の経路が存在するため on-link は不要です。

cloud-init による上書きを止める

クラウドイメージでは、cloud-init が起動時に 50-cloud-init.yaml を生成します。管理者が編集しても、条件によっては上書きされることがあります。止めるには次のファイルを作成します。

cloud-init のネットワーク設定を無効にするコマンド
printf 'network: {config: disabled}\n' | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
無効化して再起動した後の状態 実行例
kazulog@sv1:~$ uptime -p
up 0 minutes
kazulog@sv1:~$ ls -l /etc/netplan/
total 8
-rw------- 1 root root 243 Sep 11 11:59 50-cloud-init.yaml
-rw------- 1 root root 449 Sep 11 13:05 60-ens3.yaml
kazulog@sv1:~$ ip -br a show ens3
ens3             UP             192.168.100.10/24 2001:db8:100::10/64 fe80::5054:ff:feba:7498/64
kazulog@sv1:~$

再起動後も追加した設定ファイルが残り、アドレスも維持されています。cloud-init でネットワークを設定する方法は初期設定を自動化する(cloud-init)で解説しています。

検証環境と実行ログ

本記事の実行例は、CML 上に次の構成を作って採取しました。sv1 が設定対象、R1 が DHCP サーバーとルータ広告の送信元です。

検証構成
  sv1 (Ubuntu 26.04)     sv2 (Ubuntu 26.04)      R1 (IOS XE)
   ens3                   ens3                    Gi2
   192.168.100.10/24      192.168.100.20/24       192.168.100.1/24
   2001:db8:100::10/64    2001:db8:100::20/64     2001:db8:100::1/64
      |                      |                       |
      +----------------------+------- LAB-SW --------+
手順実行ログ
初期状態の確認log
Netplan 管理外のインタフェースの調査log
静的 IPv4 の設定log
疎通確認log
文法エラーと権限の警告log
DHCP による取得log
ルータ広告による自動設定log
アドレス生成方式の確認log
ルータ広告を無効にした場合log
静的 IPv6 の設定と疎通log
cloud-init の無効化と再起動log

ルータ(R1)側は、設定変更のたびに show 一式・syslog・running-config の3種類を採取しています。検証Configはこの ..._run.txt です。

R1 の状態show出力syslogrunning-config
静的 IPv4 を設定したときshowlogrun
DHCP でアドレスを払い出したときshowlogrun
RA と DHCPv6 が動いているときshowlogrun

..._show.txt には次を含みます。

show version / show interfaces description / show ip interface brief / show ipv6 interface brief /
show ip route / show ipv6 route / show ipv6 interface GigabitEthernet2 /
show ip dhcp pool / show ip dhcp binding / show ip dhcp server statistics / show ip dhcp conflict /
show ipv6 dhcp pool / show ipv6 dhcp binding / show ipv6 dhcp interface / show ipv6 neighbors
検証Configには SSH の鍵生成が含まれていません。crypto key generate rsa は設定ではなく実行コマンドのため、show running-config には現れないためです。ルータへ SSH で接続する場合は、起動後に鍵の生成が必要です。

キャプチャー全体は次からダウンロードできます。

ルータ広告のキャプチャー(全体)をダウンロード

DHCP と DHCPv6 のキャプチャー(全体)をダウンロード

関連記事

参考リンク

関連記事

Ubuntu 公式ページ