RHEL7.xのVMでNetwork Adapterを追加したあとは。
素朴すぎる内容ですが、意外と面倒なLinuxのNetwork Interfaceの管理についての話題です。とくにも、Network Managerが導入されてからはなかなか手ごわいですね。
今回は、VMでNetwork Adapterを追加したんだけどどうすれば使えるようになるんでししたっけ?というのをやってみました。
当然ではありますが、VM上でAdapterを追加しただけでは、HostのOSでは勝手には有効になりません。
いちおう、ifconfigで見るとどうやら追加したAdapterはens244で見えてきています。
[root@host1 ~]# ifconfig
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.0.125 netmask 255.255.255.0 broadcast 10.10.0.255
inet6 fe80::4421:2193:962d:5218 prefixlen 255 scopeid 0x20<link>
ether 00:50:56:ff:ff:ff txqueuelen 1000 (Ethernet)
RX packets 4953 bytes 683258 (667.2 KiB)
RX errors 0 dropped 65 overruns 0 frame 0
TX packets 2303 bytes 418471 (408.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens224: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:50:56:ff:ff:63 txqueuelen 1000 (Ethernet)
RX packets 13 bytes 1344 (1.3 KiB)
RX errors 0 dropped 5 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
:
闇雲に、Iinterfaceをupしてみたところで、上がりませんね。
[root@host1 ~]# ifup ens224
/usr/sbin/ifup: configuration for ens224 not found.
Usage: ifup <configuration>
[root@host1 ~]#
上の出力結果でも出ているように、おなじみのifcfgのConfigfファイルもないから仕方がないのですが。。。
[root@host1 ~]# cd /etc/sysconfig/network-scripts/
[root@host1 network-scripts]# ls -l
total 232
-rw-r--r--. 1 root root 382 Oct 30 11:57 ifcfg-ens192
-rw-r--r--. 1 root root 254 Sep 12 2016 ifcfg-lo
lrwxrwxrwx. 1 root root 24 Oct 27 16:37 ifdown -> ../../../usr/sbin/ifdown
:
さてどうしたものかと言うところですが。。
RHEL7ではNetwork Managerで管理するということで、nmcliというコマンドで現在のDeviceの状態を確認してみました。
2.3. NetworkManager のコマンドラインツール nmcli の使用 - Red Hat Customer Portal
Network Manager のCLIということで、nmcliですね。
[root@host1 network-scripts]# nmcli dev
DEVICE TYPE STATE CONNECTION
virbr0 bridge connected virbr0
ens192 ethernet connected eth0
ens224 ethernet disconnected --
lo loopback unmanaged --
virbr0-nic tun unmanaged --
とりあえず、追加したens224は、disconnectedであることはわかりました。
まずはconnectedにしないことには始まらないようなので、Connectionを追加するコマンドを実行。Network ManagerはConnectionという単位でNetwork Interfaceを管理するみたいですね。
[root@host1 network-scripts]# nmcli con add type ethernet ifname ens224 con-name eth1
Connection 'eth1' (77a2073d-a654-4f8e-a2b0-0668c40ed77d) successfully added.
[root@host1 network-scripts]#
Con-nameは適当な名前でいいみたいなので、馴染みのある"ethなんとか"で設定してみました。
UUIDが設定されてsuccessfullyで完了!UUIDはNetwork Managerが使う識別子とのこと。
deviceのリストもconnectingの状態に。IPの設定を取得しようとしているみたいなのでおそらくデフォルトでDHCPが設定されているんでしょうね。
[root@host1 network-scripts]# nmcli dev
DEVICE TYPE STATE CONNECTION
virbr0 bridge connected virbr0
ens192 ethernet connected eth0
ens224 ethernet connecting (getting IP configuration) eth1
lo loopback unmanaged --
virbr0-nic tun unmanaged --
[root@host1 network-scripts]#
このタイミングでnetwork scriptsのフォルダには、Configファイルが作成されてました。
[root@host1 network-scripts]# ls -l
total 236
-rw-r--r--. 1 root root 382 Oct 30 11:57 ifcfg-ens192
-rw-r--r--. 1 root root 310 Oct 30 14:54 ifcfg-eth1
:
中を開くと、やっぱりDHCPで設定されていました。。
[root@host1 network-scripts]# cat ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
:
このままファイルを編集するという手もあるかとは思うのですが、せっかくなのでnmcliでIPをふってみようということで、192.168.0.251/24のIPと、192.168.0.1のDefault Gatewayで設定してみることに。
connectionに対して設定するので、対象としてはCon-Name(eth1)を指定しないとエラーになります。あと、RHEL7.0と7.1以降でNetwork Managerのバージョンが違うようで、私が使用していた7.3環境では7.0のシンタックスで設定しようとするとエラーになりました。
ちなみにこちらが7.0のです。ipv4.addresses "192.168.0.251/24 192.168.0.1"
[root@host1 network-scripts]# nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.0.251/24 ipv4.gateway 192.168.0.1
[root@host1 network-scripts]#
この状態で、ifcfg-eth1のファイルを開くとちゃんとIPアドレスとDG/Wが設定されています。
[root@host1 network-scripts]# cat ifcfg-eth1
TYPE=Ethernet
:
ONBOOT=yes
IPADDR=192.168.0.251
PREFIX=24
GATEWAY=192.168.0.1
:
[root@host1 network-scripts]#
もちろん、DeviceもConecctedに!
[root@host1 network-scripts]# nmcli dev
DEVICE TYPE STATE CONNECTION
virbr0 bridge connected virbr0
ens192 ethernet connected eth0
ens224 ethernet connected eth1
lo loopback unmanaged --
virbr0-nic tun unmanaged --
私の場合は、ここでifconfig上も有効になっておりましたが、有効になっていない場合はNetwork Managerのrestartとかすることになるかと思います。
[root@host1 network-scripts]# systemctl restart network.service
[root@host1 network-scripts]#
また、nmcliからもinterfaceのdown/upすることもできました。
[root@host1 network-scripts]# nmcli connection down eth1 && nmcli connection up eth1
Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/38)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/39)
[root@host1 network-scripts]#
以上です。