BLOGTIMES
2018/07/06

Ubuntu で静的 IP アドレスを使うには

  ubuntu1804  networking 
このエントリーをはてなブックマークに追加

Ubuntu 18.04 で DHCP -> 静的 IP への設定変更をしてみたので忘れないうちにやり方をメモ。

最近の Ubuntu はネットワーク設定に Netplan を使っているので、静的 IP アドレスを設定するためには /etc/network/interfaces などではなく、/etc/netplan/*.yaml を変更してやる必要があります。

この yaml が曲者なので、なるべく間違いなくコマンド一発で書き換えできる方法を考えてみました。

yq のインストール

yq は JSON を操作する jq コマンドをそのまま yaml 用にしたようなコマンドです。

今回はエディタ等を使わないで yaml を変更したいので、以下の手順でこのコマンドを導入しておきます。

add-apt-repository ppa:rmescandon/yq apt update apt install -y yq

yq を使って /etc/netplan/50-cloud-init.yaml を書き換え

Ubuntu 18.04 をインストールすると、/etc/netplan/50-cloud-init.yaml というファイルに設定が書込まれるようです。
インターフェース名は場合によって変化するはずなので、今回はインターフェースが1つしかないということを想定して以下のようなスクリプトを組んでみました。

cp -a /etc/netplan/50-cloud-init.yaml{,.org} cat << EOF | sed "s/#IF#/`yq r /etc/netplan/50-cloud-init.yaml network.ethernets | head -n1 | sed 's/://'`/" | yq w -i -s - /etc/netplan/50-cloud-init.yaml # DHCPを使わないように network.ethernets.#IF#.dhcp4: false # IPアドレス network.ethernets.#IF#.addresses[0]: 192.168.0.1/24 # デフォルトゲートウェイ network.ethernets.#IF#.gateway4: 192.168.0.254 # DNSサーバとドメイン network.ethernets.#IF#.nameservers.addresses[0]: 8.8.8.8 network.ethernets.#IF#.nameservers.addresses[1]: 9.9.9.9 network.ethernets.#IF#.nameservers.search[0]: example.jp # 静的ルート(あれば) #network.ethernets.#IF#.routes[0].to: 10.0.0.1/8 #network.ethernets.#IF#.routes[0].via: 192.168.0.253 EOF netplan apply

コマンドを実行するとファイルの内容は以下のような感じで書き換わります。

Before:

network: ethernets: ens192: addresses: [] dhcp4: true optional: true version: 2

After:

network: ethernets: ens192: addresses: - 192.168.0.1/24 dhcp4: false optional: true gateway4: 192.168.0.254 nameservers: addresses: - 8.8.8.8 - 9.9.9.9 search: - example.jp version: 2

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/10283
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン