網絡配置/以太網 - Arch Linux 中文维基

跳至內容

# 網絡配置/以太網

出自 Arch Linux 中文维基
< 网络配置
翻譯狀態：

- 本文（或部分內容）譯自 Network configuration/Ethernet，最近一次同步於 2022-12-01，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

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

## 設備驅動

### 檢測驅動狀態

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 自動掛起功能

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

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

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

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

### Atheros 晶片組找不到網卡

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

### Broadcom BCM57780

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

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

- 從 `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

- 如果現在你的故障解決了，你可以把 `broadcom` 和 `tg3` （以此順序）加入到 `/etc/mkinitcpio.conf` 的 `MODULES` 一行，使得更改持久化：

    /etc/mkinitcpio.conf

    MODULES=(.. broadcom tg3 ..)

- 重新生成 initramfs
- 還有一種方法是創建 `/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`模塊識別。 但是，對於某些晶片版本，網絡連接可能一直是斷開狀態。 可以在 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

分類：​

- 網絡配置
- 使用「模板:風格」標記的頁面或章節
- 包含損壞的軟體包連結的頁面

隱藏分類：​

- 使用「模板:準確性」標記的頁面或章節

網絡配置/以太網
新增話題