「ネットワーク設定」の版間の差分
(同期) |
(同期) |
||
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|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]] とは、ネットワーク上でマシンを識別するために作られる唯一の(ユニークな)名前で |
+ | [[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'' |
||
− | + | 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 modules: atl1}} |
|
次に、{{ic|dmesg <nowiki>|</nowiki> grep ''module_name''}} でドライバがロードされたかチェックします。例: |
次に、{{ic|dmesg <nowiki>|</nowiki> grep ''module_name''}} でドライバがロードされたかチェックします。例: |
||
103行目: | 128行目: | ||
=== デバイスモジュールのロード === |
=== デバイスモジュールのロード === |
||
− | チップセットに必要なモジュール・ドライバを |
+ | チップセットに必要なモジュール・ドライバをインターネットで検索してください。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 アドレスを取得するには、次のコマンドを使って |
+ | * カードの 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#ロードする前にルールをテストする|テスト]]したい場合、ユーザー空間から直接テストすることができます |
+ | ルールを[[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 を設定するのに使われてい |
+ | [[dhcpcd]] は Arch Linux の ISO で DHCP を設定するのに使われているデフォルトのクライアントです。これは様々な DHCP クライアントオプションの設定が可能な強力なツールです。インターフェース用に起動する方法は [[dhcpcd#実行]] を参照してください。 |
− | === |
+ | ==== 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 アドレス === |
||
− | + | 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=28&t=16797 このフォーラムスレッド] を参照。 |
* 手動で割り当てた IP アドレスと DHCP によるアドレスが衝突しないように注意してください。[http://www.raspberrypi.org/forums/viewtopic.php?f=28&t=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> |
||
− | + | # 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 |
||
− | |||
− | ==== アドレス計算 ==== |
||
− | + | このためにネットマスクとブロードキャストアドレスを計算するには、{{ic|ipcalc}} を使って、arch の firewire nic の IP {{ic|10.66.66.1}} で計算して、ホストが2つだけのネットワークを作成させます。 |
|
− | {{hc|$ ipcalc -nb 10.66.66.1 -s 1| |
+ | {{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]] を使ってみて |
+ | [[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}} を[[ |
+ | このアダプタは {{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時点における版
このページではネットワークの有線接続を設定する方法を説明しています。無線ネットワークを設定する必要がある場合はワイヤレス設定のページを見てください。
目次
- 1 接続の確認
- 2 ホストネームの設定
- 3 ローカルネットワークのホストネーム解決
- 4 デバイスドライバ
- 5 ネットワークインターフェース
- 6 IP アドレスの設定
- 7 Tips and tricks
- 8 トラブルシューティング
- 9 参照
接続の確認
多くの場合、インストールするだけで動作するネットワーク設定がすでに作られています。それを確認するには、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.conf
の hosts
行も確認してください。
上記どちらの ping も失敗する場合、まずケーブルに問題がないか確認してから更に詳しい診断を行なってください。
ホストネームの設定
hostname とは、ネットワーク上でマシンを識別するために作られる唯一の(ユニークな)名前であり、/etc/hostname
に設定します (詳しくは hostname(5) と hostname(7) を参照)。このファイルにはシステムのドメイン名を含めることもできます。ホストネームを設定するには /etc/hostname
を編集し、myhostname
の1行を入れてください:
/etc/hostname
myhostname
上記の方法の代わりに、hostnamectl(1) を使うことができます:
# hostnamectl set-hostname myhostname
hostname を一時的に (再起動するまで) 設定するには、inetutils の hostname(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) ファイルを編集する、または
- ホストネームを解決するサービスを有効化する。
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
ではなくその永続アドレスを使ってください。
デバイスドライバ
ドライバの状態の確認
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
を追加してください。
現在のデバイス名を取得
現在の NIC の名前は sysfs
や ip 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
)。
伝統的なデバイス名に戻す
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 ...
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 アドレス
- サブネットマスク、または場合によっては CIDR の表記。例えば
/24
は255.255.255.0
の CIDR 表記です。 - ブロードキャストアドレス
- ゲートウェイの IP アドレス
- ネームサーバ (DNS) の IP アドレス。resolv.conf を参照。
プライベートネットワークを使っている場合、IP アドレスには 192.168.*.*
を、サブネットマスクには 255.255.255.0
を、ブロードキャストアドレスには 192.168.*.255
を使う方が安全です。ゲートウェイは通例 192.168.*.1
か 192.168.*.254
です。
netctl
固定 IP の netctl プロファイルを作成するには、IP=static
オプションを設定し、Address
、Gateway
、DNS
も同様に設定してください。 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
上記の手順を取り消すには (例えば動的 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
公式リポジトリにある ifplugd は、ケーブルが接続された時にイーサネットデバイスを自動で設定し、ケーブルが抜かれた時に自動で設定を解除するデーモンを提供します。これはオンボードのネットワークアダプタを持っているラップトップで役に立ちます。なぜならケーブルが実際に接続されているときだけインターフェースを設定するからです。他にも、ネットワークをリスタートしたいがコンピュータの再起動をしたりシェルを使いたくないときに役に立ちます。
デフォルトでは ifplugd は eth0
デバイスで動作するように設定されています。デバイスや遅延時間などは /etc/ifplugd/ifplugd.conf
で設定することができます。
ボンディングと 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
方法 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 チップが有効化されます。
Atheros チップセットで eth0 がない
Atheros のイーサネットチップセットは設定をしないと動作しないことがあります (2014年2月のインストールメディアを使う場合)。この問題を解決するには AUR から backports-patchedAUR パッケージをインストールしてください。
Broadcom BCM57780
この Broadcom チップセットはモジュールをロードする順番を指定しないと上手く動作しないことが時々あります。モジュールは broadcom
と tg3
であり、前者を最初にロードする必要があります。
コンピューターにこのチップセットが載っている場合、以下の手順に従ってください:
- 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
- ネットワークケーブルを接続。これで問題が解決する場合
broadcom
とtg3
を (この順番で)/etc/mkinitcpio.conf
のMODULES
行に追加することで設定を永続化できます:
MODULES=".. broadcom tg3 .."
- initramfs を再生成:
# mkinitcpio -p linux
- もしくは、
/etc/modprobe.d/broadcom.conf
を作成:
softdep tg3 pre: broadcom
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
をブラックリストに入れて、r8168 が udev によって自動でロードされない場合、カーネルモジュール#ロードを見てください。
このアダプタのいくつかのリビジョンのドライバにおけるもう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
を追加してください。