読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】ip addr で付けたアドレスが再起動で消えた。hostnamectl・/etc/hosts と nmcli・systemd-networkd・ifup で恒久的に設定する【LPICレベル1】

22レスカテゴリ:Linux
1: 名無しさん

ip addr add 192.0.2.10/24 dev eth0 でアドレスを付けたのに、再起動したら消えてた

2: 名無しさん

前提のおさらい。IPv4 のアドレスは 192.0.2.10/24 みたいにアドレスとプレフィックスの長さで書いて、別のネットワーク宛てはデフォルトゲートウェイに送る。DNS サーバーの場所も要る

3: 名無しさん

>>1
ip コマンドの変更は、今動いてるカーネルにだけ効く一時的なもの。再起動しても残すには、ネットワークを管理するしくみの設定ファイルに書く
よく使われるのは NetworkManager(nmcli)、systemd-networkd、Debian の ifupdown(/etc/network/interfaces)

4: 名無しさん

>>3
nmcli の使い方を教えて

5: 名無しさん

>>4
全体の状態は nmcli general status、機器の一覧は nmcli device status、接続(設定のまとまり)の一覧は nmcli connection show
NetworkManager では、設定を「接続(connection)」として名前を付けて持つ。機器(device)に接続を当てはめて使う

6: 名無しさん

>>5
固定のアドレスにするには?

7: 名無しさん

>>6
nmcli connection modify office ipv4.method manual ipv4.addresses 192.0.2.10/24 ipv4.gateway 192.0.2.1 ipv4.dns 192.0.2.53
nmcli connection up office で反映
新しく作るなら nmcli connection add type ethernet ifname eth0 con-name office から。DHCP に戻すなら ipv4.method auto

8: 名無しさん

>>7
con は connection、dev は device の略で通る。DNS を足すときは +ipv4.dns で追加(nmcli-examples の man)

9: 名無しさん

>>5
無線 LAN は?

10: 名無しさん

>>9
nmcli device wifi list で見える SSID の一覧、nmcli device wifi connect "SSID" password "パスワード" でつなぐ(--ask で聞かせることもできる)。無線を止めるのは nmcli radio wifi off

11: 名無しさん

>>7
設定はどこに保存されるん

12: 名無しさん

>>11
/etc/NetworkManager/system-connections/ に、接続ごとの .nmconnection ファイル(keyfile の形式)。画面のある端末向けのメニューなら nmtui

13: 名無しさん

>>3
systemd-networkd のときは?

14: 名無しさん

>>13
/etc/systemd/network/ に .network ファイルを置く(systemd.network の man の例)
[Match]
Name=enp2s0
[Network]
Address=192.0.2.10/24
Gateway=192.0.2.1
状態は networkctl

15: 名無しさん

>>3
Debian の /etc/network/interfaces は?

16: 名無しさん

>>15
interfaces の man の書き方
auto eth0(起動のときに上げる)
iface eth0 inet static
address 192.0.2.10/24
gateway 192.0.2.1
DHCP なら iface eth0 inet dhcp。上げ下げは ifup eth0・ifdown eth0
古い Red Hat 系は /etc/sysconfig/network-scripts/ifcfg-eth0 に書いてた

17: 名無しさん

ホスト名を変えたい

18: 名無しさん

>>17
ホスト名は /etc/hostname に1行で書いてある。hostname で表示
systemd なら hostnamectl hostname web01 で変える(古い版は hostnamectl set-hostname web01。今の版にも残ってた)。--static(/etc/hostname)・--transient(今だけ)・--pretty(自由な表示用)の3種類がある

19: 名無しさん

>>18
名前を変えたら /etc/hosts も

20: 名無しさん

>>19
/etc/hosts は「IPアドレス 正式な名前 別名…」の表で、DNS に聞く前に(nsswitch.conf の順で)使われる
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
192.0.2.10 web01.example.com web01
Debian は自分のホスト名を 127.0.1.1 の行に書く

21: 名無しさん

>>20
試したマシンには NetworkManager も networkd も動いてなかったから、ip は表示だけ、nmcli・networkctl・ifup は man とパッケージの中のファイルで確かめた。設定は何も変えてない

22: 名無しさん

>>3
ip は一時的、残すなら nmcli か .network か interfaces。ホスト名は hostnamectl と /etc/hostname、名前の表は /etc/hosts。消えた理由が分かった

管理人のひとこと