Magnolia Tech

いつもコードのことばかり考えている人のために。

Ubuntu Serverでnetplanを使って固定IPアドレスを指定する(あと、Wake on LANを有効にする)

手元のPCにUbuntuをインストールした...よく考えてみると物理PCに直接Ubuntuをインストールしたのが初めてだと気がついた。 特にネットワーク周りの設定は、ネットワークインタフェースに影響を受けるので、今まで意識したことが無いところでの設定が必要になった。


自宅内サーバとしての使い方なのでIPアドレスは固定化したい。 本当はルータ側でMACアドレスを指定してIPアドレス払い出しを固定化する方法も有るはずなのだけど、上手くいかなかったので、まずはUbuntu側で設定することにした。

Ubuntuでは、netplanというコマンドを使ってIPアドレスを固定化する。

詳しい解説は、以下のサイトを参照のこと

netplan.io

公式ドキュメントでも、ネットの情報でも、明示的にrendererを指定している例が多いけど、公式ドキュメントには/etc/netplan/配下にYAMLファイルが置かれていると明示的にrendererNetworkManagerを指定しない限り、networkdが利用されるそうなので、明示的に指定する必要が無かった。

あと、Ubuntu ServerはデフォルトでNetworkManagerをインストールしないので、NetworkManagerのパッケージを追加インストールしない限り、rendererNetworkManagerを指定してもネットワークインタフェースは何も設定されないので、注意。初めてUbuntu Serverをインストールした時、nmcliではネットワークインタフェースが全てunmanagedになっていたので何事?と思ったけど、そもそもNetworkManagerでは管理されていない、というそのままの状態表示だった。


インストールしたPCには有線LANと無線LANの、2つのインタフェースが有るので、有線LAN側を固定IP化することにした。

有線LAN側の設定

network:
  ethernets:
    device_ethernet:
      dhcp4: false
      addresses: [192.168.0.xx/24]
      routes:
        - to: default
          via: 192.168.0.1
          metric: 100
      nameservers:
        addresses: [192.168.0.1]
      wakeonlan: true
  version: 2

バイス名と、IPアドレスはマスクしているけど、それ以外は設定した内容をそのまま載せている。静的にIPを指定する場合は、nameservermetricは明示的に設定する必要がある。

metricの意味は下記のサイトを参考にした。

qiita.com

デフォルトでは無線LANのインタフェースには600、有線LANのインタフェースには100が割り当てられた。同じゲートウェイを向いている時は、有線LANが選択されることになる。IPアドレスを固定化する際は、明示的に指定しないといけないの、デフォルトと同じ100を設定した。

name serverは、利用しているホームゲートウェイがWAN側にDNSサーバのアドレスを保持しているので、ゲートウェイに設定した。パブリックDNS 8.8.8.8でも別によいけど。

Wake on LANも明示的に設定しないと有効にならなかったので設定した......これで遠隔から電源をオンにできる。

無線LAN側の設定

同じ設定方法だとトラブった時に切り分けができないので、無線LAN側はDHCPを使うデフォルト設定のままとした。

network:
  version: 2
  wifis:
    device_wifi:
      access-points:
        name_of_access_point:
          password: xxxxxxxxxxxxxxxxxxx
      dhcp4: true

ip routeコマンドで反映した結果を確認する

なお、ゲートウェイを指定するgateway4記法はUbuntu 22.04より非推奨になっており、routesを使うのだそうだ。