• Like
RHEL7/CentOS7 NetworkManager徹底入門
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

RHEL7/CentOS7 NetworkManager徹底入門

  • 144 views
Published

RHEL7/CentOS7のNetworkManagerの利用方法です。

RHEL7/CentOS7のNetworkManagerの利用方法です。

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
144
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
7

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ver1.0 中井悦司 Twitter @enakai00 オープンクラウド・キャンパス RHEL7/CentOS7 NetworkManager徹底入門
  • 2. 2 RHEL7/CentOS7 NetworkManager徹底入門 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 好評発売中!
  • 3. 3 RHEL7/CentOS7 NetworkManager徹底入門 Contents  NetworkManagerの概要  nmcliによる設定  仮想ブリッジ/VLANデバイスの作成  Teamデバイスの作成  参考資料
  • 4. NetworkManagerの概要
  • 5. 5 RHEL7/CentOS7 NetworkManager徹底入門 NetworkManagerとは?  NetworkManagerは、RHEL7のネットワークを動的に設定するサービスです。 – ネットワークデバイスが動的に追加・削除される環境に対応することができます。  RHEL7ではデフォルトのネットワーク管理機能となっており、動的変更が不要な場合で も利用が必須です。  設定内容を表す「接続(Connection)」とネットワークデバイスを表す「(デバ イス)Device」を別々に定義して、それらを紐付けるという処理を行います。 – 新しい「デバイス(Device)」が追加された際に、既存の「接続(Connection)」に自 動で紐付けることで動的変更に対応します。管理者が明示的に紐付けを指定することも できます。 NAME="Ethernet connection 1" UUID="bc302e8f-f5f3-478d-bf87-e77d3288dac7" TYPE="Ethernet" BOOTPROTO="static" IPADDR0="192.168.122.10" ... NAME="Wi-Fi connection 1" UUID=6fda7095-1685-468f-a138-608f53eb6048 TYPE=Wireless BOOTPROTO=dhcp ESSID="mynet" ... eth0 接続(Connection) 適用 デバイス (Device)
  • 6. 6 RHEL7/CentOS7 NetworkManager徹底入門 NICのネーミングルールについて  RHEL7では、NICのネーミングルールに「Predictable Network Interface Names」が採用されています。 – 典型的には、「ens6」「enp0s25」「wlp2s0」などのデバイス名になります(*) 。  デバイスの物理ロケーションに応じて、固定的なデバイス名を割り当てます。 – 後半の「s6」の部分は、BIOSから取得した論理番号で、PCIスロット番号などに基いて、 BIOSが独自に提供します。BIOSが論理番号を提供しない場合は、カーネルが認識したPCI バス番号とスロット番号に基いて、「p<Bus>s<Slot>」のルールになります。 – ロケーション情報を取得できないデバイスは、古典的な「ethX」になります。Linux KVMのvirtio NICなどが該当します。 ens6 en:イーサネット wl:ワイヤレス o:オンボード s:PCI Express デバイス番号(PCIスロット番号などに対応) (*) DELL製のサーバーでは、また異なるネーミングルール(biosdevname)になります。  (参考)「RHEL7のNICのネーミングルール」http://d.hatena.ne.jp/enakai00/20140728/1406504163
  • 7. 7 RHEL7/CentOS7 NetworkManager徹底入門 net-toolsとiproute2について  RHEL7を最小構成でインストールした環境では、「ifconfig, route, netstat, arp」などのネットワーク関連コマンドが入っていません。 – これらのコマンドは、「net-tools」パッケージを追加することで利用可能になります。  「net-tools」パッケージを導入しない環境では、「iproute2」パッケージに含ま れる「ip, ss」などのコマンドを使用してください。 – 今後は、iproute2パッケージの方が標準になる予定です。 # yum -y install net-tools net-tools iproute2 ifconfig ip addr, ip link route ip route netstat ss netstat -i ip -s link arp ip neighbor 主なコマンドの対応表 (参考)「RHEL7/CentOS7でipコマンドをマスター」http://d.hatena.ne.jp/enakai00/20140712/1405139841
  • 8. 8 RHEL7/CentOS7 NetworkManager徹底入門 デフォルトでの環境構成例  RHEL7インストーラーのGUIでネットワークを設定すると次のような構成になり ます。 – デバイスと同じ名前の「接続」が定義されて、該当デバイスに紐付けられます。「接 続」の名前は、一般には、デバイス名と無関係なので注意してください。 # nmcli d デバイス タイプ 状態 接続 eth2 ethernet 接続済み eth2 ens6 ethernet 切断済み -- ens7 ethernet 切断済み -- lo loopback 管理無し -- # nmcli c 名前 UUID タイプ デバイス eth2 bc302e8f-f5f3-478d-bf87-e77d3288dac7 802-3-ethernet eth2 「デバイス」の確認(「d」は「device」の略) 「接続」の確認(「c」は「connection」の略) 「デバイス」が紐付けられた「接続」 eth2 ens6 ens7 virtio NIC rtl8139 Linux KVMの仮想マシンに 「Realtek」と「virtio」の 仮想NICをアサインした場合の例
  • 9. 9 RHEL7/CentOS7 NetworkManager徹底入門 設定内容の確認方法 (1)  NetworkManagerで定義した「接続」の設定内容は、下記の設定ファイルに保存 されます。 – /etc/sysconfig/network-scripts/ifcfg-<接続名> • インストーラーが作成する設定ファイルでは「” ”」でクォートされていますが、これは必須では ありません。 – 設定ファイルを編集した場合は、次のコマンドで変更を反映します。 # nmcli c reload <接続名> # nmcli c down <接続名>; nmcli c up <接続名> # cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE="Ethernet" BOOTPROTO="none" ...(中略)... NAME="eth2" UUID="bc302e8f-f5f3-478d-bf87-e77d3288dac7" ONBOOT="yes" HWADDR="52:54:00:84:56:D9" IPADDR0="192.168.122.102" PREFIX0="24" GATEWAY0="192.168.122.1" DNS1="192.168.122.1" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes"
  • 10. 10 RHEL7/CentOS7 NetworkManager徹底入門 設定内容の確認方法 (2)  特定デバイスの設定内容は、次のコマンドで確認します。 – これは、該当デバイスに紐付けられた「接続」を通して設定された内容になります。  「接続」の設定内容を直接に確認する際は、次のコマンドを使用します。 # nmcli c show eth2 connection.id: eth2 connection.uuid: bc302e8f-f5f3-478d-bf87-e77d3288dac7 ...(中略)... ipv4.method: manual ipv4.dns: 192.168.122.1 ipv4.dns-search: ipv4.addresses: { ip = 192.168.122.102/24, gw = 192.168.122.1 } ...(以下省略)... # nmcli d show eth2 GENERAL.デバイス: eth2 GENERAL.タイプ: ethernet GENERAL.HWADDR: 52:54:00:84:56:D9 GENERAL.MTU: 1500 GENERAL.状態: 100 (接続済み) GENERAL.接続: eth0 GENERAL.CON パス: /org/freedesktop/NetworkManager/ActiveConnection/1 WIRED-PROPERTIES.キャリア: オン IP4.アドレス[1]: ip = 192.168.122.102/24, gw = 192.168.122.1 IP4.DNS[1]: 192.168.122.1 IP6.アドレス[1]: ip = fe80::5054:ff:fe84:56d9/64, gw = :: 「デバイス名」 「接続名」
  • 11. 11 RHEL7/CentOS7 NetworkManager徹底入門 (参考)nmtuiコマンド  nmtuiコマンドを使用すると、テキストベースのUIで対話的に設定変更が可能で す。 – テスト環境などで、簡易的に設定変更を行う際は便利ですが、設定手順をコマンドとし て記録/再現することができませんので、本番環境では使用しない方がよいでしょう。
  • 12. nmcliによる設定
  • 13. 13 RHEL7/CentOS7 NetworkManager徹底入門 新規接続の追加  次は、デバイス「ens6」に紐付けられた接続「ens6-con」を作成して、IPアドレ スの設定を行う例です。 – デバイス名と接続名が独立していることに注意してください。 – 「nmcli c mod」では、次のように複数の項目をまとめて設定可能です。 • nmcli c mod <接続名> <設定項目> <設定内容> <設定項目> <設定内容> ... – 設定可能な項目は、現在の設定内容をすべて出力すると分かります。 # nmcli c add type eth ifname ens6 con-name ens6-con # nmcli c mod ens6-con ipv4.method manual ipv4.addresses "192.168.1.11/24 192.168.1.1" # nmcli c down ens6-con; nmcli c up ens6-con 「デバイス名」 「接続名」 「設定変更を反映」 # nmcli c show ens6-con connection.id: ens6-con connection.uuid: d9388c4e-31af-4ba9-bfda-c58e74316b14 connection.interface-name: ens6 ...(中略)... ipv4.method: manual ipv4.dns: ipv4.dns-search: ipv4.addresses: { ip = 192.168.100.11/24, gw = 0.0.0.0 } ipv4.routes: ...(以下省略)... “IP/Mask Gateway”
  • 14. 14 RHEL7/CentOS7 NetworkManager徹底入門 既存接続の変更  既存の接続を設定変更する際は、先に説明した「nmcli c mod」を使用します。 – 次は、IPアドレスの設定をDHCPに変更する例です。 – 「nmcli c edit」は対話的に変更するオプションですが、次の「describe」コマンドで設 定項目の説明が表示できます。 # nmcli c mod ens6-con ipv4.method auto ipv4.addresses "" # nmcli c down ens6-con; nmcli c up ens6-con # nmcli c edit ens6-con ... nmcli> describe ipv4.addresses === [addresses] === [NM プロパティの詳細] Array of IPv4 address structures. Each IPv4 address structure is composed of 3 32-bit values; the first being the IPv4 address (network byte order), the second the prefix (1 - 32), and last the IPv4 gateway (network byte order). The gateway may be left as 0 if no gateway exists for that subnet. For the 'auto' method, given IP addresses are appended to those returned by automatic configuration. Addresses cannot be used with the 'shared', 'link-local', or 'disabled' methods as addressing is either automatic or disabled with these methods. [nmcli 固有の詳細] 次のような形式で IPv4 アドレスの一覧を入力してください。 ip[/prefix] [gateway], ip[/prefix] [gateway],... プレフィックスがないものはプレフィックス 32 とみなします。 例: 192.168.1.5/24 192.168.1.1, 10.0.0.11/24 nmcli> quit
  • 15. 15 RHEL7/CentOS7 NetworkManager徹底入門 接続の削除  既存の接続を削除する際は、「nmcli c delete」を使用します。 – 次は、先に作成した「ens6-con」を削除する例です。  nmcliの使い方は、次のオンラインドキュメントも参考になります。 – # man nmcli • nmcliコマンドの全般的な説明 – # man nmcli-examples • Bonding, Teaming, Bridgeなどの構成例が記載されています # nmcli c 名前 UUID タイプ デバイス eth2 bc302e8f-f5f3-478d-bf87-e77d3288dac7 802-3-ethernet eth2 ens6-con d9388c4e-31af-4ba9-bfda-c58e74316b14 802-3-ethernet ens6 # nmcli c delete ens6-con # nmcli c 名前 UUID タイプ デバイス eth2 bc302e8f-f5f3-478d-bf87-e77d3288dac7 802-3-ethernet eth2
  • 16. 16 RHEL7/CentOS7 NetworkManager徹底入門 ホストネームの設定について  nmcliコマンドでホストネームを設定することもできます。 – 次はホストネームを「rhel7」に変更する例です。  RHEL7では、ホストネームの管理はsystemdが行っており、本来は、hostnamectl コマンドで設定します。 – ncmliは、hostnamectlコマンドに相当するAPIでsystemdを呼び出して、ホストネームを 変更しています。 – 次はhostnamectlコマンドでホストネームを変更する例です。 # hostnamectl set-hostname rhel7 # hostnamectl Static hostname: rhel7 Icon name: computer Chassis: n/a Machine ID: d16c14e0d938a994f66447949c8f070e Boot ID: 84e3caad343e436eb0ad6663e64f92ab Virtualization: kvm Operating System: Employee SKU CPE OS Name: cpe:/o:redhat:enterprise_linux:7.0:GA:server Kernel: Linux 3.10.0-123.13.2.el7.x86_64 Architecture: x86_64 # nmcli g hostname rhel7 # nmcli g hostname rhel7
  • 17. 仮想ブリッジ/VLANデバイスの作成
  • 18. 18 RHEL7/CentOS7 NetworkManager徹底入門 仮想ブリッジの作成手順 (1)  次は、仮想ブリッジ「br0」を作成して、物理NIC「ens6」を接続する手順です。 – 確認用にbrctlコマンドを提供する「bridge-utils」を導入しておきます。 – 仮想ブリッジ「br0」とその接続「bridge-br0」を作成します。 • 「con-name」オプションを省略すると、接続名は「bridge-<デバイス名>」になります。 – 仮想ブリッジにIPアドレスなどの設定を追加します。 – 仮想ブリッジに物理NIC「ens6」を接続するための接続「bridge-slave-ens6」を追加し ます。 • 「con-name」オプションを省略すると、接続名は「bridge-slave-<デバイス名>」になります。 # nmcli c add type bridge ifname br0 con-name bridge-br0 # yum -y install bridge-utils # nmcli c modify bridge-br0 bridge.stp no # nmcli c modify bridge-br0 ipv4.method manual ipv4.addresses "192.168.1.11/24 192.168.1.1" # nmcli c modify bridge-br0 ipv4.dns 8.8.8.8 ipv4.dns-search redhat.com # nmcli c add type bridge-slave ifname ens6 con-name bridge-slave-ens6 master bridge-br0
  • 19. 19 RHEL7/CentOS7 NetworkManager徹底入門 仮想ブリッジの作成手順 (2) – それぞれの「接続」をdown/upして、設定変更を反映します。 – 設定結果を確認します。 # brctl show bridge name bridge id STP enabled interfaces br0 8000.525400eb919c no ens6 # ip addr show br0 6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 52:54:00:eb:91:9c brd ff:ff:ff:ff:ff:ff inet 192.168.1.11/24 brd 192.168.1.255 scope global br0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:feeb:919c/64 scope link valid_lft forever preferred_lft forever # nmcli c down bridge-slave-ens6 # nmcli c down bridge-br0 # nmcli c up bridge-br0 # nmcli c up bridge-slave-ens6 eth2 ens6 ens7 br0 192.168.1.11
  • 20. 20 RHEL7/CentOS7 NetworkManager徹底入門 VLANデバイスの作成手順 (1)  次は、物理NIC「ens7」にVLAN IDが10と11のVLANデバイスを接続する例です。 – VLANデバイス「vlan10」と、それを物理デバイス「ens7」にVLAN ID「10」で接続す るための接続「vlan-vlan10」を作成します。 • 「con-name」オプションを省略すると、接続名は「bridge-<デバイス名>」になります。 – VLANデバイス「vlan10」にIPアドレスの設定を追加します。 – 同様にVLANデバイス「vlan11」を作成して、IPアドレスを設定します。 – それぞれの「接続」をdown/upして、設定変更を反映します。 # nmcli c add type vlan ifname vlan10 con-name vlan-vlan10 dev ens7 id 10 # nmcli c mod vlan-vlan10 ipv4.method manual ipv4.addresses "192.168.10.101/24" eth2 ens6 vlan10 192.168.10.101 192.168.11.101 # nmcli c add type vlan ifname vlan11 con-name vlan-vlan11 dev ens7 id 11 # nmcli c mod vlan-vlan11 ipv4.method manual ipv4.addresses "192.168.11.101/24" vlan11 ens7 # nmcli c down vlan-vlan10; nmcli c up vlan-vlan10 # nmcli c down vlan-vlan11; nmcli c up vlan-vlan11
  • 21. 21 RHEL7/CentOS7 NetworkManager徹底入門 VLANデバイスの作成手順 (2) – 設定結果を確認します。 # cat /proc/net/vlan/config VLAN Dev name | VLAN ID Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD vlan10 | 10 | ens7 vlan11 | 11 | ens7 # ip addr show vlan10 17: vlan10@ens7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 52:54:00:aa:a4:66 brd ff:ff:ff:ff:ff:ff inet 192.168.10.101/24 brd 192.168.10.255 scope global vlan10 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:feaa:a466/64 scope link valid_lft forever preferred_lft forever # ip addr show vlan11 18: vlan11@ens7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 52:54:00:aa:a4:66 brd ff:ff:ff:ff:ff:ff inet 192.168.11.101/24 brd 192.168.11.255 scope global vlan11 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:feaa:a466/64 scope link valid_lft forever preferred_lft forever
  • 22. Teamデバイスの作成
  • 23. 23 RHEL7/CentOS7 NetworkManager徹底入門 Teamデバイスとは?  RHEL7では、物理NICの冗長化について、Bondingドライバーに加えて、Teamド ライバーが使用できます。 – BondingドライバーとTeamドライバーの比較は次の資料が参考になります。 • If You Like Bonding, You Will Love Teaming http://rhelblog.redhat.com/2014/06/23/team-driver/  Teamドライバーの機能は、基本的にはBondingドライバーと同じですが、実装上 で次のような違いがあります。 – Bondingドライバーはすべての機能がカーネルモジュールとして実装されており、機能拡 張が困難。また、設定変更にはモジュールの再読み込みが必要。 – Teamドライバーは、カーネルモジュールとユーザーランドで機能を分離したデザインに なっており、機能拡張や管理ツールの実装が容易。  ここでは、nmcliコマンドを用いて、TeamドライバーによるNIC冗長化を設定する 手順を紹介します。
  • 24. 24 RHEL7/CentOS7 NetworkManager徹底入門 Teamデバイスの作成 (1)  次は、仮想ブリッジ「br0」を作成して、物理NIC「ens6」を接続する手順です。 – Teamデバイス「team01」とその接続「team-team10」を作成した上で、IPアドレスを 設定しておきます。 • 「con-name」オプションを省略すると、接続名は「team-<デバイス名>」になります。 – 物理NIC「ens6」と「ens7」をTeamデバイスのスレーブとして追加する接続「team- slave-ens6」と「team-slave-ens7」を作成します。 • 「con-name」オプションを省略すると、接続名は「team-slave-<デバイス名>」になります。 – Teamingの構成は、デフォルトではラウンドロビン方式になります。デフォルトの構成で かまわない場合は、それぞれの接続をdown/upしてTeamデバイスを有効化します。 # nmcli c add type team-slave ifname ens6 con-name team-slave-ens6 master team-team0 # nmcli c add type team-slave ifname ens7 con-name team-slave-ens7 master team-team0 # nmcli c add type team ifname team0 con-name team-team0 # nmcli c mod team-team0 ipv4.method manual ipv4.addresses "192.168.1.101/24" # nmcli c down team-team0 # nmcli c down team-slave-ens6 # nmcli c down team-slave-ens7 # nmcli c up team-slave-ens6 # nmcli c up team-slave-ens7 # nmcli c up team-team0
  • 25. 25 RHEL7/CentOS7 NetworkManager徹底入門 Teamデバイスの作成 (2)  Teamデバイスの稼動状態を確認します。 – 接続の状態は次のようになります。 – Teamデバイスの稼動状態は、「teamdctl」コマンドで確認します。 # teamdctl team0 statesetup: runner: roundrobin ports: ens7 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up ens6 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up # nmcli c 名前 UUID タイプ デバイス team-slave-ens7 0114a0a7-e3f0-43aa-9ba8-b716ca9d55f9 802-3-ethernet ens7 eth2 bc302e8f-f5f3-478d-bf87-e77d3288dac7 802-3-ethernet eth2 team-slave-ens6 00d62380-6f5a-4d53-887d-3509d65ec400 802-3-ethernet ens6 Team-team0 869751cf-d123-4fa1-88a6-ce7d86474e5a team team0
  • 26. 26 RHEL7/CentOS7 NetworkManager徹底入門 Teamデバイスの構成変更 (1)  Teamデバイスの構成は、JSONファイルに記載して、それを読み込みます。 – 下記のディレクトリーにサンプルの設定ファイルが用意されています。 – ロードバランス方式の他に、NICの死活監視方法(ethtoolによるリンク監視、ARPリク エストの応答確認など)が設定可能です。 # ls /usr/share/doc/teamd-1.9/example_configs/ activebackup_arp_ping_1.conf activebackup_multi_lw_1.conf loadbalance_2.conf activebackup_arp_ping_2.conf activebackup_nsna_ping_1.conf loadbalance_3.conf activebackup_ethtool_1.conf broadcast.conf random.conf activebackup_ethtool_2.conf lacp_1.conf roundrobin.conf activebackup_ethtool_3.conf loadbalance_1.conf roundrobin_2.conf
  • 27. 27 RHEL7/CentOS7 NetworkManager徹底入門 Teamデバイスの構成変更 (2)  次は、TeamデバイスをActive-Bakcup(自動切り戻し無し)に設定する例です。 # cat myconfig.conf { "device": "team0", "runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}, "ports": { "ens6": { "prio": -10, "sticky": true }, "ens7": { "prio": 100 } } } # nmcli c mod team-team0 team.config myconfig.conf # nmcli c down team-team0 # nmcli c down team-slave-ens6 # nmcli c down team-slave-ens7 # nmcli c up team-slave-ens6 # nmcli c up team-slave-ens7 # nmcli c up team-team0 # teamdctl team01 state setup: runner: activebackup ports: ens6 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up ens7 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up runner: active port: ens7 自動切り戻し無し
  • 28. 参考資料
  • 29. 29 RHEL7/CentOS7 NetworkManager徹底入門 参考資料  RHEL7/CentOS7の新規コマンド総まとめ! – http://www.school.ctc-g.co.jp/columns/nakai/nakai47.html   RHEL7/CentOS7を満喫するための情報まとめ – http://d.hatena.ne.jp/enakai00/20141202/1417492840
  • 30. 中井悦司 Twitter @enakai00 オープンクラウド・キャンパス RHEL7/CentOS7でLinux最新技術を 学びましょう!