CentOS7からはネットワーク周りの設定方法がかなり変わってきています。
CentOS6までは/etc/sysconfig/network-scripts配下のifcfg-eth*ファイルを直接編集することで設定を変更することが可能であり、CentOS7でも継続して同様な方法で変更可能なのですが、NetworkManagerに付属する「nmtui」と「nmcli」コマンドを使用した変更方法が奨励されています。
最もわかりやすいのはnmtuiで、以前のsystem-config-networkの代替となるコマンドです。これを実行するとGUI経由でネットワーク周りの変更を実施することが可能です。
上記で変更しただけでは有効にはなりませんので、以下のコマンドを実行することで変更が有効となります。
# systemctl restart NetworkManager |
上記の設定変更をコマンドベースで実施することが可能です。それが「nmcli」コマンドです。
まず以下のコマンドでデバイス(ethernet)の一覧を以下のコマンドで取得可能です。
# nmcli device DEVICE TYPE STATE CONNECTION eno1 ethernet connected eno1 eno2 ethernet unavailable -- lo loopback unmanaged -- |
さらに特定のコネクションを指定し、特定インターフェイスのIPアドレスなどの概要を見ることも可能です。
# nmcli device show eno1 GENERAL.DEVICE: eno1 GENERAL.TYPE: ethernet GENERAL.HWADDR: 00:1A:A0:0C:A6:12 GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: eno1 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: ip = 192.168.18.130/24, gw = 192.168.18.1 IP4.ROUTE[1]: dst = 192.168.17.0/24, nh = 192.168.18.1, mt = 0 IP4.DNS[1]: 192.168.6.18 IP6.ADDRESS[1]: ip = fe80::21a:a0ff:fe0c:a612/64, gw = :: |
以下はUUIDの情報を含めたEthernetの接続一覧を見るコマンドです。
# nmcli connection NAME UUID TYPE DEVICE eno1 c26f3081-ec1e-47f1-ad19-69521ea9d7c1 802-3-ethernet eno1 eno2 4e735009-f1dd-41d5-a8ba-903fb543ded8 802-3-ethernet -- |
手動でインターフェイスをActive/Deactiveに設定するには以下のコマンドを実施します。
※インターフェイスをActive化 # nmcli connection up eno1 ※インターフェイスをDeactive化 # nmcli connection down eno1 |
さらにインターフェイス接続の詳細情報を得るにはshowオプションを利用します。nmcli deviceよりも詳細な情報を得ることが可能です。
# nmcli connection show eno1
connection.id: eno1
connection.uuid: c26f3081-ec1e-47f1-ad19-69521ea9d7c1
connection.interface-name: --
connection.type: 802-3-ethernet
connection.autoconnect: no
connection.timestamp: 1405582090
connection.read-only: no
connection.permissions:
connection.zone: --
connection.master: --
connection.slave-type: --
connection.secondaries:
connection.gateway-ping-timeout: 0
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: yes
802-3-ethernet.mac-address: 00:1A:A0:0C:A6:12
802-3-ethernet.cloned-mac-address: --
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu: auto
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options:
ipv4.method: manual
ipv4.dns: 192.168.6.18
ipv4.dns-search: unix-power.net
ipv4.addresses: { ip = 192.168.18.130/24, gw = 192.168.18.1 }
ipv4.routes:
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.never-default: no
ipv4.may-fail: yes
ipv6.method: ignore
ipv6.dns:
ipv6.dns-search:
ipv6.addresses:
ipv6.routes:
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.ip6-privacy: -1 (unknown)
ipv6.dhcp-hostname: --
GENERAL.NAME: eno1
GENERAL.UUID: c26f3081-ec1e-47f1-ad19-69521ea9d7c1
GENERAL.DEVICES: eno1
GENERAL.STATE: activated
GENERAL.DEFAULT: yes
GENERAL.DEFAULT6: no
GENERAL.VPN: no
GENERAL.ZONE: --
GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/1
GENERAL.SPEC-OBJECT: --
GENERAL.MASTER-PATH: --
IP4.ADDRESS[1]: ip = 192.168.18.130/24, gw = 192.168.18.1
IP4.DNS[1]: 192.168.6.18
IP6.ADDRESS[1]: ip = fe80::21a:a0ff:fe0c:a612/64, gw = ::
|
上記のパラメータを修正したい場合の一例を下記に示します。
※IPアドレスを192.168.0.130, GWを192.168.0.1に変更 # nmcli connection modify eno1 ipv4.addresses "192.168.0.130/24 192.168.0.1" ※DNSサーバを192.168.0.1と2に変更 # nmcli connection modify eno1 ipv4.dns "192.168.0.1 192.168.0.2" ※StaticRouteの追加 # nmcli connection modify eno1 ipv4.routes "192.168.17.0/24 192.168.0.1" |
上記の設定変更についても、以下のコマンドを実施後、有効となります。
# systemctl restart NetworkManager |
CentOS6まではネットワーク周りのコマンドとしてifconfig / netstat / arp / routeなどのコマンドが使用されていましたが、CentOS7からはこれらは非奨励となりました。今後はiproute2というパッケージに付属しているコマンド群を使用することが奨励されています。但し、一部は上記のnmcliと重複しているものもありますので好みで使い分ければ良いと思われます。
以前までのコマンドの対比表が下記となります。
| 従来 | 今後 |
| ifconfig | ip addr , ip -s link |
| route | ip route |
| arp | ip neigh |
| netstat | ss |
昔ながらのifconfigでIPを確認する方法は今後は以下のコマンドに置き換えられます。
# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:1a:a0:0c:a6:12 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.130/24 brd 192.168.0.255 scope global eno1
valid_lft forever preferred_lft forever
inet6 fe80::21a:a0ff:fe0c:a612/64 scope link
valid_lft forever preferred_lft forever
3: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 00:1a:a0:0c:a6:14 brd ff:ff:ff:ff:ff:ff
|
デバイスごとの処理パケット数の統計値を表すコマンドが下記となります。
# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
624 6 0 0 0 0
TX: bytes packets errors dropped carrier collsns
624 6 0 0 0 0
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
link/ether 00:1a:a0:0c:a6:12 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
306310 1806 0 0 0 0
TX: bytes packets errors dropped carrier collsns
222109 1283 0 0 0 0
3: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether 00:1a:a0:0c:a6:14 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
|
netstat -nrに相当するルーティングテーブルを表示するコマンドが下記となります。
# ip route default via 192.168.0.1 dev eno1 proto static metric 1024 192.168.18.0/24 dev eno1 proto kernel scope link src 192.168.18.130 |
Macアドレスの調査などを行うarpコマンドの代替となるのが以下のコマンドです。
# ip neigh 192.168.18.1 dev eno1 lladdr 50:57:a8:13:a6:3f REACHABLE 192.168.18.128 dev eno1 lladdr 00:1a:a0:0c:a2:f0 STALE |
自身のサーバでどのようなサービスが稼働しているか一覧表示するコマンドが下記です。左端には全てTCPと表示されておりますが、StateのところがUNCONNとなっているのがUDP、LISTENとなっているところがTCPとなります。
# ss -ltu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp UNCONN 0 0 *:sunrpc *:* tcp UNCONN 0 0 *:ntp *:* tcp UNCONN 0 0 127.0.0.1:rpki-rtr *:* tcp UNCONN 0 0 *:924 *:* tcp UNCONN 0 0 :::sunrpc :::* tcp UNCONN 0 0 :::ntp :::* tcp UNCONN 0 0 ::1:rpki-rtr :::* tcp UNCONN 0 0 :::924 :::* tcp LISTEN 0 128 *:sunrpc *:* tcp LISTEN 0 32 *:ftp *:* tcp LISTEN 0 128 *:ssh *:* tcp LISTEN 0 128 :::sunrpc :::* tcp LISTEN 0 128 :::ssh :::* |
上記の中には既に通信が確立したもの ( established ) のものは含まれておりません。確立したものを表示したい場合は-lオプションを外して使用します。
# ss -tu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 184 192.168.18.130:ssh 192.168.210.25:53260 |