# 網絡基本功(十三):細說Linux網絡配置(下)
**轉載請在文首保留原文出處:EMC中文支持論壇**[https://community.emc.com/go/chinese](https://community.emc.com/go/chinese) [](https://community.emc.com/servlet/JiveServlet/showImage/2-846990-99107/image001.gif)
## 介紹
本文承接[細說Linux網絡配置(上)](https://community.emc.com/message/846116#846116) 。
## 更多信息
**Linux網絡硬件選項:**
**ethtool**命令查詢并設置網絡接口關于媒體相關的參數。如:鏈路速度和雙工。它代替了以前的**mii-tool**命令,但有些系統中兩者并存。
只要簡單加上接口名就可以查詢它的狀態。例如,eth0接口(PC主板的網卡接口)啟動了自協商并且運行于全速率:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846990-99138/image002.jpg)
將該接口鎖定在100 Mb/s全雙工,使用以下命令:
```
ethtool -s eth0 speed 100 duplex full
```
如果想知道自協商在系統中是否可靠,也可以使用**ethtool –r**命令,可使鏈路參數立刻重新協商。
另一個有用的選項是**-k**,顯示哪些協議相關任務指定給網絡接口,而不是由內核執行。大多數接口能夠計算校驗和(checksum),一些也可以輔助分段任務。可以通過**ethtool –K**命令結合多個子選項開啟或禁用特定類型的offloading(-k顯示當前值,-K對其進行設置)。
通過**ethtool**所做的變更是暫時的。如果希望永久性更改,需要確保**ethtool**作為系統網絡配置的一部分來運行。最好是把它作為各個接口配置的一部分,如果你只是在啟動時運行一些**ethtool**命令,那么在接口重啟而系統未重啟時配置就無法正確生效。
注:Red Hat系統中,可以在**/etc/sysconfig/network-scripts. ifup**下的配置文件中添加一行ETHTOOL_OPTS=,以將整行作為參數傳遞給**ethtool**。
SUSE中ethtool的用法與Red Hat相似,但是選項名為ETHTOOL_OPTIONS,配置文件保存在**/etc/sysconfig/network。**
Ubuntu系統中,可以在 **/etc/network/interfaces**的接口配置腳本中運行**ethtool**命令。
**Linux TCP/IP選項:**
Linux將每個可調內核變量放在**/proc**虛擬文件系統中。網絡變量位于**/proc/sys/net/ipv4。**以下是一些重要變量的列表:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846990-99139/image003.jpg)
許多名字中含有rate和max的變量用作阻止服務器攻擊。子目錄**conf**包含按照各接口設置的變量,包括**all**和**default**以及各接口子目錄(包括loopback)。各子目錄包含相同的一組文件。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846990-99140/image004.jpg)
假設用戶在**conf/eth0**子目錄中更改了一個變量,則變更僅適用于該接口。如果在**conf/all**中更改了變量值,你也許認為更改適用于所有接口,但實際上并非如此。每一個變量對于接收通過**all**所作的更改有各自的規則。有些是與當前值做或運算,有些是做與運算,還有些是取最大或最小值。除了內核代碼以外沒有文檔詳細說明這一過程,因此最好避免這樣做,比較好的做法是對各接口分別做修改。
如果用戶在**conf/default**中修改了變量,新的值會傳遞到所有在這之后配置的接口。另一方面,最好保持默認值不變,以供取消更改時參考。
**/proc/sys/net/ipv4/neigh**目錄同樣包含了各接口子目錄。子目錄中的文件掌控相應接口的ARP table管理以及IPv6鄰居發現。以下是變量列表,以gc(代表垃圾回收)開頭的變量決定ARP table表項超時以及丟棄。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846990-99141/image005.jpg)
要查看變量值,使用**cat**命令,要進行設置,使用**echo**重定向到合適的文件名。例如:
```
ubuntu$ cat icmp_echo_ignore_broadcasts0
```
顯示當變量值為0時,則廣播ping不能被忽略。要將它設置為1,在 **/proc/sys/net** 中,運行
```
ubuntu$ sudo sh -c "echo 1 > icmp_echo_ignore_broadcasts"
```
通常,你登錄的網絡與調整的網絡是同一個,所以要小心行事。在更改生產設備配置前務必在臺式機上測試。
要永久更改某參數(更準確的說,系統每次啟動時都重置該值),在**/etc/sysctl.conf**中添加合適的變量,這些變量在啟動時由**sysctl**命令讀取。文件**sysctl.conf**的格式是_變量名__=值_,而不是手動在shell中修改的格式**echo value > variable**。變量名是相對于**/proc/sys**的路徑,可以用點或斜杠。例如:
**/etc/sysctl.conf** 文件中,
```
net.ipv4.ip_forward=0
net/ipv4/ip_forward=0
```
都會將主機IP轉發關閉。
同時,內核源版本中的 **ip-sysctl.txt**文件也有一些比較好的注釋信息。
## 參考
Unix and Linux System Administration Handbook
- 介紹
- 網絡基本功(一):細說網絡傳輸
- 網絡基本功(二):細說交換機
- 網絡基本功(三):細說VLAN與Trunk
- 網絡基本功(四):細說路由(上)
- 網絡基本功(五):細說路由(下)
- 網絡基本功(六):鏈路聚合
- 網絡基本功(七):細說IP地址與子網
- 網絡基本功(八):細說TCP滑動窗口
- 網絡基本功(九):細說TCP重傳
- 網絡基本功(十):細說TCP確認機制
- 網絡基本功(十一):TCP窗口調整與流控
- 網絡基本功(十二):細說Linux網絡配置(上)
- 網絡基本功(十三):細說Linux網絡配置(下)
- 網絡基本功(十四):細說診斷工具ping
- 網絡基本功(十五):細說網絡性能監測與實例(上)
- 網絡基本功(十六):細說網絡性能監測與實例(下)
- 網絡基本功(十七):細說tcpdump的妙用(上)
- 網絡基本功(十八):細說tcpdump的妙用(下)
- 網絡基本功(十九):細說NAT原理與配置
- 網絡基本功(二十):細說ICMP和ARP
- 網絡基本功(二十一):細說HTTP(上)
- 網絡基本功(二十二):細說HTTP(下)
- 網絡基本功(二十三):Wireshark抓包實例診斷TCP連接問題
- 網絡基本功(二十四):Wireshark抓包實例分析TCP重傳
- 網絡基本功(二十五):Wireshark抓包實例分析TCP重復ACK與亂序
- 網絡基本功(二十六):Wireshark抓包實例分析TCP窗口及reset
- 網絡基本功(二十七):Wireshark抓包實例分析HTTP問題(上)
- 網絡基本功(二十八):Wireshark抓包實例分析HTTP問題(下)
- 網絡基本功(二十九):Wireshark抓包實例診斷數據庫常見問題
- 網絡基本功(三十):細說DNS(上)
- 網絡基本功(三十一):細說DHCP