趣味でLinuxを触るだけの筆者がターミナルからIPアドレスを固定しようとしたら、思いのほか苦戦したために書きました。
今回筆者はWi-Fi環境で設定をしましたが、有線接続との違いにも配慮しています。
注意点
- 筆者にネットワークまわりの知識は一切ありません。そのためこの記事にも重大な誤りや欠陥があるかもしれません。
- 筆者の環境はZorin OS 15.3です。Ubuntuベースであり共通点が多いOSなので、おそらくUbuntuでも同じように設定できると思います。が、検証はしていません。
- GUIからも比較的簡単に設定出来ます。参考リンク 1
- 今回はコマンドを用いて設定しています。
- 上にも書きましたがWi-Fi環境での設定ファイルの書き方がメインになります。有線での詳しい設定方法は参考リンク 4,6がおすすめです。
手順
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
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.XXX
は1-2. デフォルトゲートウェイのアドレスを調べるのものにしてください。
13行目nameservers:
>addresses:
の- 192.168.XXX.XXX
は1-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と一緒におすすめします。
拙い記事ですが最後まで読んでいただきありがとうございました。
参考リンク
- Ubuntu 18.04 LTSで固定IPアドレスを設定する方法【デスクトップ編】
- networking - What DNS servers am I using? - Unix & Linux Stack Exchange
- 【Ubuntu】 /etc/netplan/50-cloud-init.yamlを編集するの止めろ - Qiita
- Network - Configuration | Server documentation | Ubuntu
- Ubuntu 20.04 LTSで固定IPアドレスの設定 - Qiita
- Netplan | Backend-agnostic network configuration in YAML