Chap-19. Systemd 採用ディストリ(Debian etc)のIP address と resolver の設定

Sec-1.不適切だった事柄・概要
Sec-2.Debian 系(Debian, Ubuntu, LinuxMint)
Sec-2-1.設定の仕方
Sec-2-2.リゾルバーの挙動
Sec-2-3.その他(Chap-13. Sec-14.について)

 CUIでサーバ管理していて、IP address やリゾルバの設定を変更したくなることが、時たまあります。
そんな時、容易に設定変更できるかどうか、つまりどこに設定ファイルがあるかというのは、かなり重要な事柄です。 ここは、試行錯誤したり、とまどったりしながら探った事柄のメモです。
とりあえず、Debian 系だけですが、いずれ他のディストリにも広げていきます。


Sec-1.不適切だった事柄・概要

 Chap-13. では Debian について /etc/network/interfaces を編集すると書きました。完全な間違いとは言えないですが、適切ではないです。
Debian 系の場合、/etc/NetworkManager/system-connections/ の中にあるファイルを編集するのが適正だと思います。



Sec-2.Debian 系(Debian, Ubuntu, LinuxMint)

Sec-2−1.設定の仕方

 上に書いたように /etc/NetworkManager/system-connections/ ディレクトリの中に設定ファイルがあります。
実は何もないこともありますが、一度GUIで設定変更してセーブするとファイルが出来上がります。あとは、自分で内容修正して reboot すると修正したことが設定に反映されます。
概ね以下の感じです。


[connection]
id=hogehoge
uuid=**********************************(ここ、本来は、いろいろ書いてある)
type=802-3-ethernet

[802-3-ethernet]

[ipv4]
method=manual
address1=192.168.0.2/24,192.168.0.200
dns=192.168.0.100;
dns-search=quinos.net;

[ipv6]
method=auto
ip6-privacy=2

この中で [ipv4]のところに注目します。(うちは ipv4 なので・・)
address= のところ、最初がアドレス、次の 24 がネットマスク , を挟んで最後が default-gateway です。
dns= のところ、ネームサーバです。2つ書くなら ; の次に例えば 192.168.0.101 と書いておけば反映されます。
最後の dns-search= はリゾルバーにサーチリストを与えます。ここも2つ目を書くなら ; を挟んで次に例えば hogehoge.net と書くとこれが反映されます。
わかってみると、結構、シンプルです。

なお、この場合、/etc/network/interfaces は、例えば以下のような感じにしておくと良いと思います。

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

#####


つまり、このファイルは設定に使わないわけです。
/etc/NetworkManager/system-connections/ の中をカラにして、/etc/network/interfaces だけを書けば、これが確かに反映されます。しかし、言ってみれば systemd の管轄を離れて勝手にやっている状態ですので、できれば /etc/NetworkManager/system-connections/ の中に設定ファイルを入れたほうが無難です。

最初、私はChap-13. に、/etc/network/interfaces を編集すると書きました。その場合、systemd が不満を表明していました。(Chap-13 参照)
でも、こちらでやると(/etc/NetworkManager/system-connections/)、ちゃんと右上のネットのマークが適正なマークになります。

net-status3

なお、このディレクトリに入れるファイルの名前は、別になんでも良いです。私は hoge ってファイル名で試してみましたが、別段、問題ありません。
また、ファイル中の id のところ、適当に hogehoge とかって書きましたが、これも別に問題ないようです。
以上の設定方法は、Debian、Ubuntu、LinuxMint 共通です。

net-status1




Sec-2−2.リゾルバーの挙動について

 上記で設定ファイルを決めて reboot すると、IP address は定めた値となり、さらに /etc/resolv.conf にリゾルバーの設定が反映されます。
ただし、Debian と Ubuntu 、LinuxMint では /etc/resolv.conf への反映のされ方が少し違います。
Debian の場合は /etc/resolv.conf の中で

nameserver    192.168.0.100

という風になります。一方 Ubuntu、LinuxMint では

nameserver    127.0.0.53

こんな具合になります。
Debian はリゾルバーが直接ネームサーバに問い合わせる設定です。
一方で、Ubuntu、LinuxMint ではリゾルバーが、一旦 systemd に問い合わせして、systemd がネームサーバに問い合わせます。
試しに、192.168.0.100 のネームサーバに他では引けない特殊なアドレスを登録して、nslookup で引けるか試してみました。そうしたところ、Debian はもちろんですが、Ubuntu、LinuxMint でも同様に引くことができました。
したがって、systemd を間にはさんでも実運用上は違いがないようです。





Sec-2−3.その他(Chap-13. Sec-14.について)

 前に私は「Ubuntu では IP address やリゾルバーの設定が CUI で出来なくて、撤退した」と書きました。また、ちょいとばかり Ubuntu の悪口?を書いちゃいました。すみません。間違いでした。
上記のようにやれば、Ubuntu や LinuxMint でも、Debian 同様に管理することが出来ます。
従いまして、Ubuntu や LinuxMint を使っても、公開サーバも立てられるでしょうし、LAN 内の管理・開発用環境(いわゆるUNIX ワークステーション風の使い方)もできると思います。多分、問題ないですね。
Ubuntu は使えないという以前の書き方は全く不適切でした。恐縮です。

 LinuxMint でサーバ、と書くと「ええっMint でサーバ?」て反応が普通だと思います。
確かにあまり聞かない使い方です。
しかし、Linux を CUI で使うことを考えた時、問題はなさそうに思えます。
なぜなら、CUI になった瞬間「どのディストリも大差ない」と言えるから。
みんな、同じ Kernel.org のカーネルを使い、同じ GNU のライブラリ glibc を使い、同じ GNU等のコマンド郡を使っています。gcc、make、tar 等も使っているものの出自は同じです。単にバージョンが違うだけ。
あえて言えば、Mint は nftables のバージョンがちょい古いですが、違いはせいぜいそれくらい。
なので、そのうち、試しに Mint で公開サーバを立ててみようかなあ・・・なんて考えています(笑)

 それにしても、設定ファイルの位置を特定するのに手間取りました。これほど重要な情報が、Debian のサイトで簡単には見つけられません。
「/etc/NetworkManger/system-connections/ に設定ファイルがある」ってウェブサイドのどこに書いてあるんだろう??
ま、あんまりこんなこと書くと、間違えた原因を Debian のサイトのせいにしているみたいで、印象悪いですね。自分が愚かだったことを、他人のせいにしてはいけないですね。やめておきます(笑)