Ubuntu 20.04でIPアドレスを設定する

なんか嘘の設定方法がはびこっているので正しい手法をメモ書き

まず、Ubuntu 20.04をIPアドレスをdhcp取得でインストールすると、「/etc/netplan/00-installer-config.yaml」に下記のような内容の設定ファイルを作成される。

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens160:
      dhcp4: true
  version: 2

上記の「ens160」はNICのデバイス名なので使用するNICによって名称が変化する。

で、この /etc/netplan/00-installer-config.yaml とか /etc/netplan/50-cloud-init.yaml とか /etc/netplan/01-netcfg.yaml を変更する、という手順は「誤り」です。

正しい手法はUbuntuの公式ドキュメント「Network Configuration」の「Dynamic IP Address Assignment (DHCP Client)」と「Static IP Address Assignment」に記載されているように「/etc/netplan/99_config.yaml」というファイルを新規作成して、そこで設定します。

これは、netplanコマンドは/etc/netplan/にある数字で始まるファイルを00から順に読み込み99を一番最後に読み込むので、99_config.yamlで記載した内容で上書きされて設定される、という動作になっているためです。

Ubuntu公式サイト上では固定IPアドレス設定時に「dhcp4:false」を設定する、なんてことは書いてありません(2020/05/18時点)が、初期インストール時にdhcp取得を選択していると00-installer-config.yaml上では「dhcp4:true」が設定されているため、ens160に対してdhcpで取得したIPアドレスと固定IPアドレスの双方が割り当てられるという状況になってしまいます。

それを防ぐためには下記の様に「dhcp4:false」を設定した上で、固定IPアドレスの設定を入れる、ということが必要になります。

network:
    version: 2
    renderer: networkd
    ethernets:
        ens160:
            dhcp4: false
            addresses:
                - 172.17.44.240/16
            gateway4: 172.17.0.1
            nameservers:
                search: [adosakana.local]
                addresses: [172.17.44.49]

また、ホスト名については、「hostnamectl」コマンドを使用します。(追加で/etc/hostsのエントリ修正も必要です)

まず「hostnamectl」を実行して現在の値を確認します。

osakanataro@ubuntu:~$ hostnamectl
   Static hostname: ubuntu
         Icon name: computer-vm
           Chassis: vm
        Machine ID: adcd0e151d91412581407a94fc19a4c5
           Boot ID: 1ca98f3699d34707b58595e059708d0a
    Virtualization: vmware
  Operating System: Ubuntu 20.04 LTS
            Kernel: Linux 5.4.0-29-generic
      Architecture: x86-64
osakanataro@ubuntu:~$

ホスト名は「hostnamectl set-hostname 新しいホスト名」で設定します。

osakanataro@ubuntu:~$ sudo hostnamectl set-hostname ubuntu20
[sudo] password for osakanataro:
osakanataro@ubuntu:~$ hostnamectl
   Static hostname: ubuntu20
         Icon name: computer-vm
           Chassis: vm
        Machine ID: adcd0e151d91412581407a94fc19a4c5
           Boot ID: 1ca98f3699d34707b58595e059708d0a
    Virtualization: vmware
  Operating System: Ubuntu 20.04 LTS
            Kernel: Linux 5.4.0-29-generic
      Architecture: x86-64
osakanataro@ubuntu:~$

なお、hostnamectlだけだと/etc/hostsの127.0.1.1に記載されているホスト名が書き換わらないので、こちらは手動で変更します。


2021/12/13追記

bondingとtag vlanを設定する場合

NIC 2個使ってLACP(802.3ad)を組んで、そこにタグでVLAN ID 139を作りたい場合、下記の様になる。

network:
    version: 2
    renderer: networkd
    ethernets:
        ens160:
            dhcp4: false
            optional: true
        ens192:
            dhcp4: false
            optional: true
    bonds:
        bond1:
            interfaces:
              - ens160
              - ens192
            parameters:
              mode: 802.3ad
              transmit-hash-policy: layer3+4
              mii-monitor-interval: 1
            dhcp4: false
    vlans:
        vlan.139:
            id: 139
            link: bond1
            dhcp4: false
            addresses:
                - 172.17.44.240/16
            gateway4: 172.17.0.1
            nameservers:
                search: [adosakana.local]
                addresses: [172.17.44.49]

リンク速度固定にしたい場合は「Ubuntu 20.04 でリンク速度固定をする」を参照のこと

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください