2021-07刷新
UNIX系OSで、IPアドレスやリゾルバーの管理って、管理の中でも中枢に近い重要項目です。
以前、このチャプタはディストリごとに書いていました。が、むしろ「管理形態(管理手法)の違い」ごとに書いたほうが良いかなあ・・・なんて思い至りました。なので、書き直します。
これ以前に書いていたことは、チャプター末に示す旧ファイルにあります。今となってはあまり参考にならないと思いますが・・・
こういう「適当に思いついたら書き直す」発想は趣味的にやっているウェブサイトならでは、です、笑。
Sec-1.管理形態(管理手法)の分類
Sec-2.ものすごく古いやり方
Sec-3.Script 等による管理の、最近のやり方
Sec-4.NetworkManager による管理
Sec-5.Wicd による管理
Sec-6.connman による管理
Sec-7.その他
なお、UNIXマシンっぽく管理するイメージとは、すなわち有線・無線とも IP address、netmask、gateway、nameserver、searchlist を管理するイメージです。
外部にノート PC を持ち出して wifi 利用するイメージ(Windowsっぽい使い方)では書いていません。その場合には、DHCP 利用で、なおかつ searchlist は管理しないと思います。
まず、ネットワーク管理の形態を適当に分類した表を示します。
一行目は、実際にディストリで使われているやり方ではありません。あくまで参考。
以下のセクションで順に説明していきます。
昔・・・30年くらい前、IP アドレスを決め、ルーティングを決めるのに、コマンドでやってました。
当時は、ifconfig と route コマンドでした。今は ip コマンドです。
# /usr/bin/ip link set enpXs0 up # /usr/bin/ip addr add 192.168.x.y/24 dev enpXs0 # /usr/bin/ip route add default via 192.168.n.m dev enpXs0
x、y、n、m、X は適当に自分のサイトのヤツ
こんな感じに打ち込めば、インターフェイスの設定が出来ます。なので、/etc/rc.local の中でこれをやります。
なお、このやり方の場合、/etc/resolv.conf はエディターで書きます。普通に書くだけ。
補足:昔のやり方、ifconfig だと速度を指定していたような気がします。確か media 100Base とか。
で、ip コマンドで速度指定しなくて良いのか、ちょっと気になりました。$ man ip | grep media とか $ man ip | grep Media とかやっても、何も出てきません。速度指定する方法は無いのだろうか?
直接的に速度を計測して確かめてみました。
$ speedtest-cli --list | grep Japan 6766) JAIST(ino-lab) (Nomi, Japan) [132.41 km] 6087) Allied Telesis Capital Corporation (Fussa-shi, Japan) [137.30 km] 8407) Allied Telesis Capital Corporation (Sagamihara, Japan) [150.26 km] 24333) Rakuten Mobile , Inc (Tokyo, Japan) [167.63 km] ・・・・・一杯出てくる・・・・ 一番上で実行 $ speedtest-cli --server 6766 Retrieving speedtest.net configuration... Testing from NTT (60.41.220.62)... Retrieving speedtest.net server list... Retrieving information for the selected server... Hosted by JAIST(ino-lab) (Nomi) [132.41 km]: 28.624 ms Testing download speed................................................................................ Download: 272.49 Mbit/s Testing upload speed...................................................................................................... Upload: 273.36 Mbit/s
こんな感じになったので、Gigaでちゃんと設定されているようです。ホッ・・・
GUI のツールで計測して早いときで 290Mbps くらいなのでマアマア良いと思います(笑)。
今更、こんなやり方使うことは無いと思います。でも一度やっておくとネットワーク管理のごく基本を初歩から理解できると思います。
それに、なんともならなくなったとき、手動でこのコマンドを打ち込めばネットワーク設定が出来ます。いざというとき、役に立つ・・・かもしれません、笑。
なお、こんなやり方では Wifi への対応は難しいと思います。
このやり方で思い浮かぶのは
他にもあるかもしれませんが、私が思いつくのは、概ねこんなところです。順にいきます。
**** Debian + CUI インストール ****
ブートアップ時に /etc/network/interfaces ファイルを見て、それでOSがネットワーク設定しています。
例えば、DHCP でインストールすると、以下のような具合です。
auto lo iface lo inet loopback # The primary network interface allow-hotplug enpXXs0 iface enpXXs0 inet dhcp
これを以下のように書き換えてリブートすると静的 IP アドレスに変わります。注:XXはインターフェイス固有の番号
auto lo iface lo inet loopback # The primary network interface allow-hotplug enpXXs0 iface enpXXs0 inet static address 192.168.x.y netmask 255.255.255.0 gateway 192.168.z.w (注:XX x y z w は適当においた)
簡単です。
Debian のこのやり方の場合、リゾルバーの設定(/etc/resolv.conf)はエディタで編集・管理します。
想像ですが、おそらくOSがネットワーク設定をやる際、最終的には Sec2.のように ip コマンドを使っていると思われます。確認はしてませんが、笑。
なお、少し前の MXLinux、antiX もこのやり方でした。上記以外に dns-nameserver というキーワードと、dns-search というキーワードが使えました。前者はネームサーバの指定、後者はリゾルバーにサーチリストを与えるやりかた、、、でした。
過去形で書くのは、今は両者ともこのファイルを使っていないからです。それは別途、そのディストリのチャプタで説明。
**** Ubuntu + CUI インストール ****
Ubuntu を CUI (サーバモード)でインストールすると、ネットワーク関係は /etc/netplan/ というディレクトリに収納されたファイルで管理します。つまり、ブートアップ時にこのディレクトリ内のファイルを見て、システムがネット関係の設定をやっています。
ディレクトリの中を見ると初期設定ファイルがあったりします。
自分が設定するファイル名称は /etc/netplan/99-hoge.yaml などとするのが良いらしいです。
このディレクトリ、たくさんの設定ファイルが入るかもしれない。でも、番号順にシステム設定情報を上書きしていくらしい。なので初期設定のものはいじらないで、99などとして自分の設定を書くこと・・・だそうです。ネット検索したら、そう書いてありました、笑。
それで、自分の設定が反映されるようになります。
22.04 を固定IPアドレスにしてインストールした例です。変更するときはこれをベースにいじれば良いと思います。
例: network: ethernets: enp*s0: addresses: - 192.168.0.x/24 gateway4: 192.168.0.y nameservers: addresses: - 192.168.0.z search: - quinos.net version: 2 (適当に*とかx, y, z とかしてます)
私はUbuntuサーバを実運用したことがありませんので、これくらいにしておきます。詳しく知りたい方はネット検索してください。
**** Slackware ****
まず、Slackware のスクリプトがわかる図を下に貼ります。Slack7.xか12.xか、いつの時代のか忘れましたが、10年以上前に作った自作メモを画像化したものです。今はちょっと違うかもしれないけど・・・汗
ようするに rc.M の中で rc.inet1 を実行していて、その rc.inet1 の中で rc.inet1.conf を読んでいて、その rc.inet1.conf の中にIPアドレスとか gateway 等が書かれているってことです。なので、そのファイルを編集すれば IP address, netmask, gateway が管理出来ます。
(図では rc.inet2 の中で読んでいるように見えますが、作図下手です。読んでるのは rc.inet1 です)
/etc/resolv.conf は、確か、、、エディタで編集していたと記憶しています。
こういうもんだ、と分かれば管理はごく簡単です。(と、最近使っていないくせに書いています、汗)
以上、いま風のスクリプト利用の管理の仕方を3パターン書きました。いずれも wifi への対応は難しいと思います。多分、無理
ようやく、スクリプト利用ではなくいま風のツールを使った管理形態です(笑)。ここらへんからは Wifi にも対応出来ます。
よほど腕の良い人はSec2.とかSec3.とかでも Wifi 対応できるかもしれませんが、私は無理!
NetworkManager について、気がついた点を列記しておきます。
こんなところだと思います。GUI での設定例は省略。見ればすぐわかります。
CUI で nmcli を使う例を以下に示しておきます。サンプルです。
# nmcli connection edit (上記のように入力すると、下の質問が来るので、ethernet または 802-3-ethernet と入力する) 接続タイプを入力してください: ethernet (<<ーー入力したところ) (?を入力するとコマンド一覧が出る) nmcli> ? (<<ーー入力したところ) ------------------------------------------------------------------------------ ---[ メインメニュー ]--- goto [<setting> | <prop>] :: 設定またはプロパティーに移動する remove <setting>[.<prop>] | <prop> :: 設定を削除する、またはプロパティー値をリセットする set [<setting>.<prop> <value>] :: プロパティー値を設定する describe [<setting>.<prop>] :: プロパティーの説明を表示する print [all | <setting>[.<prop>]] :: 接続を出力する verify [all | fix] :: 接続を検証する save [persistent|temporary] :: 接続を保存する activate [<ifname>] [/<ap>|<nsp>] :: 接続をアクティベートする back :: ひとつ上のレベルに移動する (戻る) help/? [<command>] :: このヘルプを表示する nmcli <conf-option> <value> :: nmcli 設定 quit :: nmcli を終了する ------------------------------------------------------------------------------ nmcli> print ipv4 (<<ーー ipv4の状態を出力する。ここを編集する) ['ipv4' 設定値] ipv4.method: auto ipv4.dns: -- ipv4.dns-search: -- ipv4.dns-options: "" ipv4.dns-priority: 0 ipv4.addresses: -- ipv4.gateway: -- ipv4.routes: -- ipv4.route-metric: -1 ipv4.route-table: 0 (unspec) ipv4.ignore-auto-routes: いいえ ipv4.ignore-auto-dns: いいえ ipv4.dhcp-client-id: -- ipv4.dhcp-timeout: 0 (default) ipv4.dhcp-send-hostname: はい ipv4.dhcp-hostname: -- ipv4.dhcp-fqdn: -- ipv4.never-default: いいえ ipv4.may-fail: はい ipv4.dad-timeout: -1 (default) (下で、入力しているところ。最後に save する) nmcli> set ipv4.method manual nmcli> set ipv4.addresses 192.168.x.y/24 nmcli> set ipv4.gateway 192.168.z.w nmcli> set ipv4.dns 192.168.0.A nmcli> set ipv4.dns-search quinos.net nmcli> save
こうしてセーブすれば作業完了。
この後は、# systemctl restart NetworkManager もしくは # reboot
これで、IPaddress、netmask、gateway、/etc/resolv.conf の中の nameserver、search(サーチリスト)が管理されます。
Debian 10.xで、LXDE を単体(他の DE を入れずに)インストールすると、Wicd がインストールされていました。これは Debian 11 になって変わりました。今(Debian 11 + LXDE)は connman がインストールされていて、それでネットワーク管理します。
また、2019頃の SUSE は Wicd での管理がデフォルトでした。今は NetworkManager での管理がデフォルトになっています。
こんな具合で、Wicd をデフォルトで使うディストリはほぼ消滅ぎみですが・・・
Devuan 3.1.1 Xfce をインストールしたら、Debian 10.x LXDE と同じやり方でした。wicdがインストールしてあり、当初は interfaces、resolv.conf を使ってネットワーク管理するやり方でした。
なので、少しふれてみます。
Devuan 3.1.1 で見てみます。/etc/wicd/ ディレクトリの中は以下の具合。
$ ls -l 合計 24 -rw-r--r-- 1 root root 931 7月 29 09:46 dhclient.conf.template -rw-r--r-- 1 root root 931 1月 26 2016 dhclient.conf.template.default drwxr-xr-x 3 root root 4096 7月 29 09:31 encryption -rw------- 1 root root 485 7月 29 13:47 manager-settings.conf drwxr-xr-x 6 root root 4096 7月 29 09:31 scripts -rw------- 1 root root 378 7月 29 13:49 wired-settings.conf -rw------- 1 root root 0 7月 29 13:47 wireless-settings.conf
また、wired の当初設定は以下の具合です。無効化してあるのが分かります。
# cat wired-setting.conf [wired-default] afterscript = None use_static_dns = False dhcphostname = HOGEHOGE postdisconnectscript = None dns3 = None ip = None search_domain = None encryption_enabled = False dns1 = None dns_domain = None broadcast = None default = 1 netmask = None dns2 = None beforescript = None profilename = wired-default predisconnectscript = None gateway = None use_global_dns = False
ここで Devuan 3.1.1 の場合、interfaces ファイルの中で lo 以外をコメントアウトしてから wicd の管理用 GUI ツールをクリックします。下の図、右の方にあるヤツが wicd 管理用 GUI ツールです。
このように管理画面が出ます。プロパティをクリックすると右の具合。IPaddress 等やリゾルバー関係が管理できるのがわかります。
wicd の場合は、どうやらデーモンをリブートしたり、システムをリブートしたりする必要がなさそうです。単に ok をクリックすると、直ちに値がシステムに反映されます。
動きは安定した感じで、けっこう扱いやすそうです。
お試しは有線LANでやりましたが、ディレクトリの中にはWifi用の設定ファイルもあるので、当然 wifi も管理対象です。
ここで示したものが wicd を使う全てののディストリ(他にあるかどうか、知りませんが・・・)で通用するかどうかは、分かりません。あくまで Devuan の場合ってことです。
Sec-6.に示す connman と違ってリゾルバーも普通に管理できるのは良いと思います。
Debian 10.x に LXQT を単体インストールすると connman でネットワーク管理するやり方でした。また Debian 11 では LXDE 又は LXQT の単体インストールが connman での管理です。(メジャーな Xfce や GNOME 等は NetworkManager 利用)
メモリー消費の少ない DE で使われているので、NetworkManager よりも省メモリ(少メモリ)な GUI ツールと想像されます。
名前が connman なので connection manager かと思いましたが、 $ man connman すると Network management daemon とかって書いてあるので、それが名称らしいです。似たような名前が多いのでまぎらわしいです。
例によって特徴を列記します。
以下で Debian の LXDE と LXQT を例に、ごくごくごく、簡単に説明します。ほんのチョイ問題ありです。
LXDE の場合
左下のメニュー、設定、Connman Settings と進む。下の画面となる。
ここで歯車(設定ボタン)を押すと、下の画面
ここから IPv4 をチェックして値を入れれば、IPaddress、netmask、gateway が管理できそうに見えます。
また、Nameservers、Domainsをチェックして値を入れれば、それぞれ /etc/resolv.conf の中のネームサーバとサーチリストが管理できそうに見えます。
が、管理できるのは IPv4 の方だけでリゾルバーがなんともなりません。値を変えても /etc/resolv.conf に反映されません。
connman をリスタートしても、システム・リブートしても駄目。
やむなく、エディタで /etc/resolv.conf を編集してリブートすると、何故か当初インストールした時のものに書き直されてしまいます。
ようするにリゾルバーの設定については、当初インストール直後にOSが設定した状態から変更することが不可能です。
ここでは問題を上げるだけにして、対策は末尾に書きます。
LXQT の場合
左下のメニュー、インターネット、Connman UI Setup と進む。下の画面になる。
右下の Configration を押す。すると下の画面。
LXDEと同様です。IPv4関係(IPaddress、netmask、gateway)は変更できますが、リゾルバーの挙動を管理出来ません。無理。対策は下記。
注:私のやり方が下手なのか、あるいはインストールに失敗しているだけかもしれません。おかしい原因は不明です。
対策1.Sec-3. のやり方に移行(DHCP、Static IPadress どちらでも)
対策としては単純にやります。connman を止めて、上記 Sec-3. の管理に移行します。それならエディターがあれば思いどおりに管理出来ます。簡単です。
以下のように connman を止めるだけです。
# systemctl disable connman # systemctl stop connman
これでSec-3.の管理に移行出来ます。Sec-3.に書いたとおり、Debian なら /etc/network/interfaces、/etc/resolv.conf の2つのファイルで管理します。
これは、有線 LAN の場合に限定したやり方と思います。
対策2.Sec-4. のやり方に移行(DHCP、Static IPaddress どちらでも)
connman を止めて、/etc/network/interfaces ファイルで lo 以外のところをコメントアウトして、その後 NetworkMamager 関係のパッケージを入れ、動かすだけです。
# systemctl disable connman # systemctl stop connman # apt install network-manager network-manager-gnome
(既に /etc/network/interfaces フィアルは編集ずみとします)
もしもうまく NetworkManager が動いていないようなら、システムリブートします。
これで、NetworkManagerによる安定した管理に移行できます。
これは、有線 LAN でも Wifi でもいけるやり方です。
対策3.connman であくまで行く場合(DHCP、Static IPaddress どちらでも)
ようするにリゾルバーが制御出来ないだけなので、無理やり/etc/resolv.conf を自分が思っているように書き換えます。
やり方は簡単です。/etc/rc.local の最後に以下のように書くだけ。/etc/resolv.conf.my は自分がこうしたいと思っているものを書いておくファイルです。
(/etc/rc.local の動かし方は Debian のところ、Chap-13. Sec-3.に書いています)
なお、あくまで connman で行く場合も、/etc/network/interfaces の中のローカルループバック以外(lo 以外)はコメントアウトしておきます。
#### end of rc.local ### sleep 10 cp /etc/resolv.conf.my /etc/resolv.conf ####
要するに、システムがブートアップ時にいろいろ初期設定をやります。それが一段落して終わった頃を見計らって、システムに気づかれないようにコッソリ書き直すってやり方です。姑息(笑)ですが、うまくいきます。
リゾルバーを制御出来ないのが、私のマシンだけの固有の問題なのか、常におかしいのかわからないので、もしもおかしかったら上記を参考にしてください。おかしくなければこのSec-6. は無視してください。
ネット検索すると、他に netctl、Wifi Radar などという管理デーモンがあるようです。これついては、具体的な使用例を知りません。なので書けません。
以前のチャプタを下記に示します。そもそも整理整頓がうまく出来ていなくて、くちゃくちゃ。見づらいと思います。
自分の認識としては、書き直した今回のもののほうがマシだと思います。
https://www.quinos.net/topicj/topicj.01.html