Linux: IPアドレスを固定したいときに見る Netplan設定ガイド


趣味でLinuxを触るだけの筆者がターミナルからIPアドレスを固定しようとしたら、思いのほか苦戦したために書きました。

今回筆者はWi-Fi環境で設定をしましたが、有線接続との違いにも配慮しています。

注意点

  • 筆者にネットワークまわりの知識は一切ありません。そのためこの記事にも重大な誤りや欠陥があるかもしれません。
  • 筆者の環境はZorin OS 15.3です。Ubuntuベースであり共通点が多いOSなので、おそらくUbuntuでも同じように設定できると思います。が、検証はしていません。
  • GUIからも比較的簡単に設定出来ます。参考リンク 1
    • 今回はコマンドを用いて設定しています。
  • 上にも書きましたがWi-Fi環境での設定ファイルの書き方がメインになります。有線での詳しい設定方法は参考リンク 4,6がおすすめです。

手順

  1. ネットワーク設定の確認
  2. 設定ファイルの作成
  3. 設定の適用

1. ネットワーク設定の確認

IPアドレスを固定するための準備です。

1-1. IPアドレス・インターフェース名を調べる
1-2. デフォルトゲートウェイのアドレスを調べる
1-3. DNSアドレスを調べる

1-1. IPアドレス・インターフェース名を調べる

どんなIPアドレスに固定するか。わかりやすいのがいいでしょう。他の機器で使われていないものであればなんでもいいです。
今どんなIPアドレスかは次のコマンドで確認出来ます。

$ ip address

どのインターフェースが使われているかも確認しましょう。(見分け方はよくわからないです.. 他より行数が多いやつかも..)

ちなみに特定のインターフェースだけに出力をしぼることもできます。

$ ip address show インターフェース名

1-2. デフォルトゲートウェイのアドレスを調べる

ip routeで確認できます。grepでdefaultのものだけを出力するには以下のとおりです。

$ ip route | grep default

1-3. DNSアドレスを調べる

/etc/resolv.confを直接参照しろという記述もみかけますがこれは間違いだそうです。そもそもこのファイルはsystemd-resolvedにより生成されるファイルであり、詳細がしりたいときはsystemd-resolved --statusを使うらしいです。参考2

$ systemd-resolved --status

上で調べたインターフェースの項目中のDNS Serversにある数値が目的のアドレスです。

2. 設定ファイルの作成

/etc/netplan/に作成します。ファイル名は99_config.yamlです。既存のXX_config.yamlを編集するのは非推奨だそうです。参考3,4

/etc/netplan/99_config.yaml
network:
  version: 2
  renderer: networkd
  wifis:
    インターフェース名:
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.XXX.XXX/24
      gateway4: 192.168.XXX.XXX
      nameservers:
        addresses:
          - 192.168.XXX.XXX
      access-points:
        "accessPoint1":
          password: "password"
        "accessPoint2":
          password: "password"

NetplanはバックエンドにnetworkdとNetwork Managerの2つをサポートしているそうです。調べているときはnetworkdを使っているサイトが多かったですが、もしNetwork Managerをつかう場合はrenderer: NetworkManagerのようにします。

4行目をwifis:としていますが有線接続の場合はethernets:としてください。

インターフェース名は1-1. IPアドレス・インターフェース名を調べるのものにしてください。

9行目- 192.168.XXX.XXX/24は固定したいIPアドレスにしてください。

10行目gateway4: 192.168.XXX.XXX1-2. デフォルトゲートウェイのアドレスを調べるのものにしてください。

13行目nameservers:>addresses:- 192.168.XXX.XXX1-3. DNSアドレスを調べるのものにしてください。

14行目access-points:以降はWi-Fi接続だけの設定になります。注意点としてアクセスポイント名(SSID)とパスワードはダブルクオーテーションで囲みましょう。アクセスポイントは1つでも3つ以上でも大丈夫です。

3. 設定の適用

いきなり設定を適用するのは怖いのでnetplanのtryコマンドを使いましょう。一時的に設定を適用したあと、Enterキーが押されなければ120秒で自動的にもとの設定に戻してくれます。--timeoutオプションで任意の秒数に変更できます。参考5

$ sudo netplan try --timeout 180

この間にネットワーク接続をし直してからネットの検索などでちゃんとつながるか試しましょう。また実際にIPアドレスが固定されているか別ターミナルを立ち上げてip addressで確認するのもいいでしょう。

もし成功していたらEnterキーを押して完了です!

タイムアウトしてしまってもapplyコマンドで適用できます。

$ sudo netplan apply

最後に

そもそも筆者はネットワークの知識がなさすぎて用語を調べるところからでしたが、検索にヒットするWebサイトが古かったり、サイトごとに方法がバラついていたためにとても苦労しました。まず"Netplanを使う"というところまでたどり着くのにも時間がかかりました。
最初に99_config.yamlを書いたときはtryコマンドを知らず、そのままapplyしてしまいました。結果繋がらなくなり絶望しました... 記述ミスがあったのですが最初は気づかず、設定ファイルを移動したりPC再起動したり焦っていろいろやりました。ミスを修正してからもすぐには直らず「明日OSを入れ直すしかない...」と落ち込んだのがこれを書く前夜のことです。今朝になってPCを起動してみたらWi-Fiが繋がっていた(IPアドレスの固定は出来ていませんでしたが)のは嬉しかったですが理由がわからずひたすら困惑しました。
その後Netplanの公式(参考6)をみて設定したところ固定に成功しました。やっぱ公式は偉大ですね。
有線やもっと複雑なネット環境の方には参考4と一緒におすすめします。

拙い記事ですが最後まで読んでいただきありがとうございました。

参考リンク

  1. Ubuntu 18.04 LTSで固定IPアドレスを設定する方法【デスクトップ編】
  2. networking - What DNS servers am I using? - Unix & Linux Stack Exchange
  3. 【Ubuntu】 /etc/netplan/50-cloud-init.yamlを編集するの止めろ - Qiita
  4. Network - Configuration | Server documentation | Ubuntu
  5. Ubuntu 20.04 LTSで固定IPアドレスの設定 - Qiita
  6. Netplan | Backend-agnostic network configuration in YAML