3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

netplan で固定のプライベート IP アドレスを割り当てる

Posted at

はじめに

プライベートネットワークに複数のサーバーを接続し、それぞれ固定のプライベート IP アドレスを割り当てたいみたいな時があります。

私は、macOS を普段使いしていて、時々、自作PCに入れた Ubuntuサーバー を SSH で利用しています。
プライベート IP アドレスは DHCP によって割り当てられているので、サーバーの IP アドレスが頻繁に変わってしまうと、SSH 接続のたびに IP アドレスを調べ直す手間が発生し、非常に不便です。

下記の記事で書いた mDNS と SSH config を使ってやりくりしているのですが、netplan を使って固定の IP アドレスを割り当てるのも有用だったので、まとめます。

netplan とは

Linux システム上でネットワーク設定を抽象化し、管理するためのユーティリティです。

netplan 自体がネットワークの制御を行うのではなく、
設定ファイルを読み込み、その内容をバックエンドとなるネットワークサービスが理解できる形式に変換し、反映してもらうことが主な役割です。

現在、バックエンドのネットワークサービスとしてサポートされているのは

  • NetworkManager
  • Systemd-networkd

の2つです。

Ubuntu の場合、netplan はデフォルトで入っています。(Ubuntu 17.10 以降)

netplan を使って固定 IP アドレスを割り当てる

netplan の設定ファイル

ドキュメントを見ると、netplan は /{lib,etc,run}/netplan/*.yaml に配置されている設定ファイルを読みますが、
設定ファイルであるということと、https://netplan.io/ を見る感じ、/etc/netplan/*.yaml に配置するのが最も良さそうです。

/etc/netplan/*.yaml のファイルが辞書順に読み込まれるため、後から読み込んだファイルの設定が前に読み込んだファイルの設定を上書きします。
初期状態で /etc/netplan/50-cloud-init.yaml というファイルが存在していますが、このファイルは cloud-init によって自動的に生成されたもので、直接編集するものではないようです。

今回は、/etc/netplan/51-custom.yaml にファイルを作成して netplan の設定をしていきます。

DHCP をオフにする

固定のプライベートアドレス IP アドレスを割り当てるためには DHCP の機能をオフにする必要があります。

DHCP によって、IP アドレスやサブネットマスク、デフォルトゲートウェイ、DNS サーバーの IP アドレスが管理されていて、IP アドレス以外は特に変更したくないので、先にその辺の情報を控えておきます。

※ 私の環境では、対象のネットワークインターフェースが eno1 なので、その辺は適宜読み替えてください

  • IPアドレス、サブネットマスク
$ ifconfig eno1 | grep -w inet
        inet 192.168.151.155  netmask 255.255.254.0  broadcast 192.168.151.255
  • デフォルトゲートウェイ
$ ip route show | grep default
default via 192.168.150.1 dev eno1 proto dhcp src 192.168.151.155 metric 100
  • DNSサーバー
$ resolvectl status eno1
Link 2 (eno1)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.150.1
       DNS Servers: 192.168.150.1

既存のネットワーク状態がわかったので、早速 DHCP の機能をオフにしてみます。
私の環境では、バックエンドのネットワークサービスとして、NetworkManager を使っているので、renderer には NetworkManager を指定しています。

/etc/netplan/51-custom.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno1:
      dhcp4: false
$ sudo netplan apply

これによって DHCP が無効化されるため、リンクローカルアドレス が割り当てられるようになります。

$ sudo ifconfig eno1 | grep -w inet
        inet 169.254.212.76  netmask 255.255.0.0  broadcast 169.254.255.255

デフォルトゲートウェイの設定も DNS サーバーの設定もされなくなるため、インターネットに出ることも、名前解決することもできなくなりました。

固定のプライベート IP アドレスを設定する

今回の目的である、固定のプライベート IP アドレスを設定していきます。
私の環境だと、デフォルトゲートウェイ(ルーター)の プライベート IP アドレスが 192.168.150.1 で、サブネットマスクが 255.255.254.0 だったので、192.168.150.2 ~ 192.168.151.254 の範囲から設定します。

/etc/netplan/51-custom.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno1:
      dhcp4: false
      addresses:
        - 192.168.150.111/23
$ sudo netplan apply

これで、対象のネットワークインターフェースに固定のプライベート IP アドレスが割り当てられるようになります。

$ ifconfig eno1 | grep -w inet
        inet 192.168.150.111  netmask 255.255.254.0  broadcast 192.168.151.255

現時点で、プライベートネットワーク内での通信は可能になりましたが、
ゲートウェイの設定と DNS サーバーの設定がされていないため、インターネットに出られないのと名前解決ができない状態です。

DNS サーバーの設定をする

先に確認しておいた、DNS サーバーの設定を追加します。

/etc/netplan/51-custom.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno1:
      dhcp4: false
      addresses:
        - 192.168.150.111/23
      nameservers:
        addresses:
          - 192.168.150.1
$ sudo netplan apply

これで、名前解決はできるようになりますが、ゲートウェイの指定がされていないため、まだインターネットには出られない状態です。

$ curl https://qiita.com
curl: (7) Failed to connect to qiita.com port 443 after 19 ms: Couldn't connect to server

デフォルトゲートウェイを設定する

こちらも同様に先に確認しておいた、デフォルトゲートウェイの設定を追加します。

/etc/netplan/51-custom.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno1:
      dhcp4: false
      addresses:
        - 192.168.150.111/23
      nameservers:
        addresses:
          - 192.168.150.1
      routes:
        - to: default
          via: 192.168.150.1
$ sudo netplan apply

ルーティングテーブルを確認すると、元々は dhcp だった箇所が static になっていることも確認できます。

  • before
$ ip route show | grep default
default via 192.168.150.1 dev eno1 proto dhcp src 192.168.151.155 metric 100
  • after
$ ip route show | grep default
default via 192.168.150.1 dev eno1 proto static metric 100
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?