Difference between revisions of "Network Configuration (日本語)"

From ArchWiki
Jump to: navigation, search
m (ホストネームの設定)
m
Line 19: Line 19:
 
{{Article summary heading|関連項目}}
 
{{Article summary heading|関連項目}}
 
{{Article summary wiki|Jumbo Frames}}
 
{{Article summary wiki|Jumbo Frames}}
{{Article summary wiki|Firewalls}}
+
{{Article summary wiki|Firewalls (日本語)}}
 
{{Article summary wiki|Samba}}
 
{{Article summary wiki|Samba}}
 
{{Article summary wiki|Wireless Setup (日本語)}}
 
{{Article summary wiki|Wireless Setup (日本語)}}

Revision as of 09:09, 20 March 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

Contents

接続の確認

多くの場合、インストールのプロセスでは動作するネットワーク設定がすでに作られています。それを確認するには、次のコマンドを実行してください:

Note: -c 3 オプションは3回試行します。詳しくは man ping を見て下さい。
$ 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
Note: 8.8.8.8 は覚えやすい固定アドレスです。このアドレスは Google のプライマリ DNS サーバーのアドレスで、信頼でき、コンテンツフィルタリングやプロクシによってブロックされることが通常ありません。

このアドレスに ping することができたならば、このネームサーバを /etc/resolv.conf ファイルに追加することができます。

ホストネームの設定

hostname とは、ネットワーク上でマシンを識別するために作られる唯一の(ユニークな)名前です。ホストネームを設定するには:

# hostnamectl set-hostname myhostname
Note: いまやあなたは /etc/hosts を編集する必要はありません、systemd は全てのシステムにデフォルトでインストールされ、ホストネームの解決を提供します。

(再起動せずに)一時的にホストネームを設定するには、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 で検索してください。どのモジュールを使うべきか知ったら、それを次のコマンドでロードできます:

# modprobe module_name

起動時に udev が自動で正しいモジュールを検知・ロードしない場合、/etc/modules-load.d/ フォルダに *.conf ファイルとして追加することで、起動毎にモジュールを modprobe でロードする必要がなくなります。例えば、tg3 が使いたいネットワークモジュールの場合:

# tee /etc/modules-load.d/tg3.conf <<< "tg3"

他に、Realtek チップセットを使うカードには 8139too、SiS チップセットを使うカードには sis900 がそれぞれ一般的なモジュールです。

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

永続的なデバイス名

NIC が統合されたマザーボードでは、どれがプライマリ NIC (例: eth0) でどれがセカンダリ NIC (例: eth1) なのか知ることが重要です。設定の問題の多くはユーザーが eth0 のためのネットワーク設定を正しく行なっていないことによりますが、実際は、イーサネットケーブルを eth1 に差し込んでいることもありえます。

どのデバイスがどの名前なのかは Udev によって決まります。udev とモジュラーネットワークドライバではドライバのロードは(デフォルトで)並行して行われます。つまりロードされる順番はランダムです。そのため、再起動した後もネットワークインターフェースのナンバリングが同じ保障はありません。あなたのカードの名前が eth0eth1 どちらかわからないとネットワーク接続を設定することは難しいでしょう。あなたは ifrename を使ってこれを固定することができます。Rename network interfaces を見て下さい。もしくはインターフェースの MAC アドレスに基づいてインターフェースの名前を割り当てる udev ルールを手動で作ることもできます。Udev#Network device を見て下さい。

Note: Systemd は v197 から Predictable Network Interface Names を導入し、ネットワークデバイスに固定的な名前を割り当てるようになりました。現在、インターフェースの名前は enp0s25 のように、先頭に en (イーサネット)、wl (WLAN)、ww (WWAN)、後ろに自動で生成された識別子が付くようになっています。シンボリックリンクを追加することでこの振る舞いを止めさせることができます:
# ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules
以前のバージョンの systemd からアップグレードしたユーザーには自動でこの空のルールファイルが作られます。

現在のデバイス名の取得

現在の NIC 名は sysfs を使って見つけられます:

$ ls /sys/class/net
lo eth0 eth1 firewire0

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

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

# 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 アドレス

手動で DHCP クライアントデーモンを起動する

dhcpcddhcpd ではないことに注意してください。

# dhcpcd eth0
 dhcpcd: version 5.1.1 starting
 dhcpcd: eth0: broadcasting for a lease
 ...
 dhcpcd: eth0: leased 192.168.1.70 for 86400 seconds

これで、ip addr show dev eth0 であなたの inet アドレスが表示されるはずです。

一部の人は、dhcpcd が失敗する一方で (dhclient パッケージの) dhclient が動作するかもしれません。

起動時に DHCP を起動する

あなたのイーサネット接続にシンプルに DHCP を使いたいのならば、(dhcpcd パッケージによって提供される) dhcpcd@.service を使うことができます。

eth0 のために DHCP を有効にするには、次のコマンドを使います:

# systemctl start dhcpcd@eth0

自動的なサービスの起動を有効化するには:

# systemctl enable dhcpcd@eth0

ネットワークカードモジュールよりも先に dhcpd サービスが起動する場合 (FS#30235)、手動であなたのネットワークカードを /etc/modules-load.d/*.conf に追加してください。例えば、あなたの Realtek カードが r8169 のロードを必要としているとしている場合、以下を作成します:

/etc/modules-load.d/realtek.conf
r8169
Tip: ネットワークカードによって使われるモジュールがどれか調べるには、lspci -k を使います。

DHCP を使うがネットワークを起動するときに自動で DNS サーバーを割り当てて欲しくない場合、dhcpcd.conf の最後に以下を加えて下さい:

/etc/dhcpcd.conf
nohook resolv.conf

dhcpcd/etc/resolv.conf にドメインネームサーバを追加するのを止めるには、nooption オプションを使って下さい:

/etc/dhcpcd.conf
nooption domain_name_servers

それからあなたが使いたい DNS ネームサーバを /etc/resolv.conf に加えて下さい。

複数の異なったプロセスで /etc/resolv.conf をコントロールする (例: dhcpcd と VPN クライアント) ために openresolv パッケージを使うこともできます。openresolv を使うために必要な dhcpcd の追加設定はありません。

Note: dhcpcd を使って固定 IP アドレスを持つことも可能です。/etc/conf.d/dhcpcd ファイルを編集して以下のようにしてください (x.x.x.x をあなたの使いたいアドレスに置き換えて下さい):
DHCPCD_ARGS="-q -s x.x.x.x"

固定 IP アドレス

あなたのネットワークに固定の IP アドレスを割り当てたいと思う理由は様々あるでしょう。例えば、不変のアドレスを得ることである程度の予測可能性を得ることができたり、もしくは DHCP サーバーを利用する必要がなくなります。

Note: ルーターを使わずに Windows マシンとインターネット接続を共有する場合、LAN の問題を避けるために両方のコンピュータで固定 IP アドレスを使うようにして下さい。

あなたが必要なもの:

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

手動で割り当てる

コンソールから固定 IP アドレスを割り当てることができます:

# ip addr add <IP address>/<subnet mask> dev <interface>

例:

# ip addr add 192.168.1.2/24 dev eth0
Note: サブネットマスクは CIDR notation を使って明示されます。

オプションについて詳しくは man ip を見て下さい。

あなたのゲートウェイを次のように追加します:

# ip route add default via <default gateway IP address>

例:

# ip route add default via 192.168.1.1

"No such process" エラーが表示された場合、root で ip link set dev eth0 up を実行しなければならないことを意味しています。

systemd を使って起動時に手動接続

このセクションでは systemd を使って手動で接続する方法を説明しています。

Note: 以下の例ではインターフェースの名前として net0 を使っていますが、それぞれあなたが確認したインターフェース名に置き換えてください (BindsToAfter の値も含む)。
dhcpcd を使う

あなたのお好きなエディタを使って /etc/systemd/system/network.service ファイルを作成してください。下の例では wpa_supplicant を使っています。

/etc/systemd/system/network.service
[Unit]
Description=Network Connectivity
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-net0.device
After=sys-subsystem-net-devices-net0.device

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ip link set dev net0 up
ExecStart=/usr/sbin/wpa_supplicant -B -i net0 -c /etc/wpa_supplicant.conf # 有線接続ではこの行は削除してください
ExecStart=/sbin/dhcpcd net0

ExecStop=/sbin/dhcpcd -k net0
ExecStop=/sbin/ip addr flush dev net0
ExecStop=/sbin/ip link set dev net0 down

[Install]
WantedBy=multi-user.target
# systemctl enable network

テストするには、再起動するか、他の全てのネットワークデーモンを止めて次を root 権限で実行します:

# systemctl start network
固定 IP アドレスを使う

テキストエディタを使って /etc/systemd/system/network.service ファイルを作成してください。この例では固定 IP アドレスと wpa_supplicant を使っています。

/etc/systemd/system/network.service
[Unit]
Description=Wireless Static IP Connectivity
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-net0.device
After=sys-subsystem-net-devices-net0.device

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ip link set dev net0 up
ExecStart=/usr/sbin/wpa_supplicant -B -i $net0 -c /etc/wpa_supplicant.conf # 有線接続ではこの行は削除してください
ExecStart=/sbin/ip addr add 192.168.0.10/24 dev net0
ExecStart=/sbin/ip route add default via 192.168.0.1
 
ExecStop=/sbin/ip addr flush dev net0
ExecStop=/sbin/ip link set dev net0 down

[Install]
WantedBy=multi-user.target

有効化するのを忘れないで下さい!

# systemctl enable network

テストするには、再起動するか、他の全てのネットワークデーモンを止めて次を root 権限で実行します:

# systemctl start network

アドレス計算

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 サービスをリロードしてください:

# systemctl restart dhcpcd@eth0

接続に問題がないか調べるために、ゲートウェイや DNS サーバー、ISP プロバイダ、その他インターネットのサイトなどに ping をしてください、例えば:

$ ping -c 3 www.google.com

追加設定

ラップトップのための ifplugd

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

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

netcfg がインストールされているならば net-auto-wired.service を有効にすればブート時に ifplugd が起動するはずです。そうならない場合は ifplugd@eth0.service を使って下さい。

ボンディングと LAG

公式リポジトリnetcfg と、AURnetcfg-bondingAUR パッケージが必要になります。

以下のファイルを編集・作成してください:

/etc/network.d/bonded
CONNECTION="bonding"
INTERFACE="bond0"
SLAVES="eth0 eth1"
IP="dhcp"
DHCP_TIMEOUT=10
/etc/modules-load.d/bonding.conf
bonding

netcfg を bond0 インターフェースを使うようにセットアップしてください。

ネットワークを起動します:

$ systemctl enable netcfg@bonded
Note: ボンディングモード (デフォルトはラウンドロビン方式) を変更するには (例: 動的リンクアグリゲーション):

/etc/modprobe.d/bonding.conf を作成してください:

/etc/modprobe.d/bonding.conf
options bonding mode=4
options bonding miimon=100
ボンディング方式(やドライバー設定)について詳しくは Linux Ethernet Bonding Driver HOWTO を見て下さい。

新しいボンド・ポートをアクティベートするために bonding を modprobe し、network を stop して net-profiles サービスを start させます:

# modprobe bonding
# systemctl stop network
# systemctl start net-profiles

ステータスとボンディングモードを確認するには:

$ cat /proc/net/bonding/bond0

IP アドレスエイリアス

ひとつのネットワークインターフェースに複数の IP アドレスを加えることを IP エイリアスと呼びます。これをすることで、ネットワークのひとつのノードでネットワークに複数接続することができ、それぞれを別々に使うことができます。

netcfg で IP エイリアスを使うには、あなたのネットワークプロファイルの中の POST_UPPRE_DOWN コマンドを修正して、手動で追加の IP アドレスを設定します。詳しくはここを見て下さい。

サンプル

公式リポジトリから netcfg をインストールする必要があります。

設定を準備します:

/etc/network.d/mynetwork
CONNECTION='ethernet'
DESCRIPTION='Five different addresses on the same NIC.'
INTERFACE='eth0'
IP='static'
ADDR='192.168.1.10'
GATEWAY='192.168.1.1'
DNS=('192.168.1.1')
DOMAIN=
POST_UP='x=0; for i in 11 12 13 14; do ip addr add 192.168.1.$i/24 brd 192.168.1.255 dev eth0 label eth0:$((x++)); done'
PRE_DOWN='for i in 11 12 13 14; do ip addr del 192.168.1.$i/24 dev eth0; done'

そして次を実行してください:

$ systemctl enable net-auto-wired.service

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

MAC Address Spoofing を見て下さい。

トラブルシューティング

ケーブルモデムでコンピュータがスワップする

Most domestic cable ISPs (videotron for example) have the cable modem configured to recognize only one client PC, by the MAC address of its network interface. Once the cable modem has learned the MAC address of the first PC or equipment that talks to it, it will not respond to another MAC address in any way. Thus if you swap one PC for another (or for a router), the new PC (or router) will not work with the cable modem, because the new PC (or router) has a MAC address different from the old one. To reset the cable modem so that it will recognise the new PC, you must power the cable modem off and on again. Once the cable modem has rebooted and gone fully online again (indicator lights settled down), reboot the newly connected PC so that it makes a DHCP request, or manually make it request a new DHCP lease.

If this method does not work, you will need to clone the MAC address of the original machine. See also Change MAC/hardware address.

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

TCP packets contain a "window" value in their headers indicating how much data the other host may send in return. This value is represented with only 16 bits, hence the window size is at most 64Kb. TCP packets are cached for a while (they have to be reordered), and as memory is (or used to be) limited, one host could easily run out of it.

Back in 1992, as more and more memory became available, RFC 1323 was written to improve the situation: Window Scaling. The "window" value, provided in all packets, will be modified by a Scale Factor defined once, at the very beginning of the connection.

That 8-bit Scale Factor allows the Window to be up to 32 times higher than the initial 64Kb.

It appears that some broken routers and firewalls on the Internet are rewriting the Scale Factor to 0 which causes misunderstandings between hosts.

The Linux kernel 2.6.17 introduced a new calculation scheme generating higher Scale Factors, virtually making the aftermaths of the broken routers and firewalls more visible.

The resulting connection is at best very slow or broken.

問題の診断方法

First of all, let's make it clear: this problem is odd. In some cases, you will not be able to use TCP connections (HTTP, FTP, ...) at all and in others, you will be able to communicate with some hosts (very few).

When you have this problem, the dmesg's output is OK, logs are clean and ip addr will report normal status... and actually everything appears normal.

If you cannot browse any website, but you can ping some random hosts, chances are great that you're experiencing this issue: ping uses ICMP and is not affected by TCP issues.

You can try to use Wireshark. You might see successful UDP and ICMP communications but unsuccessful TCP communications (only to foreign hosts).

修復方法 (悪い方法)

To fix it the bad way, you can change the tcp_rmem value, on which Scale Factor calculation is based. Although it should work for most hosts, it is not guaranteed, especially for very distant ones.

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

修復方法 (良い方法)

Simply disable Window Scaling. Since Window Scaling is a nice TCP feature, it may be uncomfortable to disable it, especially if you cannot fix the broken router. There are several ways to disable Window Scaling, and it seems that the most bulletproof way (which will work with most kernels) is to add the following line to /etc/sysctl.conf (see also sysctl)

net.ipv4.tcp_window_scaling = 0

修復方法 (最良の方法)

This issue is caused by broken routers/firewalls, so let's change them. Some users have reported that the broken router was their very own DSL router.

詳細

This section is based on the LWN article TCP window scaling and broken routers and a Kernel Trap article: Window Scaling on the Internet.

There are also several relevant threads on the LKML.

Realtek で link がない / WOL の問題

Users with Realtek 8168 8169 8101 8111(C) based NICs (cards / and on-board) may notice an issue where the NIC seems to be disabled on boot and has no Link light. This can usually be found on a dual boot system where Windows is also installed. It seems that using the offical Realtek drivers (dated anything after May 2007) under Windows is the cause. These newer drivers disable the Wake-On-LAN feature by disabling the NIC at Windows shutdown time, where it will remain disabled until the next time Windows boots. You will be able to notice if this issue is affecting you if the Link light remains off until Windows boots up; during Windows shutdown the Link light will switch off. Normal operation should be that the link light is always on as long as the system is on, even during POST. This issue will also affect other operative systems without newer drivers (eg. Live CDs). Here are a few fixes for this issue:

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

You can roll back your Windows NIC driver to the Microsoft provided one (if available), or roll back/install an official Realtek driver pre-dating May 2007 (may be on the CD that came with your hardware).

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

Probably the best and the fastest fix is to change this setting in the Windows driver. This way it should be fixed system-wide and not only under Arch (eg. live CDs, other operative systems). In Windows, under Device Manager, find your Realtek network adapter and double-click it. Under the Advanced tab, change "Wake-on-LAN after shutdown" to Enable.

In Windows XP (example)
Right click my computer
--> Hardware tab
  --> Device Manager
    --> Network Adapters
      --> "double click" Realtek ...
        --> Advanced tab
          --> Wake-On-Lan After Shutdown
            --> Enable
Note: Newer Realtek Windows drivers (tested with Realtek 8111/8169 LAN Driver v5.708.1030.2008, dated 2009/01/22, available from GIGABYTE) may refer to this option slightly differently, like Shutdown Wake-On-LAN --> Enable. It seems that switching it to Disable has no effect (you will notice the Link light still turns off upon Windows shutdown). One rather dirty workaround is to boot to Windows and just reset the system (perform an ungraceful restart/shutdown) thus not giving the Windows driver a chance to disable LAN. The Link light will remain on and the LAN adapter will remain accessible after POST - that is until you boot back to Windows and shut it down properly again.

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

Any newer driver for these Realtek cards can be found for Linux on the realtek site. (untested but believed to also solve the problem).

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

It appears that setting Integrated Peripherals --> Onboard LAN Boot ROM --> Enabled in BIOS/CMOS reactivates the Realtek LAN chip on system boot-up, despite the Windows driver disabling it on OS shutdown.
This was tested successfully multiple times with GIGABYTE system board GA-G31M-ES2L with BIOS version F8 released on 2009/02/05. YMMV.

DLink G604T/DLink G502T DNS の問題

Users with a DLink G604T/DLink G502T router, using DHCP and have firmware v2.00+ (typically users with AUS firmware) may have issues with certain programs not resolving the DNS. One of these programs are unfortunatley pacman. The problem is basically the router in certain situations is not sending the DNS properly to DHCP, which causes programs to try and connect to servers with an IP address of 1.0.0.0 and fail with a connection timed out error

問題の診断方法

The best way to diagnose the problem is to use Firefox/Konqueror/links/seamonkey and to enable wget for pacman. If this is a fresh install of Arch Linux, then you may want to consider installing links through the live CD.

Firstly, enable wget for pacman (since it gives us info about pacman when it is downloading packages) Open /etc/pacman.conf with your favourite editor and uncomment the following line (remove the # if it is there)

XferCommand=/usr/bin/wget --passive-ftp -c -O %o %u

While you are editing /etc/pacman.conf, check the default mirror that pacman uses to download packages.

Now open up the default mirror in an Internet browser to see if the mirror actually works. If it does work, then do pacman -Syy (otherwise pick another working mirror and set it to the pacman default). If you get something similar to the following (notice the 1.0.0.0),

ftp://mirror.pacific.net.au/linux/archlinux/extra/os/i686/extra.db.tar.gz
           => '/var/lib/pacman/community.db.tar.gz.part'
Resolving mirror.pacific.net.au... 1.0.0.0

then you most likely have this problem. The 1.0.0.0 means it is unable to resolve DNS, so we must add it to /etc/resolv.conf.

修復方法

Basically what we need to do is to manually add the DNS servers to our /etc/resolv.conf file. The problem is that DHCP automatically deletes and replaces this file on boot, so we need to edit /etc/conf.d/dhcpcd and change the flags to stop DHCP from doing this.

When you open /etc/conf.d/dhcpcd, you should see something close to the following:

DHCPCD_ARGS="-t 30 -h $HOSTNAME"

Add the -R flag to the arguments, e.g.,

DHCPCD_ARGS="-R -t 30 -h $HOSTNAME"
Note: If you are using dhcpcd >= 4.0.2, the -R flag has been deprecated. Please see the #For DHCP assigned IP address section for information on how to use a custom /etc/resolv.conf file.

Save and close the file; now open /etc/resolv.conf. You should see a single nameserver (most likely 10.1.1.1). This is the gateway to your router, which we need to connect to in order to get the DNS servers of your ISP. Paste the IP address into your browser and log in to your router. Go to the DNS section, and you should see an IP address in the Primary DNS Server field; copy it and paste it as a nameserver ABOVE the current gateway one.

For example, /etc/resolv.conf should look something along the lines of:

nameserver 10.1.1.1

If my primary DNS server is 211.29.132.12, then change /etc/resolv.conf to:

nameserver 211.29.132.12
nameserver 10.1.1.1

Now restart the network daemon by running systemctl restart dhcpcd@<interface> and do pacman -Syy. If it syncs correctly with the server, then the problem is solved.

詳細

This is the whirlpool forum (Australian ISP community) which talks about and gives the same solution to the problem:

http://forums.whirlpool.net.au/forum-replies-archive.cfm/461625.html

まず IP を開放することで DHCP の問題を確認する

DHCP が間違った IP の割り当てを取得している時、問題が起こることがあります。コンソールで、root 権限を使って IP アドレスを開放してください:

# dhcpcd -k

それから新しい IP アドレスをリクエストしてください:

# dhcpcd

おそらくこの2つのコマンドを何度も実行する必要があります。

Atheros AR8161 で eth0 がない

With the Atheros AR8161 Gigabit Ethernet card, the ethernet connection is not working out-of-the-box (with the installation media of Feb 2013). The module "alx" needs to be loaded but is not present.

The driver from compat-wireless (that should become compat-drives from linux 3.7) need to be installed. You need the firmware version with pc in the filename to have the ethernet drivers.

 $ wget http://www.orbit-lab.org/kernel/compat-wireless-3-stable/v3.6/compat-wireless-3.6.8-1-snpc.tar.bz2
 $ tar xjf compat-wireless-3.6.8-1-snpc.tar.bz2
 $ cd compat-wireless-3.6.8-1-snpc
 $ ./scripts/driver-select alx
 $ make
 $ sudo make install
 $ sudo modprobe alx