網絡配置/以太網

出自 Arch Linux 中文维基

本頁描述了以太網的詳細信息,一般的網絡配置則為網絡配置所涵蓋。

設備驅動[編輯 | 編輯原始碼]

檢測驅動狀態[編輯 | 編輯原始碼]

udev 會探測你的網卡(網絡接口控制器)並在啟動時自動載入必要的內核模塊。通過 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 在引導時不能自動偵測和加載適當的模塊,請查閱 Kernel module#自動加載模塊

提示與技巧[編輯 | 編輯原始碼]

用於筆記本的 ifplugd[編輯 | 編輯原始碼]

提示:dhcpcd 也提供了同樣的功能。

ifplugd 是一個守護進程,在網絡適配器插入的時候自動配置網絡,當網絡斷開的時候自動取消配置。因為這個程序只會在網絡實際接入的時候才會配置網絡接口,所以非常適用於筆記本電腦這樣的使用移動式的網絡,還可以用於不重啟電腦、不使用命令行就自動重啟網絡。

在默認情況下,它會工作於 eth0 設備。要更改這個設置(以及更改其他設置,比如等待時間),可以編輯 /etc/ifplugd/ifplugd.conf

注意: netctl 軟件包包含了 netctl-ifplugd@.service,否則你可以使用 ifplugd 軟件包中的 ifplugd@.service。例如啟用 ifplugd@eth0.service

故障排除[編輯 | 編輯原始碼]

更換了連接有線調製解調器的計算機[編輯 | 編輯原始碼]

許多有線網絡運營商(例如加拿大最大的有線電視公司 Vidéotron,還有中國大陸的有線電視寬帶公司)都使用記錄網卡 MAC 地址的方法將有線調製解調器配置為只能一台計算機使用。一旦調製解調器獲得第一台連接它的設備的 MAC 地址,就不會響應任何其它 MAC 地址。這樣如果你換了台計算機(或者路由器),由於新計算機(或者路由器)的 MAC 地址和舊的不同,就沒法連接調製解調器了。這時候必須復位調製解調器以使它重新進行識別。 你得關閉調製解調器電源,然後重新打開。一旦調製解調器重啟並再次登錄完畢(指示燈熄滅),重啟新連接的設備以使它發起一個 DHCP 請求,或者手動發起 DHCP 請求。

如果這個方法不能奏效,你需要克隆原來機器上的 MAC 地址。參見 MAC 地址偽裝

顯式擁塞通知[編輯 | 編輯原始碼]

顯式擁塞通知(Explicit Congestion Notification, ECN) 可能在老舊/劣質的路由器上造成網絡擁堵問題[1]。從 systemd 239 開始,它同時為入站流量和出站流量啟用。

設置僅當傳入連接請求時才啟用 ECN(內核默認設置,相當安全):

# sysctl net.ipv4.tcp_ecn=2

設置完全禁用 ECN(例如,測試 ECN 是否引起問題):

# sysctl net.ipv4.tcp_ecn=0

參見內核文檔

Realtek 沒有連接/網絡喚醒故障[編輯 | 編輯原始碼]

使用基於 Realtek 8168 8169 8101 8111(C) 晶片網卡(獨立網卡和板載)的用户也許會發現這個故障,啟動時網卡不可用,網卡上的連接指示燈不亮。這通常會發生在安裝了 Windows 的雙啟動系統上。在 Windows 下使用 Realtek 官方驅動(2007 年 5 月後的版本)會引發故障。新驅動通過在 Windows 關機時禁止網卡來關閉網絡喚醒功能,直到下一次 Windows 啟動前網卡都會一直不可用。如果是這個原因影響的你,你會觀察到連接指示燈在 Windows 啟動前一直熄滅,在 Windows 關機過程中也會熄滅。正常情況應該是只要計算機一直開着,即使在 POST 加電過程中,連接指示燈也應該一直亮着。這個故障也會影響其它沒有安裝新驅動的作業系統(例如各種 Live CD)。這裏給出幾種解決方案:

在 Linux 中啟用網卡[編輯 | 編輯原始碼]

參考 網絡配置#啟用和禁用網絡接口 來啟用網卡。

還原/變更 Windows 驅動[編輯 | 編輯原始碼]

你可以將你的 Windows 網卡驅動還原回微軟自帶的驅動(如果有的話),或者安裝 2007 年 5 月份以前的 Realtek 官方驅動(也許在網卡附帶的 CD 上)。

啟動 Windows 驅動裡的網絡喚醒功能[編輯 | 編輯原始碼]

也許最好最快的修複方法就是改變 Windows 驅動裡的這個設置。這個方法可以解決很多其它作業系統而不僅僅是 Arch 的麻煩。在 Windows 的設備管理器裡,找到你的 Realtek 網卡,雙擊它。在「高級」標籤頁中,開啟「wake-on-lan after shutdown」選項。

例如在 Windows XP 裡

 右键点击我的电脑
 -->管理
   -->设备管理器
     -->网络适配器
       -->双击 Realtek ...
         --> 高级标签页
           --> Wake-On-Lan After Shutdown
             --> 启用。
注意: 新的 Realtek Windows 驅動程序中(已測試了 2009/01/22 GIGABYTE 上的 Realtek 8111/8169 LAN Driver v5.708.1030.2008)可能與這裏的選項稍微有點不同,像 Shutdown Wake-On-LAN > Enable。似乎把它切換成 Disable 沒有效果(你仍然可以在Windows關閉時看到連接指示燈熄滅)。一個比較不好的解決方法是引導 Windows,然後立即重啟系統(執行非正常重啟/關機),不給予 Windows 驅動程序關閉 LAN 的機會。連接指示燈將會保持亮着,網卡也會在 POST 之後保持可用——直到你再次進入 Windows 並正常關機。

在 BIOS/CMOS 中啟用 LAN Boot ROM[編輯 | 編輯原始碼]

儘管 Windows 驅動程序在系統關閉時禁用了它,但在 BIOS/CMOS 中設置 Integrated Peripherals --> Onboard LAN Boot ROM --> Enabled,系統啟動時會重新激活 Realtek LAN 晶片。

注意: 這個方法多次在 GIGABYTE GA-G31M-ES2L 主板,2009/02/05 發佈的 BIOS 版本 F8 上測試成功。你的情況可能不同。

禁用 USB 自動掛起功能[編輯 | 編輯原始碼]

本文或本章節的語言、語法或風格需要改進。參考:Help:Style

原因:不是所有人都使用了 TLP.(在Talk:網絡配置/以太網討論)

當使用省電功能時,特別是帶 TLP 的 USB自動掛起,設備可能無法正確加載,導致NO-CARRIER狀態(用RT8156B測試),也不能建立網絡連接。

解決辦法是將設備 ID 添加到 TLP 配置的 USB 黑名單(denylist)中,並重新連接設備。

Atheros 晶片組找不到網卡[編輯 | 編輯原始碼]

有些用户的 Atheros 晶片無法正常工作 (至少在 2014 年 2 月的安裝鏡像中)。可以通過安裝 backports-patchedAUR[損壞的連結:package not found] 解決。

Broadcom BCM57780[編輯 | 編輯原始碼]

這個 Broadcom 晶片只有你指定模塊的加載順序後才能正常工作。這些模塊是 broadcomtg3,前者需要首先加載。

如果你的電腦有這個晶片,這些步驟應該有用:

  • lspci 的輸出中找到你的網卡:
$ 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
  • 插回網線,檢查模塊是否成功:
# dmesg | grep tg3
  • 如果現在你的故障解決了,你可以把 broadcomtg3 (以此順序)加入到 /etc/mkinitcpio.confMODULES 一行,使得更改持久化:
/etc/mkinitcpio.conf
MODULES=(.. broadcom tg3 ..)
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模塊識別。 但是,對於某些晶片版本,網絡連接可能一直是斷開狀態。 可以在 official repositories中找到r8168 作為r8169的替代品,在這種情況下,其應該可以實現穩定可靠的連接。 將r8169列入黑名單Blacklist,如果 udev沒有自動加載r8168 ,請參見內核模塊 Kernel module#自動加載模塊

本文或本章節的事實準確性存在爭議。

原因: "某些修訂版本:", 不是驅動程序導致的問題,而是DNS伺服器沒有正確配置 (在 Talk:網絡配置/以太網 中討論)


對於此網絡適配器的某些修訂版,驅動程序中的另一個故障是IPv6支持不佳。 如果遇到諸如網頁掛起和速度慢之類的問題,禁用IPv6功能 IPv6#Disable functionality可能會有所幫助。

配有 Realtek 8111/8168/8411 的 Gigabyte 主板[編輯 | 編輯原始碼]

使用諸如 Gigabyte GA-990FXA-UD3 這樣的主板,在關閉 IOMMU 的配置下啟動(可能是默認設置)將會使網絡連接出問題,通常是無法連接或連接上了但沒有流量。這適用於板載網卡和小節標題中的任何其他 pci-NIC,因為 IOMMU 設置會影響主板上的整個網絡接口。啟用 IOMMU 並使用安裝介質引導會在一秒鐘內引發 AMD I-10/xhci 頁面錯誤,但隨後會正常啟動,板載網卡完全正常運行(即使使用 r8169 模塊)。在配置安裝引導過程時,添加 iommu=soft 作為內核參數,以消除引導時的錯誤信息,並恢復 USB3.0 功能。

配有 Realtek 8111/8168/8411 的 微星主板[編輯 | 編輯原始碼]

使用諸如 "MicroStar B450M MORTAR TITANIUM" 這樣的主板, 拔插網線或者重啟路由器的 DHCP 服務可能會導致 r8169 進入降檔狀態, 從千兆帶寬(1000Mbit/s)降低到百兆(100 Mbit/s)。內核 log 會打印(可以通過 dmesg 命令查看):

# dmesg | grep r8169
Generic FE-GE Realtek PHY r8169-2200:00: Downshift occurred from negotiated speed 1Gbps to actual speed 100Mbps, check cabling!
r8169 0000:22:00.0 enp34s0: Link is Up - 100Mbps/Full (downshifted) - flow control rx/tx

這種情況下,可以通過重啟網絡接口進行恢復。例如執行下面的命令:

# ip link set dev enp34s0 down
# ip link set dev enp34s0 up