komeの備忘録

東大理系大学院生の技術ブログ。たまに趣味。

Ubuntu18.04 で IP アドレスを固定する

f:id:komee:20180606162609p:plain

Ubuntu18から(正確には17からしいが、)IPアドレスに関する構成の設定方法が変わったらしい。
先日せっかくUbuntu18をインストールしたので、これに合わせて、一度IPアドレスの固定方法をおさらいする。

環境
Ubuntu18.04 Bionic Beaver

目次

これまでのIPアドレス設定方法

Ubuntu16.04では、Desktopバージョンでは、NetworkManagerを用いた設定方法を推奨していた。またServerバージョンでは、/etc/network/interfacesにconfigを書くことでIPアドレスの設定を変更することができた。

Ubuntu18からは設定方法が変わったとの噂を聞きつつも、従来通りひとまず/etc/network/interfacesを眺めてみると、下記の記述があった。

# ifupdown has been replaced by netplan(5) on this system. See
# /etc/netplan for current configuration
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown

直訳すると、

これまでインターフェースの開始停止に用いていたifup/ifdownは使えなくなったよ
代わりにnetplanがそれをやっているよ
netplanは`/etc/netplan`にあるよ
どうしてもifup/ifdownを使いたかったら、aptでインストールしてね

とのこと。

なのでひとまず/etc/netplanを見てみる。

Netplan

実際のファイルを見る前にNetplanの説明をする。 公式サイトの説明によると、下記の説明が存在した。

The network configuration abstraction renderer

Netplan is a utility for easily configuring networking on a linux system.
 You simply create a YAML description of the required network interfaces and what each should be configured to do. 
From this description Netplan will generate all the necessary configuration for your chosen renderer tool.

直訳する。

ネットワーク構成の抽象化レンダラー

Netplanは、linuxシステム上で動作する、簡単にネットワークを設定するためのツールである。
Netplanは、必要なネットワークインタフェースと、設定する必要のあるものに対し、YAML記述を作成するだけで、
あなたの選択したレンダラーツールのために必要とされる設定をすべて生成する。

まぁつまり、YAMLを書くだけで、ネットワーク設定をサクッと行えてしまうらしい。

詳細は下記のサイトを参照のこと。

netplan.io

/etc/netplan

さて、ようやくnetplanを見てみる。
このディレクトリ以下には、50-cloud-init.yamlというファイルが存在した。
先の説明通り、この設定はYAMLで記述されている。
50-cloud-init.yamlの中を見てみた。

# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# 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:
            addresses: []
            dhcp4: true
            optional: true
    version: 2

なるほどここにこれまで/etc/network/interfacesに書いていた内容を記述すればいいのだな、と気づく。

今回、設定したい内容は下記の通りである。

address:     192.168.0.10
netmask:        255.255.255.0
gateway:        192.168.0.1
dns-nameserver: 192.168.0.1
search domain:  hoge.example.jp

これをNetplanの形式に従って作成したYAMLファイルは次の通りとなる。

network:
    ethernets:
        ens3:
            dhcp4: no
            addresses:
            - 192.168.0.10/24
            gateway4: 192.168.0.1
            nameservers:
                addresses:
                - 192.168.0.1
                serarch:[hoge.example.jp]
            optional: true
    version: 2

これを/etc/netplan/hoge.yamlとして保存し、システムに適用する。 ちなみにYAMLファイルはtabを読み込んでくれないので、ちゃんと設定したのに動かにおかしいなーと思ったら、タブが入っていないかをチェックするといい。

$ sudo netplan applu /etc/netplan/hoge.yaml

すぐに反映された。

補足

NetPlan自体は、Ubuntu17.04から用いられていたそうな。
(17は触ったことなかったので許してください)

まとめ

Ubuntu18.04でネットワークの設定をする場合は、netplanを用いて設定を行う。
netplanの設定ファイルは、yaml形式で記述されている。

次は時間のあるときに、Netplanを用いて何ができるかを日本語でまとめた記事を投稿したいなぁ

参考にしたサイト

www.yokoweb.net

netplan.io