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]#

 

以上です。