「ネットワーク設定」の版間の差分
(誤字修正 (ゼロコンフィグレーションネットワーク -> ゼロコンフィギュレーションネットワーク)) |
|||
389行目: | 389行目: | ||
他のマシンが名前でホストを計算できるようにするには、それぞれの {{ic|/etc/hosts}} ファイルを手動で設定するか名前を解決するサービスが必要です。 |
他のマシンが名前でホストを計算できるようにするには、それぞれの {{ic|/etc/hosts}} ファイルを手動で設定するか名前を解決するサービスが必要です。 |
||
− | [[BIND]] や [[Unbound]] などの DNS サーバーを設定するのは過剰で、{{ic|/etc/hosts}} を手動で設定するのは面倒というような場合、ネットワークにホストを動的に追加・削除できるような柔軟性が欲しいときは、ゼロコンフィ |
+ | [[BIND]] や [[Unbound]] などの DNS サーバーを設定するのは過剰で、{{ic|/etc/hosts}} を手動で設定するのは面倒というような場合、ネットワークにホストを動的に追加・削除できるような柔軟性が欲しいときは、ゼロコンフィギュレーションネットワークを使ってローカルネットワークのホストネーム解決を処理することができます。2つの選択肢が存在します: |
*[[Samba]] は Microsoft の NetBIOS を使ってホストネーム解決を提供します。{{Pkg|samba}} をインストールして {{ic|nmbd.service}} サービスを有効にするだけです。{{ic|nmbd}} を走らせることで、Windows, OS X, Linux が動作しているコンピュータはあなたのマシンを見つけることができるようになります。 |
*[[Samba]] は Microsoft の NetBIOS を使ってホストネーム解決を提供します。{{Pkg|samba}} をインストールして {{ic|nmbd.service}} サービスを有効にするだけです。{{ic|nmbd}} を走らせることで、Windows, OS X, Linux が動作しているコンピュータはあなたのマシンを見つけることができるようになります。 |
2015年10月25日 (日) 13:18時点における版
このページではネットワークの有線接続を設定する方法を説明しています。無線ネットワークを設定する必要がある場合はワイヤレス設定のページを見て下さい。
目次
接続の確認
多くの場合、インストールのプロセスでは動作するネットワーク設定がすでに作られています。それを確認するには、次のコマンドを実行してください:
$ ping -c 3 www.google.com
PING www.l.google.com (74.125.224.146) 56(84) bytes of data. 64 bytes from 74.125.224.146: icmp_req=1 ttl=50 time=437 ms 64 bytes from 74.125.224.146: icmp_req=2 ttl=50 time=385 ms 64 bytes from 74.125.224.146: icmp_req=3 ttl=50 time=298 ms --- www.l.google.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 298.107/373.642/437.202/57.415 ms
これが動作するならば、あなたがすることは下のオプションから設定をカスタマイズするだけです。
上のコマンドが知らないホストだとうったえる場合は、そのメッセージはあなたのマシンではドメインの解決ができなかったことを意味しています。それはおそらくあなたのサービスプロバイダやルーター・ゲートウェイに関連しています。マシンがインターネットにアクセスできることを証明するために固定 IP アドレスに ping してみましょう。
$ ping -c 3 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 64 bytes from 8.8.8.8: icmp_req=2 ttl=53 time=72.5 ms 64 bytes from 8.8.8.8: icmp_req=3 ttl=53 time=70.6 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 52.975/65.375/72.543/8.803 ms
8.8.8.8
に ping することができても www.google.com
に ping できない場合は、DNS の設定を確認してください。詳しくは resolv.conf を見て下さい。
ホストネームの設定
hostname とは、ネットワーク上でマシンを識別するために作られる唯一の(ユニークな)名前です。/etc/hostname
に設定します。このファイルにはシステムのドメイン名を含めることもできます。ホストネームを設定するには、次を実行して下さい:
# hostnamectl set-hostname myhostname
このコマンドで /etc/hostname
に myhostname
が書き込まれます。詳細は man 5 hostname
や man 1 hostnamectl
を見て下さい。
(再起動せずに)一時的にホストネームを設定するには、inetutils にある hostname コマンドを使って下さい:
# hostname myhostname
デバイスドライバ
ドライバの状態の確認
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
ドライバがきちんとロードされている場合は次のセクションはスキップしてください。そうでないならば、あなたの使っているモデルのために必要なモジュールを知る必要があります。
デバイスモジュールのロード
チップセットに必要なモジュール・ドライバを Google で検索してください。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
デバイス名の変更
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 ルールでは小文字の十六進数を使うようにしてください。大文字は使ってはいけません。
ネットワークカードに 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
)。
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 を設定するのに使われています。インターフェイス名を引数として渡して、サービスファイル dhcpcd@.service
を使用するか、もしくは dhcpcd interface
を実行して手動で起動してください。
固定 IP アドレス
あなたのネットワークに固定の IP アドレスを割り当てたいと思う理由は様々あるでしょう。例えば、不変のアドレスを得ることである程度の予測可能性を得ることができたり、もしくは DHCP サーバーを利用する必要がなくなります。
Arch Linux に存在するネットワークツールのほとんどで固定アドレスを設定することができます。例えば netctl, systemd-networkd, dhcpcd を見て下さい。
以下は手動で固定 IP アドレスを設定する方法です。あなたが必要なもの:
- 固定 IP アドレス
- サブネットマスク
- ブロードキャストアドレス
- ゲートウェイの IP アドレス
- ネームサーバ (DNS) の IP アドレス。resolv.conf を参照。
プライベートネットワークを使っている場合、IP アドレスには 192.168.*.*
を、サブネットマスクには 255.255.255.0
を、ブロードキャストアドレスには 192.168.*.255
を使う方が安全です。ゲートウェイは通例 192.168.*.1
か 192.168.*.254
です。
手動で割り当てる
この方法では再起動すると設定は消えます。ネットワークインターフェースを有効化:
- ip link set interface up
コンソールから固定 IP アドレスを割り当てることができます:
# ip addr add IP_address/subnet_mask broadcast broadcast_address dev interface
例:
# ip addr add 192.168.1.2/24 broadcast 192.168.1.255 dev interface
オプションについて詳しくは man ip
を見て下さい。
あなたのゲートウェイ IP アドレスを次のように追加します:
# ip route add default via default_gateway
例:
# ip route add default via 192.168.1.1
systemd-networkd
systemd-networkd#有線アダプタで固定 IP を使用 を見て下さい。
systemd サービス
まず systemd サービスの設定ファイルを作成してください (<interface>
は適切なインターフェイス名に置き換えて下さい):
/etc/conf.d/net-conf-interface
address=192.168.1.2 netmask=24 broadcast=192.168.1.255 gateway=192.168.1.1
ネットワーク起動・停止スクリプトを作成してください:
/usr/local/bin/net-up
#!/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"
/usr/local/bin/net-down
#!/bin/bash ip addr flush dev "$1" ip route flush dev "$1" ip link set dev "$1" down
両方のスクリプトに実行可能属性を付与します:
# chmod +x /usr/local/bin/net-{up,down}
systemd サービスファイル:
/etc/systemd/system/network@.service
[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 [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 [Install] WantedBy=multi-user.target
ユニットを有効にして起動してください (インターフェイス名を指定してください):
# systemctl enable network@interface.service # systemctl start network@interface.service
アドレス計算
ipcalc パッケージによって提供される ipcalc
を使うことで、より高度な設定のために、IP ブロードキャスト、ネットワーク、ネットマスク、ホストの範囲を計算することができます。例えば、firewire ごしのイーサネットを使って Windows マシンと Arch を接続している場合、セキュリティやネットワークの管理のために、ネットマスクとブロードキャストが設定されたネットワークに置くことでその2つのマシンだけがネットワークが使えるようになります。このためにネットマスクとブロードキャストアドレスを計算するには、ipcalc を使って、arch の firewire nic の IP 10.66.66.1 で計算して、ipcalc にホストが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
設定のロード
設定をテストするには、コンピュータを再起動するか、適切な systemd サービスをリロードしてください。そして、接続に問題がないか調べるために、ゲートウェイや DNS サーバー、ISP プロバイダ、その他インターネットのサイトなどに ping をしてください、例えば:
$ ping -c 3 www.google.com
追加設定
ラップトップのための ifplugd
公式リポジトリにある ifplugd は、ケーブルが接続された時にイーサネットデバイスを自動で設定し、ケーブルが抜かれた時に自動で設定を解除するデーモンを提供します。これはオンボードのネットワークアダプタを持っているラップトップで役に立ちます。なぜならケーブルが実際に接続されているときだけインターフェースを設定するからです。他にも、ネットワークをリスタートしたいがコンピュータの再起動をしたりシェルを使いたくないときに役に立ちます。
デフォルトでは ifplugd は eth0
デバイスで動作するように設定されています。デバイスや遅延時間などは /etc/ifplugd/ifplugd.conf
で設定することができます。
ボンディングと LAG
netctl#ボンディング を見て下さい。
IP アドレスエイリアス
ひとつのネットワークインターフェースに複数の IP アドレスを加えることを IP エイリアスと呼びます。これをすることで、ネットワークのひとつのノードでネットワークに複数接続することができ、それぞれを別々に使うことができます。基本的に Web・FTP サーバーの仮想ホスティングや、サーバーの再構成 (他のマシンを更新しない、ネームサーバで有用) に使われます。
サンプル
公式リポジトリから netctl をインストールする必要があります。
設定を用意します:
/etc/netctl/mynetwork
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
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
MAC/ハードウェアアドレスを変更する
MAC アドレス偽装を見て下さい。
インターネット共有
インターネット共有を見て下さい。
ルーター設定
ルーターを見て下さい。
ローカルネットワークのホストネーム解決
ローカル環境でホストネーム解決をする前に事前にホストネームの設定をしてください。
$ ping hostname
PING hostname (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
他のマシンが名前でホストを計算できるようにするには、それぞれの /etc/hosts
ファイルを手動で設定するか名前を解決するサービスが必要です。
BIND や Unbound などの DNS サーバーを設定するのは過剰で、/etc/hosts
を手動で設定するのは面倒というような場合、ネットワークにホストを動的に追加・削除できるような柔軟性が欲しいときは、ゼロコンフィギュレーションネットワークを使ってローカルネットワークのホストネーム解決を処理することができます。2つの選択肢が存在します:
- Samba は Microsoft の NetBIOS を使ってホストネーム解決を提供します。samba をインストールして
nmbd.service
サービスを有効にするだけです。nmbd
を走らせることで、Windows, OS X, Linux が動作しているコンピュータはあなたのマシンを見つけることができるようになります。
- Avahi は zeroconf を使ってホストネーム解決を提供します。Bonjour としても知られています。Samba と比べてやや複雑な設定が必要です: 詳しくは Avahi#ホスト名の解決 を見て下さい。Avahi デーモンを動かすことで、OS X や Linux が動作しているコンピュータはあなたのマシンを見つけることができるようになります。Windows には Avahi クライアントやデーモンが備わっていません。
プロミスキャスモード
プロミスキャスモードを有効にすると (無線) 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
でプロミスキャスモードを有効にしたい場合、次を実行してください:
# systemctl enable 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 を直接有効にする
次のコマンドの出力からイーサネット NIC の名前を取得してください:
$ ip a
NIC の名前を使って root でデバイスを立ち上げて下さい:
# ip link set dev <NIC_name> up
例えば <NIC_name> が enp7s0 の場合:
# ip link set dev enp7s0 up
上記のコマンドでカードの電源が入れば、ip link
の出力でインターフェイスが state UP
になっていることを確認できます。
方法 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 によって自動でロードされない場合、ユーザー定義のモジュールリストに追加してください。