網路基本功(十三):細說Linux網路配置(下)
介紹
更多資訊
Linux網路硬體選項:
ethtool命令查詢並設定網路介面關於媒體相關的引數。如:鏈路速度和雙工。它代替了以前的mii-tool命令,但有些系統中兩者並存。
只要簡單加上介面名就可以查詢它的狀態。例如,eth0介面(PC主機板的網絡卡介面)啟動了自協商並且運行於全速率:
將該介面鎖定在100 Mb/s全雙工,使用以下命令:
ethtool -s eth0 speed 100 duplex full
如果想知道自協商在系統中是否可靠,也可以使用ethtool –r命令,可使鏈路引數立刻重新協商。
另一個有用的選項是-k,顯示哪些協議相關任務指定給網路介面,而不是由核心執行。大多數介面能夠計算校驗和(checksum),一些也可以輔助分段任務。可以通過ethtool –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。以下是一些重要變數的列表:
許多名字中含有rate和max的變數用作阻止伺服器攻擊。子目錄conf包含按照各介面設定的變數,包括all和default以及各介面子目錄(包括loopback)。各子目錄包含相同的一組檔案。
假設使用者在conf/eth0子目錄中更改了一個變數,則變更僅適用於該介面。如果在conf/all中更改了變數值,你也許認為更改適用於所有介面,但實際上並非如此。每一個變數對於接收通過all
如果使用者在conf/default中修改了變數,新的值會傳遞到所有在這之後配置的介面。另一方面,最好保持預設值不變,以供取消更改時參考。
/proc/sys/net/ipv4/neigh目錄同樣包含了各介面子目錄。子目錄中的檔案掌控相應介面的ARP table管理以及IPv6鄰居發現。以下是變數列表,以gc(代表垃圾回收)開頭的變數決定ARP table表項超時以及丟棄。
要檢視變數值,使用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