CentOS8に入門してみる(ネットワーク2)
前回は主にIPアドレス周りの知識を再整理する作業を行いました
今回から何回かかけてネットワークの設定を実際に弄りながら学習していきたいと思います
ネットワークインターフェース
ネットワークとの接点をネットワークインターフェースと言います
IPアドレスはホストに紐づているわけではなく、ネットワークインターフェース≒NIC(ネットワークインターフェースカード)に紐づいています
※AWSだとNICと同等の役割を担うものとしてENI(Elastic Network Interface)があります
基本的には1つのNICに1つのIPアドレスが対応となりますが、1NICに複数IPアドレスを紐付けたり、複数のNICを備えるルーターなどもあります
NICは物理的なハードウェアでカード型の装置として装着させ、これによりネットワークインターフェースをホストにアタッチさせることができるようになります
その結果ホストにIPアドレスを割り当てることができるようになります
ネットワークインターフェースは従来eth0やeth1といった名前が使われていましたが、現在はハードウェアに紐づいた形の名前が使われることが多いようです
en : イーサネット(優先LAN)
wl : 無線LAN
ww : 無線WAN
ネットワークインターフェースの一覧は/sys/class/netを参照することで確認可能です
[vagrant@centuser data1]$ ls /sys/class/net/
eth0 lo
ネットワークインターフェースの詳細はipコマンドを使用して確認します
[vagrant@centuser data1]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:62:08:41 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute eth0
valid_lft 75064sec preferred_lft 75064sec
NetworkManager
NetworkManagerは動的にネットワークを管理する機能です(無線LANが使用可能な状態になれば自動的に無線LANに接続してくれたりする)
NetworkManagerは下記のように確認することができます(active(running)と出ていればNetworkManagerは動いています)
[vagrant@centuser data1]$ sudo systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-08-27 11:51:12 UTC; 1 day 21h ago
Docs: man:NetworkManager(8)
Main PID: 921 (NetworkManager)
Tasks: 3 (limit: 11479)
Memory: 7.0M
CGroup: /system.slice/NetworkManager.service
└─921 /usr/sbin/NetworkManager --no-daemon
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0376] dhcp4 (eth0): state changed unknown -> bound
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0385] device (eth0): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed')
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0544] device (eth0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0545] device (eth0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0548] manager: NetworkManager state is now CONNECTED_LOCAL
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0553] manager: NetworkManager state is now CONNECTED_SITE
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0554] policy: set 'System eth0' (eth0) as default for IPv4 routing and DNS
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0616] device (eth0): Activation: successful, device activated.
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0619] manager: NetworkManager state is now CONNECTED_GLOBAL
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0622] manager: startup complete
CentOS6までは各種設定ファイルによってネットワークやネットワークインタフェースの設定を変更していましたが、それ以降のCentOSではNetworkManagerの管理コマンドで設定変更をするようになっています(後述するnmcliコマンドを参照)
設定ファイルによって設定変更したい時など、NetworkManagerをstopしたくなった場合は下記コマンドで行います
[vagrant@centuser data1]$ sudo systemctl stop NetworkManager
ストップしたかどうかステータスを確認します
[vagrant@centuser data1]$ sudo systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2020-08-29 09:02:15 UTC; 14s ago
Docs: man:NetworkManager(8)
Process: 921 ExecStart=/usr/sbin/NetworkManager --no-daemon (code=exited, status=0/SUCCESS)
Main PID: 921 (code=exited, status=0/SUCCESS)
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0619] manager: NetworkManager state is now CONNECTED_GLOBAL
Aug 27 11:51:15 centuser NetworkManager[921]: <info> [1598529075.0622] manager: startup complete
Aug 29 09:02:15 centuser systemd[1]: Stopping Network Manager...
Aug 29 09:02:15 centuser NetworkManager[921]: <info> [1598691735.2553] caught SIGTERM, shutting down normally.
Aug 29 09:02:15 centuser NetworkManager[921]: <info> [1598691735.2614] dhcp4 (eth0): canceled DHCP transaction
Aug 29 09:02:15 centuser NetworkManager[921]: <info> [1598691735.2614] dhcp4 (eth0): state changed bound -> done
Aug 29 09:02:15 centuser NetworkManager[921]: <info> [1598691735.2615] device (eth0): DHCPv4: trying to acquire a new lease within 90 seconds
Aug 29 09:02:15 centuser NetworkManager[921]: <info> [1598691735.2620] manager: NetworkManager state is now CONNECTED_SITE
Aug 29 09:02:15 centuser NetworkManager[921]: <info> [1598691735.2650] exiting (success)
Aug 29 09:02:15 centuser systemd[1]: Stopped Network Manager.
inactive(dead)となっているのでNetworkManagerは動いていないようです
次回起動時に自動的にNetworkManagerが立ち上がらないようにするには下記のコマンドを実行します
[vagrant@centuser data1]$ sudo systemctl disable NetworkManager
Removed /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
ここでexitしてvagrant haltして仮想マシンをシャットダウンして再起動後にNetworkManagerのステータス確認を行おうと思ったのですが、
vagrant upする際のssh接続ができなくなってしまう事象が発生した為、VirtualBoxのGUIから直接ログインを行いました
ステータスを確認しましたがinactive(dead)になっていることを確認できた為OKとします
なお、stop & disabledにしたNetworkManagerを元に戻すには下記コマンドを実行します
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager
ネットワークデバイスの確認
ネットワークデバイスの確認にはlshwコマンドを使用します
[vagrant@centuser ~]$ sudo lshw -class network
*-network
description: Ethernet interface
product: 82540EM Gigabit Ethernet Controller
vendor: Intel Corporation
physical id: 3
bus info: pci@0000:00:03.0
logical name: eth0
version: 02
serial: 08:00:27:62:08:41
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 66MHz
capabilities: pm pcix bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000 driverversion=7.3.21-k8-NAPI duplex=full ip=10.0.2.15 latency=64 link=yes mingnt=255 multicast=yes port=twisted pair speed=1Gbit/s
resources: irq:19 memory:f0000000-f001ffff ioport:d010(size=8)
ネットワークデバイスの情報が出力されました
description: Ethernet interface
イーサネットの為ethtoolコマンドも使用できます
[vagrant@centuser ~]$ sudo ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: umbg
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
ip a show eth0でもネットワークデバイスの情報出力が可能な為、そちらを使用することもできます
[vagrant@centuser ~]$ ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:62:08:41 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute eth0
valid_lft 83137sec preferred_lft 83137sec
ホスト名を変更する
ホスト名を変更についてまとめます
まずは現在のホスト名として
[vagrant@centuser ~]$ hostname
centuser
centuserが取得できました
変更方法として/etc/hostnameファイル内に記述されたhostnameを変更する方法があります
/etc/hostnameファイル中身をcentuserからhost01に書き換えて仮想マシンを再起動しログインし直しました
k@MacBook-Pro centos8 % vagrant ssh
Last login: Sat Aug 29 11:37:03 2020 from 10.0.2.2
[vagrant@host01 ~]$ hostname
host01
ちゃんとhostnameの変更ができたようです
また、/etc/hostnameの書き換えで行ったのと同じことをhostnamectlコマンドでも行えます
[vagrant@host01 ~]$ sudo hostnamectl set-hostname centuser
[vagrant@host01 ~]$ exit
logout
Connection to 127.0.0.1 closed.
k@MacBook-Pro centos8 % vagrant halt
==> default: Attempting graceful shutdown of VM...
k@MacBook-Pro centos8 % vagrant up
... 中略 ...
k@MacBook-Pro centos8 % vagrant ssh
Last login: Sat Aug 29 11:38:28 2020 from 10.0.2.2
[vagrant@centuser ~]$ hostname
centuser
host01に変更したホスト名をまたcentuserに戻しました
期待通りに変更できているようです
上記の方法は恒久的なホスト名の変更ですが、システムを再起動するまで有効となるような変更方法もあります
この場合は上で行ったような再起動も必要ありません
[vagrant@centuser ~]$ sudo hostname centos
[vagrant@centuser ~]$ hostname
centos
まとめ
ネットワークの学習は長丁場になりそうな予感がしています
仮想マシンでの確認が難しい部分が次から出てきそうです
次はnmcli(NetworkManager CLI)あたりから始めていこうと思います
覚えが悪いので一気に学習するのは難しいですが、時間がある時にコツコツ頑張っていきたいです!