Linux下調整網卡的工作模式
添加時間:2018-9-14 18:28:18
添加:
思海網絡
現(xiàn)在的網卡一般都是10/100M自適應工作模式,在配置網卡參數時我們很少考慮它的工作模式,但是在路由器、交換機、代理服務器等通信量比較大的關鍵設備上,我們應該為它指定正確的工作模式,這樣可以提高通信效率。在Linux環(huán)境下,我們可以使用系統(tǒng)自帶的工具mii-tool(這是專門設置網卡工作模式的命令)來配置網卡工作模式。下面我們具體來談一下它的使用方法。
1. 查看網卡的工作模式,輸入命令:
#mii-tool -v
eth0: negotiated 100baseTx-FD,link ok
product info:Vendor 00:05:be,model 8 rev 0
basic status: autonegotiation complete,link ok
basic mode:autonegotiation enabled.
Capabilities: ..............
從以上信息中可以看出,這塊網卡工作在100M全雙工自適應模式下,“100BaseTx-FD”意為100M Full Duplex。
2. 更改網卡的工作模式,輸入命令:
#mii-tool -F media [interface]
media可選的模式有100baseTx-FD、100baseTx-HD、10baseT-FD、10baseT-HD等。 Interface代表所選擇的網卡,如eth0、eth1等,默認為eth0。
例如,設置網卡工作在10M半雙工模式下,輸入命令:
#mii-tool -F 10baseT-HD eth0
3. 恢復網卡的自適應工作模式,輸入命令:
#mii-tool -r eth0
更詳細的使用方法可以用mii-tool -h來獲得。
在《調諧LINUX網絡性能之調試工具篇》和《調諧LINUX網絡性能之網絡配置文件詳解》兩篇文章中,我們介紹了route、netstat、tcpdump三種網絡調諧測試工具的使用方法及其可實現(xiàn)的功能和網絡配置文件的內容,本文我們將從實戰(zhàn)的角度介紹網絡性能調諧的方法。
下面,我們先來介紹網絡性能調諧的第一種方法:服務方式選擇。
服務方式選擇
網絡服務器由于要同時為多個客戶提供服務,就必須使用某種方式來支持這種多任務的服務方式。一般情況下可以有三種方式來選擇,多進程方式、多線程方式及異步方式。其中,多進程方式中服務器對一個客戶要使用一個進程來提供服務,由于在操作系統(tǒng)中,生成一個進程需要進程內存復制等額外的開銷,這樣在客戶較多時的性能就會降低。為了克服這種生成進程的額外開銷,可以使用多線程方式或異步方式。在多線程方式中,使用進程中的多個線程提供服務,由于線程的開銷較小,性能就會提高。事實上,不需要任何額外開銷的方式還是異步方式,它使用非阻塞的方式與每個客戶通信,服務器使用一個進程進行輪詢就行了。異步方式下,多個任務之間的調度是由服務器程序自身來完成的,而且一旦一個地方出現(xiàn)問題則整個服務器就會出現(xiàn)問題,不在討論的范圍內。增大系統(tǒng)線程的數量:限制線程的數量的因素很多,主要有進程數量的限制,內存大小的限制,mutex/semaphore/shm/ipc的限制;一般情況下先增大進程最大數,再擴充內存,在增大線程最大數,而增大線程最大數的方法很簡單,只需改變glibc中兩處即可:線程最大數和線程堆棧區(qū)的大小;線程最大數的增加是以進程的異步 I/O性能下為代價;所以需要加以平衡。
絡配置文件中有用的內容
1. 對于數據庫而言,增大共享內存段和信號量的多少,對數據傳輸效率的提高起到很重要的作用;
方法:只需編輯文件linux/include/linux/sem.h和linux/include/asm-i386/shmparam.h即可。
2. 先增大進程最大數,再擴充內存,再增大線程最大數,而增大線程最大數的方法很簡單,只需改變glibc中兩處即可:線程最大數和線程堆棧區(qū)的大小;
3. 把"/etc/inittab"文件中的一行注釋掉可以禁止用Control-Alt-Delete關閉計算機。如果服務器不是放在一個安全的地方,這非常重要。
編輯inittab文件(vi /etc/inittab)把這一行:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
改為:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
用下面的命令使改變生效:
[root@deep]# /sbin/init q
4. /etc/host.conf 文件指定如何解析主機名。Linux通過解析器庫來獲得主機名對應的IP地址。下面是一個"/etc/host.conf"的示例:
order bind,hosts :指定主機名查詢順序,這里規(guī)定先使用DNS來解析域名,然后再查詢"/etc/hosts"文件(也可以相反)。
可以在該文件后加上以下兩句:
multi on:指定的主機可以有多個地址,擁有多個IP地址的主機一般稱為多穴主機。
ospoof on:指不允許對該服務器進行IP地址欺騙,以提高服務器的安全性。IP欺騙是一種攻擊系統(tǒng)安全的手段,通過把IP地址偽裝成別的計算機,來取得其它計算機的信任。
可調諧的Linux內核網絡參數
ICMP相關內核配置參數
概述:通常我們使用icmp包來探測目的主機上的其它協(xié)議(如tcp和udp)是否可用。比如包含"destination unreachable"信息的icmp包就是最常見的icmp包。
(1) icmp_destunreach_rate:設置內容為"Destination Unreachable"icmp包的響應速率。設置值應為整數。
應用實例: 假設有A、B兩部主機,首先我們在主機A上執(zhí)行以下ipchains語句:
ipchains -A input -p icmp -j REJECT
這里的REJECT和DENY不同,DENY會丟掉符合條件的包如同沒有接收到該包一樣,而REJECT會在丟掉該包的同時給請求主機發(fā)回一個"Destination Unreachable"的icmp。
然后在主機B上ping主機A,這時候我們會發(fā)現(xiàn)"Destination Unreachable"icmp包的響應速度是很及時的。接著我們在主機A上執(zhí)行:
echo "1000" > /proc/sys/net/ipv4/icmp_destunreach_rate
也即每10秒鐘響應一個"Destination Unreachable"的icmp包。
這時候再從主機B上ping主機A就會發(fā)現(xiàn)"Destination Unreachable"icmp包的響應速度已經明顯變慢,我很好奇的測試了一下,發(fā)現(xiàn)剛好是每10秒響應一次。
(2)icmp_echo_ignore_broadcasts:設置是否響應icmp echo請求廣播,設置值應為布爾值,0表示響應icmp echo請求廣播,1表示忽略。
注意:windows系統(tǒng)是不響應icmp echo請求廣播的。
應用實例:
在我的RedHat6.x和RedHat7上該值缺省為0,這樣當有個用戶ping我的服務器所在的網段的網絡地址時,所有的linux服務器就會響應,從而也能讓讓該用戶得到我的服務器的ip地址,可以執(zhí)行
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
來關閉該功能。從而防止icmp風暴,防止網絡阻塞。
(3)icmp_echoreply_rate:設置系統(tǒng)響應icmp echo請求的icmp包的響應速度,設置值為整數。
應用實例:
假設有A、B兩部主機,首先我們在主機B上ping主機A,可以看到響應很正常,然后在主機A上執(zhí)行
echo "1000" > /proc/sys/net/ipv4/icmp_echoreply_rate
也即每10秒鐘響應一個icmp echo請求包。然后再ping主機A就可以看到響應速度已經變成10秒一次。
最好合理的調整該參數的值來防止icmp風暴。
(4)icmp_echo_ignore_all:設置系統(tǒng)是否忽略所有的icmp echo請求,如果設置了一個非0值,系統(tǒng)將忽略所有的icmp echo請求。其實這是icmp_echoreply_rate的一種極端情況。參數值為布爾值,1:表示忽略,0:表示響應。
(5)icmp_paramprob_rate:當系統(tǒng)接收到數據報的損壞的ip或tcp頭時,就會向源發(fā)出一個包含有該錯誤信息的icmp包。這個參數就是用來設置向源發(fā)送這種icmp包的速度。當然,在通常情況下ip或tcp頭出錯是很少見的。參數值為整數。
(6)icmp_timeexceed_rate:數據報在網絡上傳輸時,其生存時間(time to live)字段會不斷減少,當生存時間為0時,正在處理該數據報的路由器就會丟棄該數據報,同時給源主機發(fā)送一個"time to live exceeded"的icmp包。該參數就是用來設置這種icmp包的發(fā)送的速度。當然,這通常用于充當路由器的linux主機。
IP相關內核配置參數
linux內核網絡參數中關于ip的配置參數通常是用來定義或調整ip包的一些特定的參數,除此之外還定義了系統(tǒng)的一些網絡特性。
(1)ip_default_ttl:設置從本機發(fā)出的ip包的生存時間,參數值為整數,范圍為0~128,缺省值為64。在windows系統(tǒng)中, ip包的生存時間通常為128。如果你的系統(tǒng)經常得到"Time to live exceeded"的icmp回應,可以適當增大該參數的值,但是也不能過大,因為如果你的路由壞路的話,就會增加系統(tǒng)報錯的時間。
(2)ip_dynaddr:該參數通常用于使用撥號連接的情況,可以使系統(tǒng)能夠立即改變ip包的源地址為該ip地址,同時中斷原有的tcp對話而用新地址重新發(fā)出一個syn請求包,開始新的tcp對話。在使用ip欺騙時,該參數可以立即改變偽裝地址為新的ip地址。該參數的參數值可以是:
1:啟用該功能
2:使用冗余模式啟用該功能
0:禁止該功能
應用實例:在使用ipchains配置ip欺騙帶動局域網共享一個ppp連接上網時,有時會出現(xiàn)剛開時連接一個站點連不通,再次刷新又可以連接的情況,這時候就可以設置該參數的值為1,從而立即改變偽裝地址為新的ip地址,就可以解決這類問題。命令為:
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
(3)ip_forward:可以通過該參數來啟用包轉發(fā)功能,從而使系統(tǒng)充當路由器。參數值為1時啟用ip轉發(fā),為0時禁止ip轉發(fā)。注意,我們可以在單網卡或雙網卡的主機上實現(xiàn)ip轉發(fā)。
應用實例:
假設我們使用一部裝有雙網卡的linux主機充當防火墻,這時候我們就必須執(zhí)行以下命令來打開ip轉發(fā)功能:
echo "1" > /proc/sys/net/ipv4/ip_forward
(4) ip_local_port_range:設置當本地系統(tǒng)向外發(fā)起tcp或udp連接請求時使用的端口范圍。設置值為兩個整數,缺省為"1024 4999"。
應用實例:
echo "1450 6000" > /proc/sys/net/ipv4/ip_local_port_range
tcp相關內核配置參數
通過tcp配置參數可以控制tcp會話過程中的各個方面。
(1) tcp_fin_timeout:在一個tcp會話過程中,在會話結束時,A首先向B發(fā)送一個fin包,在獲得B的ack確認包后,A就進入FIN WAIT2狀態(tài)等待B的fin包然后給B發(fā)ack確認包。這個參數就是用來設置A進入FIN WAIT2狀態(tài)等待對方fin包的超時時間。如果時間到了仍未收到對方的fin包就主動釋放該會話。參數值為整數,單位為秒,缺省為180秒。
(2) tcp_syn_retires:設置開始建立一個tcp會話時,重試發(fā)送syn連接請求包的次數。 參數值為小于255的整數,缺省值為10。假如你的連接速度很快,可以考慮降低該值來提高系統(tǒng)響應時間,即便對連接速度很慢的用戶,缺省
關鍵字:Linux、網卡、工作模式、服務器
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解