ネットワーク デバイスと構成

はじめに

第35章はじめに

同じ種類のデバイスが複数ある場合は、イーサネットやワイヤレス接続などのネットワーク デバイスを慎重に構成する必要があります。このような状況では、一貫性のある恒久的なデバイス名が複雑になる場合があります。最近、新しい命名スキームが採用され、名付けられる名前が予測しやすくなりました。新しいスキームは、いくつかの重要なユーティリティを使用して、デバイスの起動、停止、プロパティの設定、ルートの確立などを行います。システム管理者は、これらの使用に精通する必要があります。


学習目標
この章の終わりまでに、次のことができるようになります。

ネットワーク デバイスを識別し、オペレーティング システムがデバイスに名前を付け、特定の処理に結び付ける方法を理解できます。
ipユーティリティを使用して、デバイス、ルーティング、ポリシーベースのルーティング、トンネリングの表示と制御ができます。
昔からあるifconfigを使用して、コマンド ラインまたはシステム構成スクリプトを使って、ネットワーク インターフェイス パラメータの設定、制御、照会ができます。
予測可能なネットワーク インターフェイス デバイスの命名スキームを理解できます。
/etcのメインのネットワーク構成ファイルを確認できます。
Network Manager （nmtuiとnmcli）を使用して、ディストリビューションに依存しない方法でネットワーク インターフェイスを設定できます。
デフォルト ルートと静的ルートの設定方法を理解できます。
名前解決を行い、診断ユーティリティを実行できます。


ネットワーク デバイスと構成

ネットワーク デバイス
ブロック デバイスやキャラクタ デバイスとは異なり、ネットワーク デバイスは、デバイス ノードとも呼ばれる特別なデバイス ファイルとは関連付けられていません。/devディレクトリのエントリを関連付けるのではなく、名前で認識されています。

これらの名前は、デバイスの種類の識別子とそれに続く番号で構成されます。

イーサネット デバイスの場合、eth0、eth1、eno1、eno2などがあります。
ワイヤレス デバイスの場合、wlan0、wlan1、wlan2、wlp3s0、wlp3s2などがあります。
ブリッジ インターフェイスの場合、br0、br1、br2などがあります。
仮想クライアントと通信するための仮想デバイスの場合、vmnet0、vmnet1、vmnet2などがあります。

従来、複数の仮想デバイスを単一の物理デバイスに関連付けることができました。これらはコロンと数字で命名されました。つまり、eth0:0はeth0デバイスの最初の別名になります。これは、1つのネットワーク カードで複数のIPアドレスをサポートするために行われました。ただし、ifconfigの代わりにipを使用する場合にはこのメソッドは推奨できませんので、これ以上は説明しません。さらに、これはIPv6と互換性がありません。

特に、同じ種類の複数のインターフェイスが存在する場合では、デバイスの命名は古典的な方法で行うのは難しくなりました。たとえば、2枚のネットワーク カードがあるとします。古典的な方法では、1つはeth0、もう1つはeth1という名前になります。でも、それぞれの名前に、どの物理デバイスを関連付ければ良いでしょうか？

最も簡単な方法は、最初のデバイスをeth0に、2番目をeth1にすることです。残念ながら、最新のシステムではデバイスの検出は確定的ではなく、デバイスは予測できない順序で配置されたり接続されたりする場合があります。したがって、ローカル インターフェイスとインターネット インターフェイスの順序が、入れ替わってしまう可能性があります。ハードウェアが変更されない場合でも、インターフェイスが配置される順序は、カーネルのバージョンと構成によって異なることがわかっています。

多くのシステム管理者は、システム構成ファイルと起動スクリプトの中で、ハードウェア（MAC）アドレスとデバイス名との関連付けをハード コーディングするという簡単な方法で、この問題を解決しています。この方法は長年にわたって使われてきましたが、手動調整が必要で、MACアドレスが固定されていない場合など、他にも問題がありました。これは組み込みシステムと仮想化システムの両方で発生する可能性があります。


ip
ipは、インターフェイス パラメータの構成、制御、クエリ、そしてデバイスの制御、ルーティングなどに使用される、コマンド ライン ユーティリティです。ioctlシステムコールではなくnetlinkソケットを使用するため、より汎用性が高く効率的であり、次に説明する昔からあるifconfigよりも使われています。

ipは、さまざまなタスクに使用できます。制御とインターフェイス パラメータとクエリ デバイスの設定だけでなく、ルーティング、ポリシーベースのルーティング、トンネリングの操作にも使用できます。

基本的な構文は次のとおりです。

ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename

2番目の構文は、指定されたファイルからコマンドを読み取ることができます。

ipは複合型ユーティリティです。OBJECT引数は、実行されるアクションの種類を指定します。サブコマンドであるCOMMANDは、選択されているOBJECTによって異なります。

OBJECTの主な値の一部を以下に見ることができます。

表：ipの主なOBJECT

OBJECT		意味
address　IPv4またはIPv6のプロトコル デバイス アドレス
link	ネットワーク デバイス
maddress　　マルチキャスト アドレス
monitor	　netlinkメッセージの監視
route	ルーティング テーブルのエントリ
rule	ルーティング ポリシー データベースに登録されているルール
tunnel	IPトンネル


ipの使用の例
ipユーティリティはさまざまな使い方ができます。いくつかの例を以下に示します。

すべてのネットワーク インターフェイスの情報を表示する場合：

$ ip link show

統計情報など、eth0ネットワーク インターフェイスの情報を表示する場合：

$ ip -s link show eth0

eth0のIPアドレスを設定する場合：

$ sudo ip addr add 192.168.1.7 dev eth0

eth0を停止する場合：

$ sudo ip link set eth0 down

eth0のMTUを1480バイトに設定する場合：

$ sudo ip link set eth0 mtu 1480

ネットワーク ルートを設定する場合：

$ sudo ip route add 172.16.1.0/24 via 192.168.1.5

ipの使用例


ifconfig
ifconfigは、UNIXライクなオペレーティング システムで長い間使用されてきたシステム管理ユーティリティです。コマンド ラインまたはシステム構成スクリプトで、ネットワーク インターフェイス パラメータの構成、制御、照会を行うために使用されています。ipconfigはipに置き換わって行き、一部のLinuxディストリビューションではデフォルトではインストールされなくなりました。

すべてのインターフェイスに関する情報を表示する場合：

$ ifconfig

eth0のみに関する情報を表示する場合：

$ ifconfig eth0

インターフェイスeth0のIPアドレスを192.168.1.50に設定する場合：

$ sudo ifconfig eth0 192.168.1.50

ネット マスクを24ビットに設定する場合：

$ sudo ifconfig eth0 netmask 255.255.255.0

インターフェイスeth0を起動する場合：

$ sudo ifconfig eth0 up

インターフェイスeth0を停止する場合：

$ sudo ifconfig eth0 down

インターフェイスeth0のMTU（最大転送単位）を1480バイトに設定する場合：

$ sudo ifconfig eth0 mtu 1480

ifconfigの出力例


予測可能なネットワーク インターフェイス デバイス名
予測可能なネットワーク インターフェイス デバイス名（Predictable Network Interface Device Names：PNIDN）は、udevの使用とsystemdとの統合に、強く関係しています。現在、デバイスに指定できる名前は5種類あります。

ファームウェアやBIOSがオンボード デバイスに対して提供する、索引番号を組み入れた名前
例：eno1
ファームウェアや BIOS が提供している、PCI Expressホットプラグ スロットの索引番号を組み込んだ名前
例：ens1
ハードウェア接続の物理的か地理的、もしくはその両方の場所を組み込んだ名前
例：enp2s0
MACアドレスを組み込んだ名前
例：enx7837d1ea46da
従来型のメソッドを使用した名前
例：eth0

たとえば、2つのオンボードPCIネットワーク インターフェイスがeth0とeth1であるマシンを調べてみましょう。

q7:/home/coop>ip link show | grep enp
2: enp4s2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000

q7:/home/coop>ifconfig | grep enp
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
enp4s2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500

これらの名前は、PCIシステム上のハードウェアの物理的な位置と関係しています。

q7:/home/coop>lscpi | grep Ethernet
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 12)
04:02.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 14)

lspci出力の各行の先頭にある3組の数字は、バス番号、デバイス番号（またはスロット番号）、デバイス機能の番号です。したがって、物理的な位置が明らかになります。

同様に、以前は単にwlan0という名前だった無線デバイスを調べます。

l7:/home/coop>ip link show | grep wl
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000
l7:/home/coop>lspci | grep Centrino
03:00.0 Network controller: Intel Corporation Centrino Advanced-N 6205 [Taylor Peak] (rev 34)

同じパターンが見られます。新しい命名スキームをオフにすれば、簡単に古典的な名前に戻すことができます。これは研究プロジェクトとして残す予定です。これ以降では、明確かつ単純に説明するために、古典的な名前を使っていきます。


NIC設定ファイル
ネットワーク インターフェイスは、ipまたはifconfigユーティリティを使用して複数の処理をまとめて設定できますが、これらの設定は恒久的ではありません。Linuxディストリビューションに依存するファイルの多くは、恒久的なネットワーク インターフェイスとデバイス設定情報が保存されています。

各ディストリビューションには、独自のファイルやディレクトリがあります。それらはディストリビューションのバージョンによってわずかに異なる場合があります。

各ボックスをクリックして展開し、各ディストリビューションにあるファイルやディレクトリを確認しましょう。

NIC設定ファイル

Red Hat
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-ethX
/etc/sysconfig/network-scripts/ifcfg-ethX:Y
/etc/sysconfig/network-scripts/route-ethX

Debian
/etc/network/interfaces

SUSE
/etc/sysconfig/network

systemdを使用する場合、これらのテキスト ファイルを設定するよりも、Network Managerを使用することをお勧めします。実際、新しいLinuxディストリビューションでは、これらのファイルの多くは、存在しないか、空であるか、もしくははるかに小さくなっており、後方互換性の理由でのみ存在しています。


NetworkManager
昔は、ネットワーク接続はほぼすべて有線（イーサネット）であり、ハードウェア、ソフトウェア、またはネットワーク構成のいずれかに大幅な変更がない限り変更されませんでした。システムの起動中に/etc内のファイルを調べて、すべてのデバイス構成を決定していました。


システムの起動時に、システムは/etcディレクトリ サブツリーのネットワーク構成ファイルを調べて、静的または動的（DCHP）アドレス構成やデバイスをブート時に開始するかなどの、インターフェイス プロパティを決定しました。

複数のネットワーク デバイスが存在する場合には、どの順序で起動するか、どのネットワークに接続するか、何を呼び出すかなどに関するポリシーを決定する必要がありました。

ワイヤレス接続（およびUSBアダプターなどのホットプラグ ネットワーク デバイス）がより一般的になるにつれ、ハードウェアの一時的な性質と接続されている特定のネットワークの性質の両方が原因で、設定がはるかに複雑になりました。

また一方で、最新のシステムには多くの場合、動的な設定があります。

デバイスがあちこちに移動すると、ネットワークが変化する場合があります。
ワイヤレス デバイスでは、接続するネットワークの選択肢が多い場合があります。
ワイヤレス デバイスなどのハードウェアが接続されたり、電源がオンやオフに変わったりすると、デバイスが変わる可能性があります。

前述の設定ファイルは、より静的な状況に対処するために作成されたものであり、ディストリビューションに大きく依存しています。

NetworkManagerも構成ファイルを使用しますが、管理者はそれらを直接操作することはありません。その使用方法は異なるシステムであってもほぼ同じです。


NetworkManagerインターフェイス
ホテルの部屋やコーヒー ショップでラップトップを使用している場合は、Linuxディストリビューションのデスクトップが提供するグラフィカル インターフェースを使用していると思います。これを使用すれば、異なるネットワークを選択したり、セキュリティとパスワードを構成したり、デバイスのオン／オフを切り替えたりできます。

しばらく使い続ける可能性があるシステムへの構成変更を行う場合には、nmtuiを使うと良いです。これは学習曲線などほとんど関係なく、すぐに基本の設定ファイルの編集ができます。

ネットワーク構成の変更スクリプトを実行する必要がある場合は、nmcliを使用します。または、コマンド ラインが良い場合は、nmtuiの代わりにこのnmcliを使用することもできます。

GUIが適切に設定されていれば、これらの3つの方法のいずれかを使用してタスクを実行できるはずです。ここでは、ディストリビューションへの依存や基本の設定ファイルの違いを意識したくないので、nmtuiとnmcliに焦点を当てて説明します。


nmtui
nmtuiはかなり簡単に使用できます。矢印キーまたはタブ キーを使用して移動できます。 

接続をアクティブにしたり、編集したりすることに加えて、システムのホスト名も設定できます。ただし、このような一部の操作は一般のユーザーでは実行することはできず、行うためにはrootのパスワードの入力を求められます。

nmtuiのメイン画面

nmtuiの編集画面

nmtuiのワイヤレス構成


nmcli
nmcliは、NetworkManagerへのコマンド ライン インターフェイスです。直接コマンドを発行できますが、インタラクティブ モードもあります。

詳細情報や多くの使用例は、Networking/CLI Fedora wikiのウェブ ページにアクセスするか、次のように入力すれば得られます。

$ man nmcli-examples

演習でnmcliを使用する方法を体験しましょう。

Ubuntuでのnmcli 使用例


ルーティング
ルーティングは、ネットワーク トラフィックを送信するネットワーク内のルート（経路）を選択するプロセスです。ルーティング テーブルは、システムが管理する他のネットワークへのルートのリストです。すべてのネットワークとホストへのルートを定義し、リモート トラフィックをルーターに送信します。

現在のルーティング テーブルを表示するには、routeまたはipを使用します。 

$ route -n

$ ip route

routeとip routeの使用例


デフォルト ルート
デフォルト ルートは、指定されたネットワークに到達するためのルーティング テーブルに、一致するものがない場合のパケットの送信方法です。

デフォルト ルートは、DHCPを使用して動的に取得できます。一方で、手動で設定することもできます（静的）。nmcliを使って次の方法で設定できます。

$ sudo nmcli con mod virbr0 ipv4.routes 192.168.10.0/24 +ipv4.gateway 192.168.122.0
$ sudo nmcli con up virbr0

または、設定ファイルを直接変更できます。Red Hatベースのシステムでは、/etc/sysconfig/networkを編集して、次の行を入力します。

GATEWAY=x.x.x.x

または、個々のNICのデバイス固有の設定ファイルである、/etc/sysconfig/network-scripts/ifcfg-ethXに設定します。Debianベースのシステムでは、/etc/network/interfacesに次を入力します。

gateway=x.x.x.x

　

いずれのシステムでも、実行時にデフォルト ゲートウェイを設定できます。

$ sudo route add default gw 192.168.1.10 enp2s0
$ route
Kernel IP routing table
Destination    Gateway       Genmask        Flags  Metric  Ref  Use  Iface
default        192.168.1.10  0.0.0.0        UG     0       0    0    enp2s0
default        192.168.1.1   0.0.0.0        UG     1024    0    0    enp2s0
172.16.132.0   0.0.0.0       255.255.255.0  U      0       0    0    vmnet1
192.168.1.0    0.0.0.0       255.255.255.0  U      0       0    0    enp2s0
192.168.113.0  0.0.0.0       255.255.255.0  U      0       0    0    vmnet8

これはネットワーク接続を一掃する可能性があるので注意してください！ネットワークをリセットするか、上記の例で次のように変えれば復元できます。

$ sudo route add default gw 192.168.1.1 enp2s0

これらの変更は恒久的ではなく、システムの再起動すると反映はされません。


静的ルート
静的ルートは、複数のルーターやルートがある場合に、パケット フローを制御するために使用されます。これらはインターフェイスごとに定義され、恒久的にも非恒久的にもできます。

システムが複数のルーターにアクセスできる場合、または複数のインターフェイスがある場合は、どのパケットがどのルーターに送信されるかを選択する形で制御することは有用です。

routeまたはipコマンドを使用して、次のように非恒久的なルートを設定できます。

$ sudo ip route add 10.5.0.0/16 via 192.168.1.100

Red Hat ベースのシステムでは、次のように/etc/sysconfig/network-scripts/route-ethXに設定しておくと、恒久的なルートになります。

$ cat /etc/sysconfig/network-scripts/route-eth0
 10.5.0.0/16 via 172.17.9.1

Debianベースのシステムでは、次のような行を/etc/network/interfacesに追加する必要があります。

iface eth1 inet dhcp
  post-up route add -host 10.1.2.51 eth1
  post-up route add -host 10.1.2.52 eth1

SUSEベースのシステムでは、次のような行を含む/etc/sysconfig/network/ifroute-eth0などのファイルを追加または作成する必要があります。

# Destination Gateway Netmask Interface [Type] [Options]
192.168.1.150 192.168.1.1 255.255.255.255 eth0
10.1.1.150 192.168.233.1.1 eth0
10.1.1.0/24 192.168.1.1 - eth0

各フィールドはタブで区切られています。


名前解決
名前解決とは、ホスト名をホストのIPアドレスに変換することです。たとえば、ブラウザまたは電子メール クライアントは、training.linuxfoundation.orgとの間で送受信するために、training.linuxfoundation.orgにサービスを提供しているサーバー（もしくは複数のサーバー）の名前を解決してIPアドレスに変換します。

この変換を行う2つの機能があります。

静的な名前解決（/etc/hostsを使用）
動的な名前解決（DNSサーバーを使用）

ホスト名のIPアドレスの解決に使用できるコマンド ライン ツールとして、以下があります。

$ [dig | host | nslookup] linuxfoundation.org

dig：最も多くの情報を取得でき、多くのオプションがあります。
host：簡潔な情報を取得できます。
nslookup：昔からあるユーティリティです。

digは最新のユーティリティです。その他は非推奨と見なされる場合がありますが、hostの出力は読みやすく、基本情報が含まれています。

逆引きの解決も必要になる場合があります。IPアドレスをホスト名に変換することです。これら3つのユーティリティに、ホスト名ではなく既知のIPアドレスを入力して、出力を調べてください。


/etc/hosts
/etc/hostsは、ホスト名とIPアドレスのローカル データベースを保持します。これには、IPアドレスを対応するホスト名と別名にマッピングする、レコードのセット（それぞれ1行ずつ）が含まれています。

典型的な/etc/hostsファイルは次のようになります。

$ cat /etc/host
127.0.0.1     localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.100 hans hans7 hans64
192.168.1.150 bethe bethe7 bethe64
192.168.1.2   hp-printer
192.168.1.10  test32 test64 oldpc

このような静的な名前解決は、主にローカルの小規模な分離されたネットワークに使用されます。通常、これはDNSがアドレスを解決しようとする前にチェックされます。ただし、この優先順位は /etc/nsswitch.confで制御できます。

/etc内の他のホスト関連ファイルには、/etc/hosts.denyと/etc/hosts.allowがあります。これらは自己文書化されており、その目的は名前を見れば明らかです。allowファイルが最初に検索され、クエリがそこに見つからない場合にのみdenyファイルが検索されます。

/etc/host.confには一般的な構成情報が含まれています。めったに使用されません。


DNS
/etc/hostsを使用した名前解決をローカルで実行できない場合、システムはDNS（Domain Name system）サーバーに照会します。

DNSは動的に名前解決を行い、クライアントが名前を検索するために使用するサーバーのネットワークを構成します。サービスは分配されます。各々のDNSサーバーには、その権限ゾーンに関する情報のみを持ちます。ただし、それらがお互いに協力して、任意の名前を解決します。

 DNSの使用方法に関する情報は/etc/resolv.confで設定されます。これは、次のように設定されています。

search example.com aps.org
nameserver 192.168.1.1
nameserver 8.8.8.8

この/etc/resolv.confについては、以下のとおりです。

検索する特定のドメインを指定できます。
照会するネームサーバーの厳密な順序を定義します。
DHCP（Dynamic Host Configuration Protocol）などのサービスから、手動で設定または更新できます。

最近のほとんどのシステムでは、次のような/etc/hosts.resolvファイルが自動的に生成されます。

# Generated by NetworkManager
192.168.1.1

これは、プライマリ ネットワーク インターフェイスでDHCPを呼び出している、NetworkManagerが生成しています。

DNSゾーン


ネットワーク診断
多くの基本的なネットワーク ユーティリティが、全てのシステム管理者のツールボックスにあります。

 

クリックして各ボックスを展開し、利用可能な基本的なネットワーク ユーティリティについて学習します。

ネットワーク ユーティリティ

ping
64バイトのテスト パケットを指定されたネットワーク ホストに送信し、（見つかった場合）到達に必要な時間（ミリ秒単位）、失われたパケット、およびその他のパラメーターについての情報を報告します。正確な出力は対象となるホストによって異なりますが、少なくともネットワークが機能しており、ホストに到達できていることがわかります。

traceroute
このユーティリティは、宛先へのネットワーク経路を調べるために使用されます。ホストに到達するために通過するルーター パケットと、到達にかかる各時間を示します。

mtr
pingとtracerouteの機能を組み合わせて、topのように継続的に更新する表示を作成します。

dig
DNS機能のテストに役立ちます。hostまたはnslookupを使用することもできます。これは、ホストに関するDNS情報を返す、昔からあるプログラムです。

🚩
一部のディストリビューション（RHEL 7など）では、最初の3つの診断ユーティリティを実行するためにroot権限（sudoと同様）が必要です。

例えば以下のように使います。

$ ping -c 10 linuxfoundation.org
$ traceroute linuxfoundation.org
$ mtr linuxfoundation.org

pingの使用例

tracerouteの使用例

mtrの使用例


演習

課題 25.1: ネットワーク インターフェイスを静的に構成する

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

【【これ以降は橋本さんの訳を参照】】

Please Note

You may have to use a different network interface name than eth0. You can most easily do this exercise with nmtui or your system’s graphical interface. We will present a command line solution, but beware details may not exactly fit your distribution flavor or fashion.

1.  Show your current IP address, default route and DNS settings for eth0. Keep a copy of them for resetting later.

2.  Bring down eth0 and reconfigure to use a static address instead of DCHP, using the information you just recorded.

3.  Bring the interface back up, and configure the nameserver resolver with the information that you noted before.
Verify your hostname and thenpingit.

4.  Make sure your configuration works after a reboot.

You will probably want to restore your configuration when you are done.

Solution 35.1

1.$ ip addr show eth0
$ ip route
$ cp /etc/resolv.conf resolv.conf.keep

または

$ ifconfig eth0
$ route -n
$ cp /etc/resolv.conf resolv.conf.keep

2.$ sudo ip link set eth0 down

または

$ sudo ifconfig eth0 down

On RedHat  / CentOS

Make sure the following is in /etc/sysconfig/network-scripts/ifcfg-eth0 on Red Hat-based systems:

in /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=noted from step1
NETMASK=noted from step1
GATEWAY=noted from step1

On openSUSE , SLES, OpenSUSE, and Debian-based systems

On SUSE-based systems edit the file in /etc/sysconfig/network in the same way,  and on Debian-based systems edit /etc/networking/interfaces to include:

in /etc/sysconfig/networkor/etc/networking/interfaces

iface eth0 inet static
address noted from step1
netmask noted from step1
gateway noted from step1

3.$ sudo ip link set eth0 up

または

$ sudo ifconfig eth0 up

$ sudo cp resolv.conf.keep /etc/resolv.conf
$ cat /etc/sysconfig/network
$ cat /etc/hosts
$ ping yourhostname

4.$ sudo reboot
$ ping hostname


課題 35.2: 静的にホスト名を追加する

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 35.2: Adding a Static Hostname

In this exercise we will add entries to the local host database.

1.  Open /etc/hosts and add an entry for mysystem.mydomain that will point to the IP address associated with your network card.

2.  Add a second entry that will make all references to ad.doubleclick.net point to 127.0.0.1.

3.  As an optional exercise, download the host file from: http://winhelp2002.mvps.org/hosts2.htm or more directly from http://winhelp2002.mvps.org/hosts.txt, and install it on your system.  Do you notice any difference using your browser with and without the new host file in place?

Solution 35.2

1.$ sudo sh -c "echo 192.168.1.180    mysystem.mydomain >> /etc/hosts"
$ ping mysystem.mydomain

2.$ sudo sh -c "echo 127.0.0.1       ad.doubleclick.net >> /etc/hosts"
$ ping ad.doubleclick.net

3.$ wget http://winhelp2002.mvps.org/hosts.txt
--2014-11-01 08:57:12--  http://winhelp2002.mvps.org/hosts.txt
Resolving winhelp2002.mvps.org (winhelp2002.mvps.org)... 216.155.126.40
Connecting to winhelp2002.mvps.org (winhelp2002.mvps.org)|216.155.126.40|:80... connected.HTTP request sent, awaiting response... 200 OK
Length: 514744 (503K) [text/plain]
Saving to: hosts.txt
100%[======================================>] 514,744      977KB/s   in 0.5s
2014-11-01 08:57:13 (977 KB/s) - hosts.txt saved [514744/514744]
$ sudo sh -c "cat hosts.txt >> /etc/hosts"


課題 35.3: : nmcli を使い、ネットワーク インタフェースに別名／アドレスをつける

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 35.3: Adding a Network Interface Alias/Address using nmcli

We are going to add an additional IPv4 address to your system and make it persistent.  We will do this without editing files under /dev directly, using nmcli.

1.  First obtain your current internet address and interface name:

$ sudo nmcli con
NAME           UUID                                  TYPE            DEVICE
Auto Ethernet  1c46bf37-2e4c-460d-8b20-421540f7d0e2  802-3-ethernet  ens33
virbr0         a84a332f-38e3-445a-a377-4363a8eb963f  bridge          virbr0

shows the name of the connection is Auto Ethernet.

$ sudo nmcli con show "Auto Ethernet" | grep 
IP4.ADDRESSIP4.ADDRESS[1]:                         172.16.2.135/24

shows the address as 172.16.2.135 Note that this command shows all information about the connection and you couldhave specified the UUID instead of the NAME as in:

$ nmcli con show 1c46bf37-2e4c-460d-8b20-421540f7d0e2

2.  Add a new address that your machine can be seen by:

$ sudo nmcli con modify "Auto Ethernet" +ipv4.addresses 172.16.2.140/24

3.  Activate it and test to see if it is there:

$ sudo nmcli con up "Auto Ethernet"
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

$ ping -c 3 172.16.2.140
PING 172.16.2.140 (172.16.2.140) 56(84) bytes of data.
64 bytes from 172.16.2.140: icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from 172.16.2.140: icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from 172.16.2.140: icmp_seq=3 ttl=64 time=0.032 ms
--- 172.16.2.140 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.032/0.034/0.038/0.007 ms

4.  Clean up by removing the alias:
$ sudo nmcli con modify  "Auto Ethernet" -ipv4.addresses 172.16.2.140/24
...
$ sudo nmcli con up "Auto Ethernet"
...


課題 35.4: nmcli を使い、静的ルートを追加する

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

Exercise 35.4: Adding a Static Route using nmcli

We are going to add a static IPv4 route address to your system and make it persistent.  We will do this without editing filesunder /dev directly, using nmcli.

1.  Begin by examining your current routing tables, using both route and ip:

$ route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.2.2      0.0.0.0         UG    100    0        0 ens33
link-local      *               255.255.0.0     U     1000   0        0 ens33
172.16.2.0      *               255.255.255.0   U     100    0        0 ens33
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0

$ ip route

default via 172.16.2.2 dev ens33  proto static  metric 100
169.254.0.0/16 dev ens33  scope link  metric 1000
172.16.2.0/24 dev ens33  proto kernel  scope link  src 172.16.2.135  metric 100
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1 linkdown

2.  Add a new route using nmcli:

$ sudo nmcli conn mod "Auto Ethernet" +ipv4.routes "192.168.100.0/24 172.16.2.1"

3.  Note it has not yet taken effect:

$ route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.2.2      0.0.0.0         UG    100    0        0 ens33
link-local      *               255.255.0.0     U     1000   0        0 ens33
172.16.2.0      *               255.255.255.0   U     100    0        0 ens33
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0

4.  Reload the interface to have it take effect and show it has:

$ sudo nmcli conn up "Auto Ethernet"

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/25)

$ route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.2.2      0.0.0.0         UG    100    0        0 ens33
link-local      *               255.255.0.0     U     1000   0        0 ens33
172.16.2.0      *               255.255.255.0   U     100    0        0 ens33
192.168.100.0   172.16.2.1      255.255.255.0   UG    100    0        0 ens33
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0

5.  Reboot and verify the route has taken effect (i.e., it is persistent: If so remove it:

$ route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.2.2      0.0.0.0         UG    100    0        0 ens33
link-local      *               255.255.0.0     U     1000   0        0 ens33
172.16.2.0      *               255.255.255.0   U     100    0        0 ens33
192.168.100.0   172.16.2.1      255.255.255.0   UG    100    0        0 ens33
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0

$ sudo nmcli conn mod "Auto Ethernet" -ipv4.routes "192.168.100.0/24 172.16.2.1"
$ sudo nmcli conn up "Auto Ethernet"

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

$ route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.2.2      0.0.0.0         UG    100    0        0 ens33
link-local      *               255.255.0.0     U     1000   0        0 ens33
172.16.2.0      *               255.255.255.0   U     100    0        0 ens33
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0

6.  Note you can set a route with eitherrouteoripfrom the command line but it won’t survive a reboot as in:

$ sudo ip route add 192.168.100.0/24 via 172.16.2.1
$ sudo route
....

You can verify that a route established this way is not persistent.


知識チェック

「第35章 - ネットワーク デバイスと構成」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。

クイズ開始

問題 35.1
最近のシステムで使用できる、より新しいネットワーク インターフェイスのコマンド ライン ユーティリティはどれですか？

A. ip
B. ifconfig

問題 35.2
/etc内のファイルを直接変更する場合は、NetworkManagerを使用することをお勧めします。その理由を以下から選んでください。

A. 変更は恒久的で、再起動後も継続されます
B. 提供されるグラフィカル インターフェイスは、すべてのディストリビューションで同じです
C. /etcのディストリビューションに依存するファイルは変更しません
D. nmtuiとnmcliの用途は、すべてのLinuxディストリビューションで同じでなければなりません

問題 35.3
ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。ワークステーションからゲートウェイ構成を削除しても、ローカル ネットワーク上のリソースへのアクセスには影響しません。True or False?

A. True
B. False

問題 35.4
ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。ワークステーションからゲートウェイ構成を削除しても、インターネット上のリソースへのアクセスには影響しません。True or False?

A. True
B. False

問題 35.5
ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。ワークステーションから DNS構成を削除しても、ローカル ネットワーク上のリソースへのアクセスには影響しません。True or False?

A. True
B. False

問題 35.6
ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。ワークステーションから DNS構成を削除しても、インターネット上のリソースへのアクセスには影響しません。True or False?

A. True
B. False

問題 35.7
ワークステーションは、Acme Companyのローカル ネットワークに接続されています。ローカル ネットワークには、他のワークステーション、DNSサーバー、およびドメインがhttp://intranet.acme.comのウェブ サーバーがあります。インターネット接続は、ローカル ネットワークにも提供されています。/etc/hostsにエントリを追加すると、DNSサーバーが機能していないときに、ワークステーションがhttp://intranet.acme.comにアクセスできるようになります。True or False?

A. True
B. False

