「ネットワーク設定」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(同期)
1行目: 1行目:
 
[[Category:ネットワーク]]
 
[[Category:ネットワーク]]
[[Category:Arch の入手とインストール]]
 
 
[[cs:Network configuration]]
 
[[cs:Network configuration]]
 
[[el:Network configuration]]
 
[[el:Network configuration]]
23行目: 22行目:
 
{{Related articles end}}
 
{{Related articles end}}
   
このページではネットワークの'''有線'''接続を設定する方法を説明しています。'''無線'''ネットワークを設定する必要がある場合は[[ワイヤレス設定]]のページを見てさい。
+
このページではネットワークの'''有線'''接続を設定する方法を説明しています。'''無線'''ネットワークを設定する必要がある場合は[[ワイヤレス設定]]のページを見てください。
   
 
== 接続の確認 ==
 
== 接続の確認 ==
   
多くの場合、インストールするだけで動作するネットワーク設定がすでに作られています。それを確認するには、次のコマンド実行してください:
+
多くの場合、インストールするだけで動作するネットワーク設定がすでに作られています。それを確認するには、{{man|8|ping}} 使ます:
   
 
{{hc|$ ping www.google.com|2=
 
{{hc|$ ping www.google.com|2=
45行目: 44行目:
 
</nowiki>}}
 
</nowiki>}}
   
{{ic|8.8.8.8}} に ping することができても {{ic|www.google.com}} に ping できない場合は、DNS の設定を確認してください。詳しくは [[resolv.conf]] を見てさい。また、{{ic|/etc/nsswitch.conf}} の {{ic|hosts}} 行も確認してください。
+
{{ic|8.8.8.8}} に ping することができても {{ic|www.google.com}} に ping できない場合は、DNS の設定を確認してください。詳しくは [[resolv.conf]] を見てください。また、{{ic|/etc/nsswitch.conf}} の {{ic|hosts}} 行も確認してください。
   
 
上記どちらの ping も失敗する場合、まずケーブルに問題がないか確認してから更に詳しい診断を行なってください。
 
上記どちらの ping も失敗する場合、まずケーブルに問題がないか確認してから更に詳しい診断を行なってください。
   
 
{{Note|
 
{{Note|
* ping を実行した時に {{ic|ping: icmp open socket: Operation not permitted}} のようなエラーが表示される場合、{{Pkg|iputils}} パッケージを再インストールしてみてください。
+
* ''ping'' を実行した時に {{ic|ping: icmp open socket: Operation not permitted}} のようなエラーが表示される場合、{{Pkg|iputils}} パッケージを再インストールしてみてください。
 
* {{ic|-c ''num''}} オプションを使うことで ping する回数を {{ic|''num''}} で指定できます。オプションを指定しなかった場合、永遠に ping し続けるため手動で終了する必要があります。詳しくは {{ic|man ping}} を参照。
 
* {{ic|-c ''num''}} オプションを使うことで ping する回数を {{ic|''num''}} で指定できます。オプションを指定しなかった場合、永遠に ping し続けるため手動で終了する必要があります。詳しくは {{ic|man ping}} を参照。
* {{ic|8.8.8.8}} は覚えやすい固定アドレスです。このアドレスは Google のプライマリ DNS サーバーのアドレスで、信頼でき、コンテンツフィルタリングやプロクシによってブロックされること通常ありえません。
+
* {{ic|8.8.8.8}} は覚えやすい固定アドレスです。このアドレスは Google のプライマリ DNS サーバーのアドレスで、信頼でき、コンテンツフィルタリングやプロクシによってブロックされること通常ありえません。
 
}}
 
}}
   
 
== ホストネームの設定 ==
 
== ホストネームの設定 ==
   
[[Wikipedia:ja:ホスト名|hostname]] とは、ネットワーク上でマシンを識別するために作られる唯一の(ユニークな)名前です。{{ic|/etc/hostname}} に設定します。このファイルにはシステムのドメイン名を含めることもできます。ホストネームを設定するには、次実行してさい:
+
[[Wikipedia:ja:ホスト名|hostname]] とは、ネットワーク上でマシンを識別するために作られる唯一の(ユニークな)名前であり、{{ic|/etc/hostname}} に設定します (詳しくは {{man|5|hostname}} と {{man|7|hostname}} を参照)。このファイルにはシステムのドメイン名を含めることもできます。ホストネームを設定するには {{ic|/etc/hostname}} [[ヘルプ:読み方#追加, 作成, 編集 そして source|編集]]し、{{ic|''myhostname''}} の1行を入れてください:
  +
  +
{{hc|/etc/hostname|
  +
''myhostname''
  +
}}
  +
  +
{{Tip|hostname の名称の付け方のアドバイスについては、[https://tools.ietf.org/html/rfc1178 RFC 1178] を見てください。}}
  +
  +
上記の方法の代わりに、{{man|1|hostnamectl}} を使うことができます:
   
 
# hostnamectl set-hostname ''myhostname''
 
# hostnamectl set-hostname ''myhostname''
   
このコマンドで {{ic|/etc/hostname}}{{ic|''myhostname''}} が書き込まれま。詳細 {{ic|man 5 hostname}} {{ic|man 1 hostnamectl}} を見て下さ
+
hostname を一時的(再起動するまで) 設定るに{{Pkg|inetutils}} {{man|1|hostname}} を使ます:
   
  +
# hostname ''myhostname''
さらに、{{ic|/etc/hosts}} でもホストネームを設定することを推奨します:
 
   
  +
"pretty" hostname とその他にマシンのメタデータを設定するには、{{man|5|machine-info|https://www.freedesktop.org/software/systemd/man/machine-info.html}} を参照してください。
{{hc|/etc/hosts|2=
 
#
 
# /etc/hosts: static lookup table for host names
 
#
 
   
  +
== ローカルネットワークのホストネーム解決 ==
#<ip-address> <hostname.domain.org> <hostname>
 
127.0.0.1 localhost.localdomain localhost ''myhostname''
 
::1 localhost.localdomain localhost ''myhostname''
 
}}
 
   
  +
[[#ホストネームの設定]]が必須です。設定後は、ホストネーム解決がローカルシステムそれ自体により機能します:
{{Note|{{Pkg|systemd}} は {{ic|myhostname}} nss モジュールによるホストネーム解決を提供しています ({{ic|/etc/nsswitch.conf}} でデフォルトで有効になっています)。そのため基本的に {{ic|/etc/hosts}} のホストネームを変更する必要はありません。しかしながら {{ic|/etc/hosts}} に設定を行わないと、ネットワークを使用するアプリケーションの反応が遅いなどの問題が発生することがあるという報告もあります。詳しくは [[#ローカルネットワークのホストネーム解決]] を参照してください。}}
 
   
  +
{{hc|$ ping ''myhostname''|2=
(再起動せずに)一時的にホストネームを設定するには、{{Pkg|inetutils}} にある ''hostname'' コマンドを使って下さい:
 
  +
PING myhostname (192.168.1.2) 56(84) bytes of data.
  +
64 bytes from myhostname (192.168.1.2): icmp_seq=1 ttl=64 time=0.043 ms}}
   
  +
他のマシンにも名前によってホストを割り当てるには、次のどちらかの操作が必要です:
# hostname ''myhostname''
 
  +
  +
* {{man|5|hosts}} ファイルを編集する、または
  +
* ホストネームを解決するサービスを有効化する。
  +
  +
{{Note|1={{Pkg|systemd}} は {{ic|myhostname}} nss モジュールによるホストネーム解決を提供しています ({{ic|/etc/nsswitch.conf}} でデフォルトで有効になっています)。そのため基本的に {{ic|/etc/hosts}} のホストネームを変更する必要はありません。しかしながら、クライアントが現在でも {{ic|/etc/hosts}}に依存していることがあります。その例は [https://lists.debian.org/debian-devel/2013/07/msg00809.html] [https://bugzilla.mozilla.org/show_bug.cgi?id=87717#c55] を見てください。}}
  +
  +
hosts ファイルを設定するには、次の行を {{ic|/etc/hosts}} に追記します:
  +
  +
127.0.1.1 ''myhostname''.localdomain ''myhostname''
  +
  +
上記の操作により、システムは次の両方のエントリを決定します:
  +
  +
$ getent hosts
  +
127.0.0.1 localhost
  +
127.0.1.1 myhostname.localdomain myhostname
  +
  +
永続的な IP アドレスをもつシステムでは、その {{ic|127.0.1.1}} ではなくその永続アドレスを使ってください。
  +
  +
{{Note|1=もう一つの選択肢として、[[BIND]] や [[Unbound]] のような完全な DNS サーバーをセットアップすることが挙げられますが、ほとんどのシステムにとってこれはやりすぎであり、複雑すぎます。小さなネットワークと、ホストのネットワーク参加と離脱を伴う動的な柔軟性を求める環境には、[[Wikipedia::ja:Zeroconf|zero-configuration networking]] のサービスがより適切であるといえるでしょう:
  +
*[[Samba]] は Microsoft の '''NetBIOS''' によるホストネーム解決を提供しています。これに必要なのは {{Pkg|samba}} のインストールと {{ic|nmbd.service}} サービスの有効化です。Windows、macOS または {{ic|nmbd}} が動作している Linux が動作してるコンピュータがマシンを見つけられるようになります。
  +
*[[Avahi]] は '''zeroconf''' によるホストネーム解決を提供しており、Avahi または Bonjour として知られています。これは Samba よりも少しだけ複雑な設定が必要です (詳しくは [[Avahi#ホスト名の解決]] を参照)。macOS または Avahi デーモンが動作している Linux が動作しているコンピュータがマシンを見つけられるようになります。Windows には組み込みの Avahi クライアントやデーモンがありません。
  +
}}
   
 
== デバイスドライバ ==
 
== デバイスドライバ ==
85行目: 110行目:
 
=== ドライバの状態の確認 ===
 
=== ドライバの状態の確認 ===
   
[[udev]] があなたのネットワークインタフェースカード ([[Wikipedia:ja:ネットワークカード|NIC]]) を検知し、必要なモジュールを起動時に自動でロードします。{{ic|lspci -v}} のアウトプットから "Ethernet controller" エントリ(かそれに類似したもの)をチェックしてください。どのカーネルモジュールがネットワークデバイスのためのドライバを含んでいるかわかります。例:
+
[[udev]] があなたのネットワークインタフェースカード ([[Wikipedia:ja:ネットワークカード|NIC]] を参照) を検知し、必要なモジュールを起動時に自動でロードします。{{ic|lspci -v}} のアウトプットから "Ethernet controller" エントリ(かそれに類似したもの)をチェックしてください。どのカーネルモジュールがネットワークデバイスのためのドライバを含んでいるかわかります。例:
   
 
{{hc|$ lspci -v|
 
{{hc|$ lspci -v|
 
02:00.0 Ethernet controller: Attansic Technology Corp. L1 Gigabit Ethernet Adapter (rev b0)
 
02:00.0 Ethernet controller: Attansic Technology Corp. L1 Gigabit Ethernet Adapter (rev b0)
...
+
...
Kernel driver in use: atl1
+
Kernel driver in use: atl1
Kernel modules: atl1}}
+
Kernel modules: atl1}}
   
 
次に、{{ic|dmesg <nowiki>|</nowiki> grep ''module_name''}} でドライバがロードされたかチェックします。例:
 
次に、{{ic|dmesg <nowiki>|</nowiki> grep ''module_name''}} でドライバがロードされたかチェックします。例:
103行目: 128行目:
 
=== デバイスモジュールのロード ===
 
=== デバイスモジュールのロード ===
   
チップセットに必要なモジュール・ドライバを Google で検索してください。Realtek のチップセットを使っているカードには {{ic|8139too}} が、SiS のチップセットを使っているカードには {{ic|sis900}} が一般的に使われるモジュールです。どのモジュールを使うべきかったら、[[カーネルモジュール#手動でモジュールを扱う|手動でモジュールをロード]]してみてください。モジュールが見つからないというエラーが表示される場合、Arch カーネルにドライバーが含まれていないのかもしれません。モジュールの名前で [[Arch User Repository|AUR]] を検索できます。
+
チップセットに必要なモジュール・ドライバをインターネットで検索してください。Realtek のチップセットを使っているカードには {{ic|8139too}} が、SiS のチップセットを使っているカードには {{ic|sis900}} が一般的に使われるモジュールです。どのモジュールを使うべきかがわかったら、[[カーネルモジュール#手動でモジュールを扱う|手動でモジュールをロード]]してみてください。モジュールが見つからないというエラーが表示される場合、Arch カーネルにドライバーが含まれていないのかもしれません。モジュールの名前で [[Arch User Repository|AUR]] を検索できます。
   
起動時に udev が自動で正しいモジュールを検知・ロードしない場合、[[カーネルモジュール#ロード]]を見てさい。
+
起動時に udev が自動で正しいモジュールを検知・ロードしない場合、[[カーネルモジュール#ロード]]を見てください。
   
 
== ネットワークインターフェース ==
 
== ネットワークインターフェース ==
113行目: 138行目:
 
NIC が統合されたマザーボードでは、デバイス名を固定することが重要です。設定の問題の多くはインターフェイスの名前が変わってしまうことが原因です。
 
NIC が統合されたマザーボードでは、デバイス名を固定することが重要です。設定の問題の多くはインターフェイスの名前が変わってしまうことが原因です。
   
どのデバイスがどの名前になるかは [[udev]] によって決まります。Systemd v197 から [http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames Predictable Network Interface Names] が導入され、ネットワークデバイスに固定された名前を自動的に割り当てるようになりました。現在、インターフェースの名前は {{ic|enp0s25}} のように、先頭に {{ic|en}} (イーサネット) {{ic|wl}} (WLAN) {{ic|ww}} (WWAN) が付き、後ろに自動生成された識別子が付くようになっています。
+
どのデバイスがどの名前になるかは [[udev]] によって決まります。Systemd v197 から [http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames Predictable Network Interface Names] が導入され、ネットワークデバイスに固定された名前を自動的に割り当てるようになりました。現在、インターフェースの名前は {{ic|enp0s25}} のように、先頭に {{ic|en}} (イーサネット) {{ic|wl}} (WLAN) {{ic|ww}} (WWAN) が付き、後ろに自動生成された識別子が付くようになっています。この名前の付け方を止めさせるにはカーネルコマンドラインに {{ic|1=net.ifnames=0}} を追加してください
   
  +
{{Note|インターフェイスの命名方法を変更する時は、ネットワークに関する全ての設定ファイルや、systemd のカスタムユニットファイルなども変更することを忘れないでください。特に、[[netctl#基本的な方法|netctl の固定プロファイル]]を有効にしている場合は、{{ic|netctl reenable ''profile''}} を実行してサービスファイルを更新してください。}}
この名前の付け方を止めさせるにはカーネルコマンドラインに {{ic|1=net.ifnames=0}} を追加してください。
 
 
{{Note|インターフェイスの命名方法を変更する時は、ネットワークに関する全ての設定ファイルや、systemd のカスタムユニットファイルなども変更することを忘れないで下さい。特に、[[netctl#基本的な方法|netctl の固定プロファイル]]を有効にしている場合は、{{ic|netctl reenable ''profile''}} を実行してサービスファイルを更新してください。}}
 
   
 
==== 現在のデバイス名を取得 ====
 
==== 現在のデバイス名を取得 ====
138行目: 161行目:
 
==== デバイス名の変更 ====
 
==== デバイス名の変更 ====
   
udev ルールを作ることで名前を手動で定義してデバイス名を変更することができます。例えば:
+
udev ルールを作ることで名前を手動で定義してデバイス名を変更することができます。例:
   
 
{{hc|/etc/udev/rules.d/10-network.rules|2=
 
{{hc|/etc/udev/rules.d/10-network.rules|2=
148行目: 171行目:
 
注意事項:
 
注意事項:
   
* カードの MAC アドレスを取得するには、次のコマンドを使ってさい: {{ic|cat /sys/class/net/''device-name''/address}}
+
* カードの MAC アドレスを取得するには、次のコマンドを使ってください: {{ic|cat /sys/class/net/''device-name''/address}}
* udev ルールでは小文字の十六進数を使うようにしてください。大文字は使ってはいけません。
+
* udev ルールでは小文字の16進数を使うようにしてください。大文字は使ってはいけません。
   
 
ネットワークカードに MAC が動的に割り当てられている場合は、{{ic|DEVPATH}} を使うことができます。例:
 
ネットワークカードに MAC が動的に割り当てられている場合は、{{ic|DEVPATH}} を使うことができます。例:
160行目: 183行目:
 
ルールは起動時に複数回実行されることがあるので、デバイスのパスは新しいデバイス名と古いデバイス名両方にマッチする必要があります。例えば、2番目のルールで、{{ic|"/devices/pci*/*1c.0/*/net/enp*"}} と設定すると困ったことになります。名前が {{ic|en}} に変更されるとマッチしなくなるからです。システムのデフォルトルールだけが再度適用され、名前が {{ic|enp1s0}} などに戻ります。
 
ルールは起動時に複数回実行されることがあるので、デバイスのパスは新しいデバイス名と古いデバイス名両方にマッチする必要があります。例えば、2番目のルールで、{{ic|"/devices/pci*/*1c.0/*/net/enp*"}} と設定すると困ったことになります。名前が {{ic|en}} に変更されるとマッチしなくなるからです。システムのデフォルトルールだけが再度適用され、名前が {{ic|enp1s0}} などに戻ります。
   
ルールを[[Udev#ロードする前にルールをテストする|テスト]]したい場合、ユーザー空間から直接テストすることができますえば: {{ic|udevadm --debug test /sys/''DEVPATH''}}。名前を変更する前にインターフェイスは落としておいてください (例: {{ic|ip link set down enp1s0}})。
+
ルールを[[Udev#ロードする前にルールをテストする|テスト]]したい場合、ユーザー空間から直接テストすることができます (例: {{ic|udevadm --debug test /sys/''DEVPATH''}})。名前を変更する前にインターフェイスは落としておいてください (例: {{ic|ip link set down enp1s0}})。
   
 
{{Note|固定の名前を付けるときに "eth''X''" や "wlan''X''" というような名前を使ってはいけません、起動時にカーネルと udev で競合状態が発生する可能性があります。代わりに、カーネルではデフォルトで使われないインターフェイス名を使うと良いでしょう、例: {{ic|net0}}, {{ic|net1}}, {{ic|wifi0}}, {{ic|wifi1}}。詳細は [http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames systemd] のドキュメントを参照してください。}}
 
{{Note|固定の名前を付けるときに "eth''X''" や "wlan''X''" というような名前を使ってはいけません、起動時にカーネルと udev で競合状態が発生する可能性があります。代わりに、カーネルではデフォルトで使われないインターフェイス名を使うと良いでしょう、例: {{ic|net0}}, {{ic|net1}}, {{ic|wifi0}}, {{ic|wifi1}}。詳細は [http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames systemd] のドキュメントを参照してください。}}
171行目: 194行目:
   
 
=== MTU とキューの長さの設定 ===
 
=== MTU とキューの長さの設定 ===
udev ルールを使って手動で定義することでデバイスの MTU とキューの長さを変更することができます。例えば:
+
udev ルールを使って手動で定義することでデバイスの MTU とキューの長さを変更することができます。例:
   
 
{{hc|/etc/udev/rules.d/10-network.rules|2=
 
{{hc|/etc/udev/rules.d/10-network.rules|2=
194行目: 217行目:
 
== IP アドレスの設定 ==
 
== IP アドレスの設定 ==
   
  +
{{Warning|一つの方法のみを使ってネットワークを管理してください。複数の方法を使うと競合する恐れがあります。}}
2つ選択肢があります: [[Wikipedia:ja:Dynamic Host Configuration Protocol|DHCP]] を使った動的に割り当てられるアドレスか、不変の"固定"アドレスです。
 
  +
  +
2つ選択肢があります: [[Wikipedia:ja:Dynamic Host Configuration Protocol|DHCP]] を使った動的に割り当てられるアドレスか、不変の"固定"アドレスです。[[アプリケーション一覧#ネットワーク管理]]も参照してください。
   
{{Tip|以下で説明している方法以外にも、[[アプリケーション一覧#ネットワーク管理|ネットワークマネージャ]]を使う方法もあります。動的にネットワークを接続する場合や wifi ネットワークを使うときは特にネットワークマネージャの方が楽です。}}
 
 
 
=== 動的 IP アドレス ===
 
=== 動的 IP アドレス ===
   
 
==== systemd-networkd ====
 
==== systemd-networkd ====
   
systemd による [[systemd-networkd]] を使って DHCP を簡単に設定することができます。[[systemd-networkd#基本的な DHCP ネットワーク]] を見てさい。
+
systemd による [[systemd-networkd]] を使って DHCP を簡単に設定することができます。[[systemd-networkd#基本的な DHCP ネットワーク]] を見てください。
   
 
==== dhcpcd ====
 
==== dhcpcd ====
   
[[dhcpcd]] は Arch Linux の ISO で DHCP を設定するのに使われていす。インターフェイス名を引数として渡して、サファイル {{ic|dhcpcd@.service}} を使用するか、もしく{{ic|dhcpcd ''interface''}} を実行して手動で起動してください。
+
[[dhcpcd]] は Arch Linux の ISO で DHCP を設定するのに使われているデフォルトのクライアントです。これは様々な DHCP クライアントオプションの設定が可能な強力なツールです。インターフェース用に起動する方法[[dhcpcd#実行]] を参照してください。
   
=== 固定 IP アドレス ===
+
==== dhclient ====
   
  +
{{Pkg|dhclient}} は Internet Systems Consortium の DHCP クライアントです。{{ic|dhclient@''interface''.service}} を[[有効化]]してください。{{ic|''interface''}} は有線の[[#デバイス名]]です。詳しくは {{man|8|dhclient|url=}} と {{man|5|dhclient.conf|url=}} を見てください。
あなたのネットワークに固定の IP アドレスを割り当てたいと思う理由は様々あるでしょう。例えば、不変のアドレスを得ることである程度の予測可能性を得ることができたり、もしくは DHCP サーバーを利用する必要がなくなります。
 
   
  +
==== netctl ====
Arch Linux に存在するネットワークツールのほとんどで固定アドレスを設定することができます。例えば [[netctl]], [[systemd-networkd]], [[dhcpcd]] を見て下さい。
 
  +
  +
[[netctl]] は、ユーザーが作成したプロファイルを通してネットワークの接続を設定・管理する CLI ベースのツールです。[[netctl#サンプルプロファイル]] で示されている例のようにプロファイルを作成し、[[netctl#基本的な方法]]で述べられているようにして有効化してください。
  +
  +
=== 固定 IP アドレス ===
   
以下は'''手動'''固定 IP アドレスを設定する方法です。あなたが必要なもの:
+
Arch Linux に存在するネットワークツールのほとんどで固定アドレスを設定することがきます。どのツールを選ぶかに関わらず、おそらく以下の情報準備に必要るでしょう:
   
 
* 固定 IP アドレス
 
* 固定 IP アドレス
  +
* サブネットマスク、または場合によっては [[Wikipedia:Classless Inter-Domain Routing#CIDR notation|CIDR の表記]]。例えば {{ic|/24}} は {{ic|255.255.255.0}} の CIDR 表記です。
* [[Wikipedia:Subnetwork|サブネットマスク]]
 
 
* [[Wikipedia:Broadcast_address|ブロードキャストアドレス]]
 
* [[Wikipedia:Broadcast_address|ブロードキャストアドレス]]
 
* [[Wikipedia:Default_gateway|ゲートウェイ]]の IP アドレス
 
* [[Wikipedia:Default_gateway|ゲートウェイ]]の IP アドレス
226行目: 253行目:
 
{{Warning|
 
{{Warning|
 
* 手動で割り当てた IP アドレスと DHCP によるアドレスが衝突しないように注意してください。[http://www.raspberrypi.org/forums/viewtopic.php?f&#61;28&t&#61;16797 このフォーラムスレッド] を参照。
 
* 手動で割り当てた IP アドレスと DHCP によるアドレスが衝突しないように注意してください。[http://www.raspberrypi.org/forums/viewtopic.php?f&#61;28&t&#61;16797 このフォーラムスレッド] を参照。
* ルーターを使わずに Windows マシンとインターネット接続を共有する場合、LAN の問題を避けるために両方のコンピュータで固定 IP アドレスを使うようにしてさい。
+
* ルーターを使わずに Windows マシンとインターネット接続を共有する場合、LAN の問題を避けるために両方のコンピュータで固定 IP アドレスを使うようにしてください。
 
}}
 
}}
   
  +
{{Tip|アドレスは {{Pkg|ipcalc}} を用いて計算することができます。[[#アドレス計算]]を参照。}}
==== 手動で割り当てる ====
 
   
  +
==== netctl ====
この方法では再起動すると設定は消えます。[[#ネットワークインターフェース|ネットワークインターフェース]]を有効化:
 
   
  +
固定 IP の {{Pkg|netctl}} プロファイルを作成するには、{{ic|1=IP=static}} オプションを設定し、{{ic|Address}}、{{ic|Gateway}}、{{ic|DNS}} も同様に設定してください。 [[netctl#有線]]を見てください。
# ip link set ''interface'' up
 
   
  +
==== systemd-networkd ====
コンソールから固定 IP アドレスを割り当てることができます:
 
   
  +
systemd により提供される [[systemd-networkd]] サービスは、シンプルな設定ファイルを使って固定 IP をセットアップすることができます。 [[systemd-networkd#有線アダプタで固定 IP を使用]]を見てください。
# ip addr add ''IP_address''/''subnet_mask'' broadcast ''broadcast_address'' dev ''interface''
 
   
  +
==== dhcpcd ====
例:
 
   
  +
[[en2:dhcpcd#Static profile|dhcpcd#Static profile]] を見てください。
# ip addr add 192.168.1.2/24 broadcast 192.168.1.255 dev ''interface''
 
   
  +
==== 手動で割り当てる ====
{{Note|サブネットマスクは [[Wikipedia:CIDR_notation|CIDR notation]] を使って明示されます。}}
 
   
  +
{{Pkg|iproute2}} のみを使って固定 IP を手動でセットアップすることができます。この方法では再起動すると設定が消えるので、接続設定のテストするためのよい方法になります。まず[[#ネットワークインターフェース|ネットワークインターフェース]]を有効化します:
オプションについて詳しくは {{ic|man ip}} を見て下さい。
 
   
  +
# ip link set ''interface'' up
あなたのゲートウェイ IP アドレスを次のように追加します:
 
   
  +
コンソールから固定 IP アドレスを割り当てます:
# ip route add default via ''default_gateway''
 
   
  +
# ip addr add ''IP_address''/''subnet_mask'' broadcast ''broadcast_address'' dev ''interface''
例:
 
   
  +
そしてゲートウェイ IP アドレスを追加します:
# ip route add default via 192.168.1.1
 
   
  +
# ip addr add 192.168.1.2/24 broadcast 192.168.1.255 dev ''interface''
==== systemd-networkd ====
 
   
  +
例:
[[systemd-networkd#有線アダプタで固定 IP を使用]]を見て下さい。
 
   
  +
# ip link set eth0 up
====systemd サービス====
 
  +
# ip addr add 192.168.1.2/24 broadcast 192.168.1.255 dev eth0
  +
# ip route add default via 192.168.1.1
   
  +
{{Note|{{ic|RTNETLINK answers: Network is unreachable}} というメッセージが表示された場合、ルート生成を次の2つのに分けてみてください:
まず [[systemd]] サービスの設定ファイルを作成してください ({{ic|<interface>}} は適切なインターフェイス名に置き換えて下さい):
 
   
  +
# ip route add 192.168.1.1 dev eth0
{{hc|/etc/conf.d/net-conf-''interface''|<nowiki>
 
address=192.168.1.2
+
# ip route add default via 192.168.1.1 dev eth0
netmask=24
 
broadcast=192.168.1.255
 
gateway=192.168.1.1
 
</nowiki>}}
 
 
ネットワーク起動・停止スクリプトを作成してください:
 
 
{{hc|/usr/local/bin/net-up|<nowiki>
 
#!/bin/bash
 
ip link set dev "$1" up
 
ip addr add "$address/$netmask" broadcast "$broadcast" dev "$1"
 
[[ -z $gateway ]] || ip route add default via "$gateway"
 
</nowiki>
 
 
}}
 
}}
   
  +
上記の手順を取り消すには (例えば動的 IP に切り替える前に)、まず割り当てた IP アドレスをすべて削除します:
{{hc|/usr/local/bin/net-down|
 
#!/bin/bash
 
ip addr flush dev "$1"
 
ip route flush dev "$1"
 
ip link set dev "$1" down
 
}}
 
   
  +
# ip addr flush dev ''interface''
両方のスクリプトに実行可能属性を付与します:
 
   
  +
その次に割り当てたゲートウェイをすべて削除します:
# chmod +x /usr/local/bin/net-{up,down}
 
   
  +
# ip route flush dev ''interface''
''systemd'' サービスファイル:
 
   
  +
そして最後にインターフェースを無効化します:
{{hc|/etc/systemd/system/network@.service|<nowiki>
 
[Unit]
 
Description=Network connectivity (%i)
 
Wants=network.target
 
Before=network.target
 
BindsTo=sys-subsystem-net-devices-%i.device
 
After=sys-subsystem-net-devices-%i.device
 
   
  +
# ip link set ''interface'' down
[Service]
 
Type=oneshot
 
RemainAfterExit=yes
 
EnvironmentFile=/etc/conf.d/net-conf-%i
 
ExecStart=/usr/local/bin/net-up %i
 
ExecStop=/usr/local/bin/net-down %i
 
   
  +
オプションについての詳細は {{ic|ip(8)}} の man ページを見てください。これらのコマンドはスクリプトと [[systemd#カスタム .service ファイルを書く|systemd ユニット]]使って自動化できます
[Install]
 
WantedBy=multi-user.target
 
</nowiki>}}
 
   
  +
==== アドレス計算 ====
ユニットを有効にして起動してください (インターフェイス名を指定してください):
 
   
  +
{{Pkg|ipcalc}} パッケージによって提供される {{ic|ipcalc}} を使うことで、より高度な設定のために、IP ブロードキャスト、ネットワーク、ネットマスク、ホストの範囲を計算することができます。例えば、firewire ごしのイーサネットを使って Windows マシンと Arch を接続している場合、セキュリティやネットワークの管理のために、ネットマスクとブロードキャストが設定されたネットワークに置くことでその2つのマシンだけがネットワークが使えるようになります。
# systemctl enable network@''interface''.service
 
# systemctl start network@''interface''.service
 
 
==== アドレス計算 ====
 
   
{{Pkg|ipcalc}} パッケージによって提供される {{ic|ipcalc}} を使うことで、より高度な設定のために、IP ブロードキャスト、ネットワーク、ネットマスク、ホストの範囲を計算することができます。例えば、firewire ごしのイーサネットを使って Windows マシンと Arch を接続している場合、セキュリティやネットワークの管理のために、ネットマスクとブロードキャストが設定されたネットワークに置くことでその2つのマシンだけがネットワークが使えるようになります。このためにネットマスクとブロードキャストアドレスを計算するには、ipcalc を使って、arch の firewire nic の IP 10.66.66.1 で計算して、ipcalc にホストが2つだけのネットワークを作成させます。
+
このためにネットマスクとブロードキャストアドレスを計算するには、{{ic|ipcalc}} を使って、arch の firewire nic の IP {{ic|10.66.66.1}} で計算して、ホストが2つだけのネットワークを作成させます。
   
{{hc|$ ipcalc -nb 10.66.66.1 -s 1|2=
+
{{hc|$ ipcalc -nb 10.66.66.1 -s 1|<nowiki>
 
Address: 10.66.66.1
 
Address: 10.66.66.1
   
329行目: 324行目:
 
HostMax: 10.66.66.2
 
HostMax: 10.66.66.2
 
Broadcast: 10.66.66.3
 
Broadcast: 10.66.66.3
Hosts/Net: 2 Class A, Private Internet}}
+
Hosts/Net: 2 Class A, Private Internet
  +
</nowiki>}}
 
== 設定のロード ==
 
 
設定をテストするには、コンピュータを再起動するか、適切な systemd サービスをリロードしてください。そして、接続に問題がないか調べるために、ゲートウェイや DNS サーバー、ISP プロバイダ、その他インターネットのサイトなどに ping をしてください、例えば:
 
 
$ ping -c 3 www.google.com
 
   
== 追加設定 ==
+
== Tips and tricks ==
   
 
=== ラップトップのための ifplugd ===
 
=== ラップトップのための ifplugd ===
351行目: 341行目:
 
=== ボンディングと LAG ===
 
=== ボンディングと LAG ===
   
[[netctl#ボンディング]] を見てさい。
+
[[netctl#ボンディング]] を見てください。
   
 
=== IP アドレスエイリアス ===
 
=== IP アドレスエイリアス ===
357行目: 347行目:
 
ひとつのネットワークインターフェースに複数の IP アドレスを加えることを IP エイリアスと呼びます。これをすることで、ネットワークのひとつのノードでネットワークに複数接続することができ、それぞれを別々に使うことができます。基本的に Web・FTP サーバーの仮想ホスティングや、サーバーの再構成 (他のマシンを更新しない、ネームサーバで有用) に使われます。
 
ひとつのネットワークインターフェースに複数の IP アドレスを加えることを IP エイリアスと呼びます。これをすることで、ネットワークのひとつのノードでネットワークに複数接続することができ、それぞれを別々に使うことができます。基本的に Web・FTP サーバーの仮想ホスティングや、サーバーの再構成 (他のマシンを更新しない、ネームサーバで有用) に使われます。
   
==== サンプル ====
+
==== ====
 
[[公式リポジトリ]]から {{Pkg|netctl}} をインストールする必要があります。
 
 
設定を用意します:
 
 
{{hc|/etc/netctl/mynetwork|2=
 
Connection='ethernet'
 
Description='Six different addresses on the same NIC.'
 
Interface='eth0'
 
IP='static'
 
Address=('192.168.1.10/24' '192.168.178.11/24' '192.168.1.12/24' '192.168.1.13/24' '192.168.1.14/24' '192.168.1.15/24')
 
Gateway='192.168.1.1'
 
DNS=('192.168.1.1')
 
}}
 
 
そして次を実行してください:
 
 
$ netctl start ''mynetwork''
 
   
 
{{Pkg|iproute2}} ツールを使って NIC のエイリアスを手動で設定するには次を実行:
 
{{Pkg|iproute2}} ツールを使って NIC のエイリアスを手動で設定するには次を実行:
384行目: 356行目:
   
 
$ ip addr del 192.168.1.10/24 dev enp1s0:1
 
$ ip addr del 192.168.1.10/24 dev enp1s0:1
  +
  +
サブネットへ向かうパケットはデフォルトでプライマリエイリアスを使います。送信先 IP がセカンダリエイリアスのサブネット内のものである場合は、送信元 IP がそれぞれに設定されます。複数の NIC が存在する場合を考えた場合、{{ic|ip route}} でデフォルトルートを列挙することができます。
   
 
=== MAC/ハードウェアアドレスを変更する ===
 
=== MAC/ハードウェアアドレスを変更する ===
   
[[MAC アドレス偽装]]を見てさい。
+
[[MAC アドレス偽装]]を見てください。
   
 
=== インターネット共有 ===
 
=== インターネット共有 ===
   
[[インターネット共有]]を見てさい。
+
[[インターネット共有]]を見てください。
   
 
=== ルーター設定 ===
 
=== ルーター設定 ===
   
[[ルーター]]を見てさい。
+
[[ルーター]]を見てください。
 
=== ローカルネットワークのホストネーム解決 ===
 
 
ローカル環境でホストネーム解決をする前に事前に[[#ホストネームの設定|ホストネームの設定]]をしてください。
 
 
{{hc|$ ping hostname|
 
PING hostname <nowiki>(192.168.1.2) 56(84) bytes of data.
 
64 bytes from hostname (192.168.1.2): icmp_seq=1 ttl=64 time=0.043 ms</nowiki>}}
 
 
他のマシンが名前でホストを計算できるようにするには、それぞれの {{ic|/etc/hosts}} ファイルを手動で設定するか名前を解決するサービスが必要です。
 
 
[[BIND]] や [[Unbound]] などの DNS サーバーを設定するのは過剰で、{{ic|/etc/hosts}} を手動で設定するのは面倒というような場合、ネットワークにホストを動的に追加・削除できるような柔軟性が欲しいときは、ゼロコンフィギュレーションネットワークを使ってローカルネットワークのホストネーム解決を処理することができます。2つの選択肢が存在します:
 
 
*[[Samba]] は Microsoft の NetBIOS を使ってホストネーム解決を提供します。{{Pkg|samba}} をインストールして {{ic|nmbd.service}} サービスを有効にするだけです。{{ic|nmbd}} を走らせることで、Windows, OS X, Linux が動作しているコンピュータはあなたのマシンを見つけることができるようになります。
 
 
*[[Avahi]] は zeroconf を使ってホストネーム解決を提供します。Bonjour としても知られています。Samba と比べてやや複雑な設定が必要です: 詳しくは [[Avahi#ホスト名の解決]] を見て下さい。Avahi デーモンを動かすことで、OS X や Linux が動作しているコンピュータはあなたのマシンを見つけることができるようになります。Windows には Avahi クライアントやデーモンが備わっていません。
 
   
 
=== プロミスキャスモード ===
 
=== プロミスキャスモード ===
431行目: 389行目:
 
</nowiki>}}
 
</nowiki>}}
   
インターフェイス {{ic|eth0}} でプロミスキャスモードを有効にしたい場合、実行してください:
+
インターフェイス {{ic|eth0}} でプロミスキャスモードを有効にしたい場合、{{ic|promiscuous@eth0.service}} 有効化してください
 
# systemctl enable promiscuous@eth0.service
 
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
449行目: 405行目:
 
1992年、利用できるメモリの量が大幅に増えるのにあわせて、この状態を改善するために [http://www.faqs.org/rfcs/rfc1323.html RFC 1323]: ウィンドウスケーリングが書かれました。全てのパケットに含まれている"ウィンドウ"の値を、スケールファクタ (Scale Factor) を定義することで、接続の初期段階で変更します。8ビットのスケールファクタなら、ウィンドウは 64Kb の32倍まで増やすことができます。
 
1992年、利用できるメモリの量が大幅に増えるのにあわせて、この状態を改善するために [http://www.faqs.org/rfcs/rfc1323.html RFC 1323]: ウィンドウスケーリングが書かれました。全てのパケットに含まれている"ウィンドウ"の値を、スケールファクタ (Scale Factor) を定義することで、接続の初期段階で変更します。8ビットのスケールファクタなら、ウィンドウは 64Kb の32倍まで増やすことができます。
   
壊れたルーターやファイアウォールはスケールファクタを 0 に書き換えてしまうためホスト間での不和が発生します。
+
壊れたルーターやファイアウォールはスケールファクタを 0 に書き換えてしまうためホスト間での不和が発生します。Linux カーネル 2.6.17 ではスケールファクタを上げるための新しい算出方式が導入されましたが、それによってルーターやファイアウォールが壊れているときの影響が増え、極端に接続が遅かったり、全く接続できない状態が生まれています。
 
Linux カーネル 2.6.17 ではスケールファクタを上げるための新しい算出方式が導入されましたが、それによってルーターやファイアウォールが壊れているときの影響が増え、極端に接続が遅かったり、全く接続できない状態が生まれています。
 
   
 
==== 問題の診断方法 ====
 
==== 問題の診断方法 ====
461行目: 415行目:
 
ウェブサイトが表示できないのに、ping は通る場合、この問題が発生している可能性は十分あるでしょう: ping は TCP の問題に影響されない ICMP を使っているためです。
 
ウェブサイトが表示できないのに、ping は通る場合、この問題が発生している可能性は十分あるでしょう: ping は TCP の問題に影響されない ICMP を使っているためです。
   
[[Wireshark]] を使ってみてさい。UDP と ICMP の接続は通るのに (ホストが海外の) TCP 接続は通らないはずです。
+
[[Wireshark]] を使ってみてください。UDP と ICMP の接続は通るのに (ホストが海外の) TCP 接続は通らないはずです。
   
 
==== 修復方法 (悪い方法) ====
 
==== 修復方法 (悪い方法) ====
491行目: 445行目:
 
==== 方法 1 - Linux で NIC を直接有効にする ====
 
==== 方法 1 - Linux で NIC を直接有効にする ====
   
  +
[[#ネットワークインターフェースの有効化・無効化]]に従ってインターフェイスを有効化してください。
次のコマンドの出力からイーサネット NIC の名前を取得してください:
 
 
$ ip a
 
 
NIC の名前を使って root でデバイスを立ち上げて下さい:
 
 
# ip link set dev <NIC_name> up
 
 
例えば <NIC_name> が enp7s0 の場合:
 
 
# ip link set dev enp7s0 up
 
 
上記のコマンドでカードの電源が入れば、{{ic|ip link}} の出力でインターフェイスが {{ic|state UP}} になっていることを確認できます。
 
   
 
==== 方法 2 - Windows ドライバをロールバック/変更する ====
 
==== 方法 2 - Windows ドライバをロールバック/変更する ====
544行目: 486行目:
 
この Broadcom チップセットはモジュールをロードする順番を指定しないと上手く動作しないことが時々あります。モジュールは {{ic|broadcom}} と {{ic|tg3}} であり、前者を最初にロードする必要があります。
 
この Broadcom チップセットはモジュールをロードする順番を指定しないと上手く動作しないことが時々あります。モジュールは {{ic|broadcom}} と {{ic|tg3}} であり、前者を最初にロードする必要があります。
   
コンピューターにこのチップセットが載っている場合、以下の手順に従ってさい:
+
コンピューターにこのチップセットが載っている場合、以下の手順に従ってください:
   
 
* ''lspci'' の出力で NIC を確認:
 
* ''lspci'' の出力で NIC を確認:
572行目: 514行目:
 
}}
 
}}
   
このアダプタは {{ic|r8169}} モジュールによって認識されます。しかしながら、使われているチップによって、接続が出来たりできなかったりすることがあります。そのような場合は、[[公式リポジトリ]]にある {{Pkg|r8168}} を使うことで安定した接続をすることができます。{{ic|r8169}} を[[カーネルモジュール#ブラックリスト|ブラックリスト]]に入れて、{{Pkg|r8168}} が [[udev]] によって自動でロードされない場合、ユーザー定義の[[カーネルモジュール#ロード|モジュール]]リストに追加してください。
+
このアダプタは {{ic|r8169}} モジュールによって認識されます。しかしながら、使われているチップによって、接続が出来たりできなかったりすることがあります。そのような場合は、[[公式リポジトリ]]にある {{Pkg|r8168}} を使うことで安定した接続をすることができます。{{ic|r8169}} を[[ブラックリスト]]に入れて、{{Pkg|r8168}} が [[udev]] によって自動でロードされない場合、[[カーネルモジュール#ロード]]を見てください。
  +
  +
このアダプタのいくつかのリビジョンのドライバにおけるもう1つの欠陥は IPv6 サポートが貧弱であることです。Web ページがハングしたり、回線が遅くなったりした場合は、[[IPv6#機能を無効にする]]が参考になります。
   
 
=== Gigabyte マザーボードと Realtek 8111/8168/8411 ===
 
=== Gigabyte マザーボードと Realtek 8111/8168/8411 ===
  +
 
Gigabyte GA-990FXA-UD3 などのマザーボードでは IOMMU をオフにして (デフォルトでオフになっていることもあります) 起動を行うと、ネットワークインターフェイスが不安定になって、接続が出来なかったり、通信速度が遅くなったりします。オンボードの NIC だけでなく、コンピュータに接続した他の PCI NIC でも起こりえます。IOMMU の設定はマザーボードに接続された全てのネットワークインターフェイスに影響を与えるからです。IOMMU を有効にしてインストールメディアで起動すると AMD I-10/xhci のページフォールトが数秒だけ表示されますが、その後通常通り起動して、オンボードの NIC が (r8169 モジュールを使用する場合でも) 完全に機能するようになるはずです。
 
Gigabyte GA-990FXA-UD3 などのマザーボードでは IOMMU をオフにして (デフォルトでオフになっていることもあります) 起動を行うと、ネットワークインターフェイスが不安定になって、接続が出来なかったり、通信速度が遅くなったりします。オンボードの NIC だけでなく、コンピュータに接続した他の PCI NIC でも起こりえます。IOMMU の設定はマザーボードに接続された全てのネットワークインターフェイスに影響を与えるからです。IOMMU を有効にしてインストールメディアで起動すると AMD I-10/xhci のページフォールトが数秒だけ表示されますが、その後通常通り起動して、オンボードの NIC が (r8169 モジュールを使用する場合でも) 完全に機能するようになるはずです。
   
 
インストール時にブートプロセスを設定する場合、起動時のエラーメッセージを排除して USB 3.0 を機能させるために[[カーネルパラメータ]]に {{ic|1=iommu=soft}} を追加してください。
 
インストール時にブートプロセスを設定する場合、起動時のエラーメッセージを排除して USB 3.0 を機能させるために[[カーネルパラメータ]]に {{ic|1=iommu=soft}} を追加してください。
  +
  +
== 参照 ==
  +
  +
* [https://www.debian.org/doc/manuals/debian-reference/ch05.ja.html Debian リファレンス: ネットワークの設定]
  +
* [https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ RHEL7: ネットワークガイド]

2016年10月24日 (月) 03:20時点における版

関連記事

このページではネットワークの有線接続を設定する方法を説明しています。無線ネットワークを設定する必要がある場合はワイヤレス設定のページを見てください。

目次

接続の確認

多くの場合、インストールするだけで動作するネットワーク設定がすでに作られています。それを確認するには、ping(8) を使います:

$ ping www.google.com
PING www.l.google.com (74.125.132.105) 56(84) bytes of data.
64 bytes from wb-in-f105.1e100.net (74.125.132.105): icmp_req=1 ttl=50 time=17.0 ms
...

ping が成功したことが確認できたら (上記の 64 bytes メッセージでわかります)、ネットワークは設定されています。Control-C を押して ping を停止してください。

Unknown hosts エラーで ping が失敗する場合、そのメッセージはあなたのマシンではドメインの解決ができなかったことを意味しています。おそらくあなたのサービスプロバイダやルーター・ゲートウェイに関連しています。マシンがインターネットにアクセスできることを証明するために固定 IP アドレスに ping して見てください:

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=53 time=52.9 ms
...

8.8.8.8 に ping することができても www.google.com に ping できない場合は、DNS の設定を確認してください。詳しくは resolv.conf を見てください。また、/etc/nsswitch.confhosts 行も確認してください。

上記どちらの ping も失敗する場合、まずケーブルに問題がないか確認してから更に詳しい診断を行なってください。

ノート:
  • ping を実行した時に ping: icmp open socket: Operation not permitted のようなエラーが表示される場合、iputils パッケージを再インストールしてみてください。
  • -c num オプションを使うことで ping する回数を num で指定できます。オプションを指定しなかった場合、永遠に ping し続けるため手動で終了する必要があります。詳しくは man ping を参照。
  • 8.8.8.8 は覚えやすい固定アドレスです。このアドレスは Google のプライマリ DNS サーバーのアドレスで、信頼でき、コンテンツフィルタリングやプロクシによってブロックされることは通常ありえません。

ホストネームの設定

hostname とは、ネットワーク上でマシンを識別するために作られる唯一の(ユニークな)名前であり、/etc/hostname に設定します (詳しくは hostname(5)hostname(7) を参照)。このファイルにはシステムのドメイン名を含めることもできます。ホストネームを設定するには /etc/hostname編集し、myhostname の1行を入れてください:

/etc/hostname
myhostname
ヒント: hostname の名称の付け方のアドバイスについては、RFC 1178 を見てください。

上記の方法の代わりに、hostnamectl(1) を使うことができます:

# hostnamectl set-hostname myhostname

hostname を一時的に (再起動するまで) 設定するには、inetutilshostname(1) を使います:

# hostname myhostname

"pretty" hostname とその他にマシンのメタデータを設定するには、machine-info(5) § https://www.freedesktop.org/software/systemd/man/machine-info.html を参照してください。

ローカルネットワークのホストネーム解決

#ホストネームの設定が必須です。設定後は、ホストネーム解決がローカルシステムそれ自体により機能します:

$ ping myhostname
PING myhostname (192.168.1.2) 56(84) bytes of data.
64 bytes from myhostname (192.168.1.2): icmp_seq=1 ttl=64 time=0.043 ms

他のマシンにも名前によってホストを割り当てるには、次のどちらかの操作が必要です:

  • hosts(5) ファイルを編集する、または
  • ホストネームを解決するサービスを有効化する。
ノート: systemdmyhostname nss モジュールによるホストネーム解決を提供しています (/etc/nsswitch.conf でデフォルトで有効になっています)。そのため基本的に /etc/hosts のホストネームを変更する必要はありません。しかしながら、クライアントが現在でも /etc/hostsに依存していることがあります。その例は [1] [2] を見てください。

hosts ファイルを設定するには、次の行を /etc/hosts に追記します:

127.0.1.1    myhostname.localdomain    myhostname

上記の操作により、システムは次の両方のエントリを決定します:

$ getent hosts
127.0.0.1       localhost
127.0.1.1       myhostname.localdomain myhostname

永続的な IP アドレスをもつシステムでは、その 127.0.1.1 ではなくその永続アドレスを使ってください。

ノート: もう一つの選択肢として、BINDUnbound のような完全な DNS サーバーをセットアップすることが挙げられますが、ほとんどのシステムにとってこれはやりすぎであり、複雑すぎます。小さなネットワークと、ホストのネットワーク参加と離脱を伴う動的な柔軟性を求める環境には、zero-configuration networking のサービスがより適切であるといえるでしょう:
  • Samba は Microsoft の NetBIOS によるホストネーム解決を提供しています。これに必要なのは samba のインストールと nmbd.service サービスの有効化です。Windows、macOS または nmbd が動作している Linux が動作してるコンピュータがマシンを見つけられるようになります。
  • Avahizeroconf によるホストネーム解決を提供しており、Avahi または Bonjour として知られています。これは Samba よりも少しだけ複雑な設定が必要です (詳しくは Avahi#ホスト名の解決 を参照)。macOS または Avahi デーモンが動作している Linux が動作しているコンピュータがマシンを見つけられるようになります。Windows には組み込みの Avahi クライアントやデーモンがありません。

デバイスドライバ

ドライバの状態の確認

udev があなたのネットワークインタフェースカード (NIC を参照) を検知し、必要なモジュールを起動時に自動でロードします。lspci -v のアウトプットから "Ethernet controller" エントリ(かそれに類似したもの)をチェックしてください。どのカーネルモジュールがネットワークデバイスのためのドライバを含んでいるかわかります。例:

$ lspci -v
 02:00.0 Ethernet controller: Attansic Technology Corp. L1 Gigabit Ethernet Adapter (rev b0)
     ...
     Kernel driver in use: atl1
     Kernel modules: atl1

次に、dmesg | grep module_name でドライバがロードされたかチェックします。例:

$ dmesg | grep atl1
   ...
   atl1 0000:02:00.0: eth0 link is up 100 Mbps full duplex

ドライバがきちんとロードされている場合は次のセクションはスキップしてください。そうでないならば、あなたの使っているモデルのために必要なモジュールを知る必要があります。

デバイスモジュールのロード

チップセットに必要なモジュール・ドライバをインターネットで検索してください。Realtek のチップセットを使っているカードには 8139too が、SiS のチップセットを使っているカードには sis900 が一般的に使われるモジュールです。どのモジュールを使うべきかがわかったら、手動でモジュールをロードしてみてください。モジュールが見つからないというエラーが表示される場合、Arch カーネルにドライバーが含まれていないのかもしれません。モジュールの名前で AUR を検索できます。

起動時に udev が自動で正しいモジュールを検知・ロードしない場合、カーネルモジュール#ロードを見てください。

ネットワークインターフェース

デバイス名

NIC が統合されたマザーボードでは、デバイス名を固定することが重要です。設定の問題の多くはインターフェイスの名前が変わってしまうことが原因です。

どのデバイスがどの名前になるかは udev によって決まります。Systemd v197 から Predictable Network Interface Names が導入され、ネットワークデバイスに固定された名前を自動的に割り当てるようになりました。現在、インターフェースの名前は enp0s25 のように、先頭に en (イーサネット) wl (WLAN) ww (WWAN) が付き、後ろに自動生成された識別子が付くようになっています。この名前の付け方を止めさせるにはカーネルコマンドラインに net.ifnames=0 を追加してください。

ノート: インターフェイスの命名方法を変更する時は、ネットワークに関する全ての設定ファイルや、systemd のカスタムユニットファイルなども変更することを忘れないでください。特に、netctl の固定プロファイルを有効にしている場合は、netctl reenable profile を実行してサービスファイルを更新してください。

現在のデバイス名を取得

現在の NIC の名前は sysfsip link で確認できます。例:

$ ls /sys/class/net
lo enp0s3
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:23:6f:3a brd ff:ff:ff:ff:ff:ff

無線デバイスの名前は iw dev で取得できます。詳しくはワイヤレス設定#情報を取得するを参照。

デバイス名の変更

udev ルールを作ることで名前を手動で定義してデバイス名を変更することができます。例:

/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="net0"

上記のルールは起動時に自動的に適用されます。

注意事項:

  • カードの MAC アドレスを取得するには、次のコマンドを使ってください: cat /sys/class/net/device-name/address
  • udev ルールでは小文字の16進数を使うようにしてください。大文字は使ってはいけません。

ネットワークカードに MAC が動的に割り当てられている場合は、DEVPATH を使うことができます。例:

/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", DEVPATH=="/devices/platform/wemac.*", NAME="int"
SUBSYSTEM=="net", DEVPATH=="/devices/pci*/*1c.0/*/net/*", NAME="en"

ルールは起動時に複数回実行されることがあるので、デバイスのパスは新しいデバイス名と古いデバイス名両方にマッチする必要があります。例えば、2番目のルールで、"/devices/pci*/*1c.0/*/net/enp*" と設定すると困ったことになります。名前が en に変更されるとマッチしなくなるからです。システムのデフォルトルールだけが再度適用され、名前が enp1s0 などに戻ります。

ルールをテストしたい場合、ユーザー空間から直接テストすることができます (例: udevadm --debug test /sys/DEVPATH)。名前を変更する前にインターフェイスは落としておいてください (例: ip link set down enp1s0)。

ノート: 固定の名前を付けるときに "ethX" や "wlanX" というような名前を使ってはいけません、起動時にカーネルと udev で競合状態が発生する可能性があります。代わりに、カーネルではデフォルトで使われないインターフェイス名を使うと良いでしょう、例: net0, net1, wifi0, wifi1。詳細は systemd のドキュメントを参照してください。

伝統的なデバイス名に戻す

eth0 などの伝統的なインターフェイス名に戻したい場合、次のコマンドで Predictable Network Interface Names を無効にできます:

# ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

MTU とキューの長さの設定

udev ルールを使って手動で定義することでデバイスの MTU とキューの長さを変更することができます。例:

/etc/udev/rules.d/10-network.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wl*", ATTR{mtu}="1480", ATTR{tx_queue_len}="2000"

ネットワークインターフェースの有効化・無効化

ネットワークインターフェースを有効化・無効化するには以下のコマンドを使います:

# ip link set eth0 up
# ip link set eth0 down

結果を確認するには:

$ ip link show dev eth0
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT qlen 1000
...
ノート: デフォルトルートが eth0 インターフェイスを使っている場合、インターフェイスを落とすとルートも削除されます。インターフェイスを再度立ち上げてもデフォルトルートは自動的には再確立されません。再確立する方法は #手動で割り当てる を参照。

IP アドレスの設定

警告: 一つの方法のみを使ってネットワークを管理してください。複数の方法を使うと競合する恐れがあります。

2つ選択肢があります: DHCP を使った動的に割り当てられるアドレスか、不変の"固定"アドレスです。アプリケーション一覧#ネットワーク管理も参照してください。

動的 IP アドレス

systemd-networkd

systemd による systemd-networkd を使って DHCP を簡単に設定することができます。systemd-networkd#基本的な DHCP ネットワーク を見てください。

dhcpcd

dhcpcd は Arch Linux の ISO で DHCP を設定するのに使われているデフォルトのクライアントです。これは様々な DHCP クライアントオプションの設定が可能な強力なツールです。インターフェース用に起動する方法は dhcpcd#実行 を参照してください。

dhclient

dhclient は Internet Systems Consortium の DHCP クライアントです。dhclient@interface.service有効化してください。interface は有線の#デバイス名です。詳しくは dhclient(8)dhclient.conf(5) を見てください。

netctl

netctl は、ユーザーが作成したプロファイルを通してネットワークの接続を設定・管理する CLI ベースのツールです。netctl#サンプルプロファイル で示されている例のようにプロファイルを作成し、netctl#基本的な方法で述べられているようにして有効化してください。

固定 IP アドレス

Arch Linux に存在するネットワークツールのほとんどで固定アドレスを設定することができます。どのツールを選ぶかに関わらず、おそらく以下の情報が準備に必要になるでしょう:

プライベートネットワークを使っている場合、IP アドレスには 192.168.*.* を、サブネットマスクには 255.255.255.0 を、ブロードキャストアドレスには 192.168.*.255 を使う方が安全です。ゲートウェイは通例 192.168.*.1192.168.*.254 です。

警告:
  • 手動で割り当てた IP アドレスと DHCP によるアドレスが衝突しないように注意してください。このフォーラムスレッド を参照。
  • ルーターを使わずに Windows マシンとインターネット接続を共有する場合、LAN の問題を避けるために両方のコンピュータで固定 IP アドレスを使うようにしてください。
ヒント: アドレスは ipcalc を用いて計算することができます。#アドレス計算を参照。

netctl

固定 IP の netctl プロファイルを作成するには、IP=static オプションを設定し、AddressGatewayDNS も同様に設定してください。 netctl#有線を見てください。

systemd-networkd

systemd により提供される systemd-networkd サービスは、シンプルな設定ファイルを使って固定 IP をセットアップすることができます。 systemd-networkd#有線アダプタで固定 IP を使用を見てください。

dhcpcd

dhcpcd#Static profile を見てください。

手動で割り当てる

iproute2 のみを使って固定 IP を手動でセットアップすることができます。この方法では再起動すると設定が消えるので、接続設定のテストするためのよい方法になります。まずネットワークインターフェースを有効化します:

# ip link set interface up

コンソールから固定 IP アドレスを割り当てます:

# ip addr add IP_address/subnet_mask broadcast broadcast_address dev interface

そしてゲートウェイ IP アドレスを追加します:

# ip addr add 192.168.1.2/24 broadcast 192.168.1.255 dev interface

例:

# ip link set eth0 up
# ip addr add 192.168.1.2/24 broadcast 192.168.1.255 dev eth0
# ip route add default via 192.168.1.1
ノート: RTNETLINK answers: Network is unreachable というメッセージが表示された場合、ルート生成を次の2つのに分けてみてください:
# ip route add 192.168.1.1 dev eth0
# ip route add default via 192.168.1.1 dev eth0

上記の手順を取り消すには (例えば動的 IP に切り替える前に)、まず割り当てた IP アドレスをすべて削除します:

# ip addr flush dev interface

その次に割り当てたゲートウェイをすべて削除します:

# ip route flush dev interface

そして最後にインターフェースを無効化します:

# ip link set interface down

オプションについての詳細は ip(8) の man ページを見てください。これらのコマンドはスクリプトと systemd ユニット使って自動化できます

アドレス計算

ipcalc パッケージによって提供される ipcalc を使うことで、より高度な設定のために、IP ブロードキャスト、ネットワーク、ネットマスク、ホストの範囲を計算することができます。例えば、firewire ごしのイーサネットを使って Windows マシンと Arch を接続している場合、セキュリティやネットワークの管理のために、ネットマスクとブロードキャストが設定されたネットワークに置くことでその2つのマシンだけがネットワークが使えるようになります。

このためにネットマスクとブロードキャストアドレスを計算するには、ipcalc を使って、arch の firewire nic の IP 10.66.66.1 で計算して、ホストが2つだけのネットワークを作成させます。

$ ipcalc -nb 10.66.66.1 -s 1
Address:   10.66.66.1

Netmask:   255.255.255.252 = 30
Network:   10.66.66.0/30
HostMin:   10.66.66.1
HostMax:   10.66.66.2
Broadcast: 10.66.66.3
Hosts/Net: 2                     Class A, Private Internet

Tips and tricks

ラップトップのための ifplugd

ヒント: dhcpcd は同じ機能を設定不要で提供します。

公式リポジトリにある ifplugd は、ケーブルが接続された時にイーサネットデバイスを自動で設定し、ケーブルが抜かれた時に自動で設定を解除するデーモンを提供します。これはオンボードのネットワークアダプタを持っているラップトップで役に立ちます。なぜならケーブルが実際に接続されているときだけインターフェースを設定するからです。他にも、ネットワークをリスタートしたいがコンピュータの再起動をしたりシェルを使いたくないときに役に立ちます。

デフォルトでは ifplugd は eth0 デバイスで動作するように設定されています。デバイスや遅延時間などは /etc/ifplugd/ifplugd.conf で設定することができます。

ノート: netctl パッケージに netctl-ifplugd@.service が含まれています、もしくは ifplugd パッケージの ifplugd@.service を使うことができます。使用例: # systemctl enable ifplugd@eth0.service

ボンディングと LAG

netctl#ボンディング を見てください。

IP アドレスエイリアス

ひとつのネットワークインターフェースに複数の IP アドレスを加えることを IP エイリアスと呼びます。これをすることで、ネットワークのひとつのノードでネットワークに複数接続することができ、それぞれを別々に使うことができます。基本的に Web・FTP サーバーの仮想ホスティングや、サーバーの再構成 (他のマシンを更新しない、ネームサーバで有用) に使われます。

iproute2 ツールを使って NIC のエイリアスを手動で設定するには次を実行:

$ ip addr add 192.168.1.10/24 dev enp1s0 label enp1s0:1

設定したエイリアスを削除するには:

$ ip addr del 192.168.1.10/24 dev enp1s0:1

サブネットへ向かうパケットはデフォルトでプライマリエイリアスを使います。送信先 IP がセカンダリエイリアスのサブネット内のものである場合は、送信元 IP がそれぞれに設定されます。複数の NIC が存在する場合を考えた場合、ip route でデフォルトルートを列挙することができます。

MAC/ハードウェアアドレスを変更する

MAC アドレス偽装を見てください。

インターネット共有

インターネット共有を見てください。

ルーター設定

ルーターを見てください。

プロミスキャスモード

プロミスキャスモードを有効にすると (無線) NIC は受信したトラフィックを全て OS に転送します。反対に"ノーマルモード"では受信されるべきでないとき NIC はフレームをドロップします。プロミスキャスモードは高度なネットワークのトラブルシューティングやパケットスニッフィングなどのために使われます。

/etc/systemd/system/promiscuous@.service
[Unit]
Description=Set %i interface in promiscuous mode
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set dev %i promisc on
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

インターフェイス eth0 でプロミスキャスモードを有効にしたい場合、promiscuous@eth0.service を有効化してください。

トラブルシューティング

ケーブルモデムのコンピュータを交換

ほとんどの国内 ISP (videotron など) はネットワークインターフェイスの MAC アドレスを使って、認識するクライアント PC を一つだけに絞るようにケーブルモデムを設定しています。ケーブルモデムが初めて PC (やケーブルモデムに接続された機器) の MAC アドレスを認識すると、それ以外の MAC アドレスには頑として返答しなくなります。その PC を別の PC (またはルーター) に交換すると、新しい PC (やルーター) ではケーブルモデムを使うことができません。新しい PC (やルーター) の MAC アドレスは昔の PC の MAC アドレスと異なるからです。新しい PC を認識させるためにケーブルモデムをリセットするには、ケーブルモデムの電源を一度切ってから再度入れる必要があります。ケーブルモデムが再起動してオンラインになったら (通知ランプがおとなしくなるのでわかります)、新しく接続した PC を再起動して DHCP のリクエストを行ったり、手動で新しい DHCP リースをリクエストしてください。

この方法が上手くいかない場合、元のマシンの MAC アドレスをクローンする必要があります。MAC/ハードウェアアドレスを変更するを参照。

TCP ウィンドウスケーリングの問題

TCP パケットのヘッダには"ウィンドウ"値が含まれており、他のホストが返答として送信できるデータの量が示されています。この値は16ビットでしか表現できないので、ウィンドウサイズは最大 64 Kb です。TCP パケットはしばらくの間キャッシュに保存されますが (再度使われます)、メモリの量は(少なくとも昔は)限られているので、すぐに使いきってしまうことがあります。

1992年、利用できるメモリの量が大幅に増えるのにあわせて、この状態を改善するために RFC 1323: ウィンドウスケーリングが書かれました。全てのパケットに含まれている"ウィンドウ"の値を、スケールファクタ (Scale Factor) を定義することで、接続の初期段階で変更します。8ビットのスケールファクタなら、ウィンドウは 64Kb の32倍まで増やすことができます。

壊れたルーターやファイアウォールはスケールファクタを 0 に書き換えてしまうためホスト間での不和が発生します。Linux カーネル 2.6.17 ではスケールファクタを上げるための新しい算出方式が導入されましたが、それによってルーターやファイアウォールが壊れているときの影響が増え、極端に接続が遅かったり、全く接続できない状態が生まれています。

問題の診断方法

まず最初に問題をはっきりさせましょう: この問題は少々厄介です。ある条件下では、TCP 接続 (HTTP, FTP, ...) を全く使えないのに、他の条件では、特定の (ごく少数の) ホストとは通信できるというようなことが起こります。

この問題が発生していても、dmesg の出力に問題はなく、ログに異常は見られず、そして ip addr では通常状態だと報告されます。全てが問題ないように(表面上は)見えるわけです。

ウェブサイトが表示できないのに、ping は通る場合、この問題が発生している可能性は十分あるでしょう: ping は TCP の問題に影響されない ICMP を使っているためです。

Wireshark を使ってみてください。UDP と ICMP の接続は通るのに (ホストが海外の) TCP 接続は通らないはずです。

修復方法 (悪い方法)

無理やり修正する方法として、スケールファクタの計算に使われている tcp_rmem の値を変更することができます。ほとんどのホストではこれで問題ありませんが、全てのホストで上手く行くとは保証できません。特にホストが遠い場合に問題が起きやすいです。

# echo "4096 87380 174760" > /proc/sys/net/ipv4/tcp_rmem

修復方法 (良い方法)

ウィンドウスケーリングを無効化してしまいます。ウィンドウスケーリングは TCP の素晴らしい機能なので、無効化してしまうのは忍びないですが、ルーターを修復できない場合は致し方ありません。ウィンドウスケーリングを無効化する方法は複数存在します。一番安牌の (ほとんどのカーネルで動作する) 方法としては /etc/sysctl.d/99-disable_window_scaling.conf に以下の行を追加してください (sysctl を参照):

net.ipv4.tcp_window_scaling = 0

修復方法 (最良の方法)

この問題の原因はルーターやファイアウォールの動作がおかしいせいなので、それらを変えてしまいましょう。専用の DSL ルーターを使っている場合に問題になることがあるという報告もあります。

詳細

このセクションは LWN の記事 TCP window scaling and broken routers と Kernel Trap の記事 Window Scaling on the Internet を基にしています。

また、LKML に関連するスレッドが複数存在します。

Realtek が使えない / WOL の問題

Realtek 8168 8169 8101 8111(C) が搭載されている NIC (カード/オンボード) を使っている場合、起動時に NIC が無効化され、接続ランプが付かないという問題が発生することがあります。この問題は基本的に Windows をインストールしていると起こります (デュアルブート環境)。Windows における公式の Realtek ドライバー (2007年5月以降) の使用が問題の原因です。新しいドライバーでは Windows のシャットダウン時に NIC を無効化することによって Wake-On-LAN 機能を無効化しているのですが、これはつまり、Windows を起動するまでは NIC が無効のままになってしまうということです。Windows が起動するときに接続ランプが付いて、シャットダウン時に消えるようであれば、ずばりです。通常、システムの電源が入っていれば、(POST の間でも) 接続ランプは点きっぱなしになっています。この問題は新しいドライバーが入っていない他のオペレーティングシステムでも顔を出します (例: Live CD)。問題の解決方法は以下の通りです:

方法 1 - Linux で NIC を直接有効にする

#ネットワークインターフェースの有効化・無効化に従ってインターフェイスを有効化してください。

方法 2 - Windows ドライバをロールバック/変更する

Windows の NIC ドライバーを Microsoft が提供しているドライバーに戻したり、2007年5月以前の Realtek 公式ドライバーに戻すことができます (ハードウェアに付属している CD を使用)。

方法 3 - Windows ドライバで WOL を有効にする

一番簡単な方法はおそらく Windows ドライバーで WOL の設定を変更することです。この方法はシステム全体で適用され、Arch 以外でも問題が解決します (例: ライブ CD や他のオペレーティングシステム)。Windows で、デバイスマネージャを開いて、Realtek ネットワークアダプタを探してダブルクリックしてください。"Advanced" タブ下、"Wake-on-LAN after shutdown" を "Enable" に変更してください。

Windows XP の場合
マイコンピュータを右クリックして"プロパティ"を選択
--> Hardware tab
  --> Device Manager
    --> Network Adapters
      --> "double click" Realtek ...
        --> Advanced tab
          --> Wake-On-Lan After Shutdown
            --> Enable
ノート: 新しい Realtek の Windows ドライバー (Realtek 8111/8169 LAN Driver v5.708.1030.2008 で確認。GIGABYTE のサイトから入手できる 2009/01/22 no ドライバー) だとオプションが多少変わっていることがあります。例: Shutdown Wake-On-LAN --> Enable。このオプションを Disable にしても効果はないようです (Windows のシャットダウン時にリンクの光が消えることで確認できます)。あまり綺麗な方法ではありませんが、Windows を起動してからシステムをリセットする (無理やり再起動あるいはシャットダウンさせる) ことで Windows ドライバーに LAN を無効化する暇を与えないことで対処できます。Windows をまた起動してシャットダウンするまでは、リンクの光は消えないで POST 後も LAN アダプタにアクセスできるようになります。

方法 4 - 新しい Realtek Linux ドライバを使う

Realtek のサイトに Linux 用の Realtek カードの新しいドライバーが存在します (テストしていませんがおそらく問題が解決されるはずです)。

方法 5 - BIOS/CMOS で LAN Boot ROM を有効にする

BIOS/CMOS で Integrated Peripherals --> Onboard LAN Boot ROM --> Enabled を設定することで、Windows のドライバーが OS のシャットダウン時に無効化するのとは関係なく、システムの起動時に Realtek の LAN チップが有効化されます。

ノート: 上記の方法は GIGABYTE GA-G31M-ES2L マザーボードの BIOS バージョン F8 (2009/02/05 に公開) で何回か確認済みです。

Atheros チップセットで eth0 がない

Atheros のイーサネットチップセットは設定をしないと動作しないことがあります (2014年2月のインストールメディアを使う場合)。この問題を解決するには AUR から backports-patchedAUR パッケージをインストールしてください。

Broadcom BCM57780

この Broadcom チップセットはモジュールをロードする順番を指定しないと上手く動作しないことが時々あります。モジュールは broadcomtg3 であり、前者を最初にロードする必要があります。

コンピューターにこのチップセットが載っている場合、以下の手順に従ってください:

  • lspci の出力で NIC を確認:
$ lspci | grep Ethernet
02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe (rev 01)
  • 有線ネットワークが機能しない場合、ケーブルを切断して以下を (root で) 実行:
# modprobe -r tg3
# modprobe broadcom
# modprobe tg3
  • ネットワークケーブルを接続。これで問題が解決する場合 broadcomtg3 を (この順番で) /etc/mkinitcpio.confMODULES 行に追加することで設定を永続化できます:
MODULES=".. broadcom tg3 .."
  • initramfs を再生成:
# mkinitcpio -p linux
  • もしくは、/etc/modprobe.d/broadcom.conf を作成:
softdep tg3 pre: broadcom
ノート: 以上の方法は、BCM57760 など、他のチップセットでも使えることがあります。

Realtek RTL8111/8168B

# lspci | grep Ethernet
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)

このアダプタは r8169 モジュールによって認識されます。しかしながら、使われているチップによって、接続が出来たりできなかったりすることがあります。そのような場合は、公式リポジトリにある r8168 を使うことで安定した接続をすることができます。r8169ブラックリストに入れて、r8168udev によって自動でロードされない場合、カーネルモジュール#ロードを見てください。

このアダプタのいくつかのリビジョンのドライバにおけるもう1つの欠陥は IPv6 サポートが貧弱であることです。Web ページがハングしたり、回線が遅くなったりした場合は、IPv6#機能を無効にするが参考になります。

Gigabyte マザーボードと Realtek 8111/8168/8411

Gigabyte GA-990FXA-UD3 などのマザーボードでは IOMMU をオフにして (デフォルトでオフになっていることもあります) 起動を行うと、ネットワークインターフェイスが不安定になって、接続が出来なかったり、通信速度が遅くなったりします。オンボードの NIC だけでなく、コンピュータに接続した他の PCI NIC でも起こりえます。IOMMU の設定はマザーボードに接続された全てのネットワークインターフェイスに影響を与えるからです。IOMMU を有効にしてインストールメディアで起動すると AMD I-10/xhci のページフォールトが数秒だけ表示されますが、その後通常通り起動して、オンボードの NIC が (r8169 モジュールを使用する場合でも) 完全に機能するようになるはずです。

インストール時にブートプロセスを設定する場合、起動時のエラーメッセージを排除して USB 3.0 を機能させるためにカーネルパラメータiommu=soft を追加してください。

参照