Ubuntu 18.04 LTS serverの固定IPアドレス設定方法
本記事では、Ubuntu 18.04 LTS serverのインターフェースに固定のipv4アドレスを設定した際の手順をまとめます。
図で示したように、テストサーバのens6インターフェースに「192.168.101.160」という固定IPアドレスを設定しました。
なお、テストサーバは以下サイトのクラウドイメージで作成されたVMです。
1. 事前確認
最初にサーバのOSがUbuntu 18.04 ltsであることを確認します。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
※ubuntu 16.04に対する設定方法は異なりますのでこちらをご参照ください!
次に、ipv4の固定アドレスを設定するIFの情報を確認します。
今はens6に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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc fq_codel state UP group default qlen 1000 link/ether fa:16:3e:23:65:59 brd ff:ff:ff:ff:ff:ff inet 192.168.100.160/24 brd 192.168.100.255 scope global dynamic ens3 valid_lft 85900sec preferred_lft 85900sec inet6 fe80::f816:3eff:fe23:6559/64 scope link valid_lft forever preferred_lft forever 3: ens6: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN group default qlen 1000 link/ether fa:16:3e:0e:44:bb brd ff:ff:ff:ff:ff:ff
設定前のルーティングテーブルには「192.168.101.0/24」のネットワークが表示されていないです。
$ ip route default via 192.168.100.1 dev ens3 proto dhcp src 192.168.100.160 metric 100 169.254.169.254 via 192.168.100.1 dev ens3 proto dhcp src 192.168.100.160 metric 100 192.168.100.0/24 dev ens3 proto kernel scope link src 192.168.100.160
疎通確認先とのpingも無応答です。
$ ping 192.168.101.10 PING 192.168.101.10 (192.168.101.10) 56(84) bytes of data. --- 192.168.101.10 ping statistics --- 4 packets transmitted, 0 received, 100% packet loss, time 3054ms
2. 設定ファイル作成
Ubuntu 18.04 LTS serverのネットワーク設定は「/etc/netplan/」ディレクトリの配下にある「XX-cloud-init.yaml」内の情報が反映されます。
XXの部分には2桁の数字が入り、複数のyamlファイルが同時に存在する場合は、XXが大きい方のファイル内の設定情報が反映されます。
イメージからOSを展開した場合、デフォルトの設定ファイルとしてXXが50のファイルが用意されています。
$ ls -l /etc/netplan/ total 4 -rw-r--r-- 1 root root 481 May 7 23:07 50-cloud-init.yaml
ファイルの中身はこんな感じです。
$ cat /etc/netplan/50-cloud-init.yaml # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: ens3: dhcp4: true match: macaddress: fa:16:3e:23:65:59 set-name: ens3 version: 2
上記ファイルを直接編集しても固定ipの設定は可能ですが、僕はファイルのバックアップも兼ねて、デフォルトのファイルを同じディレクトリにコピーし、50より大きい数字にファイル名をリネームします。
$ cp /etc/netplan/50-cloud-init.yaml /etc/netplan/99-cloud-init.yaml $ $ ls -l /etc/netplan/ total 8 -rw-r--r-- 1 root root 481 May 7 23:07 50-cloud-init.yaml -rw-r--r-- 1 root root 481 May 7 23:24 99-cloud-init.yaml
以上で設定用ファイル「99-cloud-init.yaml」を作成できました。
3. 設定ファイル編集
続いて、作成した設定用ファイル「99-cloud-init.yaml」を編集していきます。
設定のポイントは以下の通りです。 - 設定内容:固定ipv4アドレス - 対象IF:ens6 - ネットワークアドレス:192.168.101.160/24
こちらの内容を以下のように、設定用ファイルに追記します。
# This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: ens3: dhcp4: true match: macaddress: fa:16:3e:23:65:59 set-name: ens3 ens6: dhcp4: false addresses: [192.168.101.160/24] optional: true version: 2
4. 設定反映
設定内容を反映します。
$ netplan apply
※上記コマンドの代わりにサーバを再起動しても設定が反映されます。
設定後の確認を行います。ens6に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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc fq_codel state UP group default qlen 1000 link/ether fa:16:3e:23:65:59 brd ff:ff:ff:ff:ff:ff inet 192.168.100.160/24 brd 192.168.100.255 scope global dynamic ens3 valid_lft 86093sec preferred_lft 86093sec inet6 fe80::f816:3eff:fe23:6559/64 scope link valid_lft forever preferred_lft forever 3: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc fq_codel state UP group default qlen 1000 link/ether fa:16:3e:0e:44:bb brd ff:ff:ff:ff:ff:ff inet 192.168.101.160/24 brd 192.168.101.255 scope global ens6 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fe0e:44bb/64 scope link valid_lft forever preferred_lft forever
ルーティングテーブルにも「192.168.101.0/24」が追加されています。
$ ip r default via 192.168.100.1 dev ens3 proto dhcp src 192.168.100.160 metric 100 169.254.169.254 via 192.168.100.1 dev ens3 proto dhcp src 192.168.100.160 metric 100 192.168.100.0/24 dev ens3 proto kernel scope link src 192.168.100.160 192.168.101.0/24 dev ens6 proto kernel scope link src 192.168.101.160
疎通確認を行います。疎通できるようになりました。
$ ping 192.168.101.10 PING 192.168.101.10 (192.168.101.10) 56(84) bytes of data. 64 bytes from 192.168.101.10: icmp_seq=1 ttl=64 time=1.48 ms 64 bytes from 192.168.101.10: icmp_seq=2 ttl=64 time=0.708 ms
5. おまけ
3.の設定ファイル編集時に、ens6の設定項目にgatewayとnameserversを加えることで、デフォルトゲートウェイとDNSサーバを設定できます。
現在のDNSサーバの設定を確認します。
$ systemd-resolve --status ~~中略~~ Link 3 (ens6) Current Scopes: none LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no
以下のように設定ファイルを編集します。
# This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: ethernets: ens3: dhcp4: true match: macaddress: fa:16:3e:23:65:59 set-name: ens3 ens6: dhcp4: false addresses: [192.168.101.160/24] gateway4: 192.168.100.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] optional: true version: 2
設定内容を反映します。
$ netplan apply
以下の通り、ルーティングテーブルに「192.168.101.1」のデフォルトルートが追加されました。
$ ip r default via 192.168.101.1 dev ens6 proto static default via 192.168.100.1 dev ens3 proto dhcp src 192.168.100.160 metric 100 169.254.169.254 via 192.168.100.1 dev ens3 proto dhcp src 192.168.100.160 metric 100 192.168.100.0/24 dev ens3 proto kernel scope link src 192.168.100.160 192.168.101.0/24 dev ens6 proto kernel scope link src 192.168.101.160
また、ens6のDNSサーバ設定部が更新されていることも確認できます。
$ systemd-resolve --status ~~中略~~ Link 3 (ens6) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 8.8.8.8 8.8.4.4