在Linux的發行版本中,都存在一個/proc/目錄,有的也稱它為Proc檔案系統。在這個目錄中,包括了一些特殊的檔案,不僅能用來反映核心的現行狀态和檢視硬體資訊,而且,有些檔案還允許使用者來修改其中的内容,以調節核心的現行工作狀态,例如/proc/sys/子目錄下的檔案。
與/proc/目錄中其它目錄不相同的是,/proc/sys/目錄下的檔案不僅能提供系統的有關資訊,而且還允許使用者立即停止或開啟核心的某些特性及功能。在/proc/sys/目錄中的/proc/sys/net/子目錄更是與網絡息息相關,我們可以通過設定此目錄下的某些檔案來開啟與網絡應用相關的特殊功能,同時,也可以通過設定這個目錄下的某些檔案來保護我們的網絡安全。是以,作為一名Linux下的網絡管理者,就很有必要詳細了解/proc/sys/net/目錄下檔案的各種功能和設定方法,讓它能更好地為我們工作。
一、/proc/sys/net/目錄說明。
/proc/sys/net/目錄主要包括了許多網絡相關的主題,例如:appletalk/,ethernet/,ipv4/,ipx/,及ipv6/。通過改變這些目錄中的檔案,網絡管理者能夠在系統運作時調整相關網絡參數。雖然在Linux中還有很多有關網絡的配置方法,但熟悉此目錄中的相關内容對網絡應用是有很大的幫助的。
在/proc/sys/net/目錄下有兩個目錄,與現在的IPV4網絡的運作息息相關,調整這兩個目錄下的某些檔案的參數,能為我們的網絡應用帶到意想不到的效果,這兩個目錄就是/proc/sys/net/core/目錄和/proc/sys/net/ipv4/目錄,下面筆者将會對這兩個目錄中的重要檔案分别作一個詳細的說明。
1、/proc/sys/net/core/目錄。
此目錄中包括許多設定用來控制Linux核心與網絡層的互動,即當網絡有什麼動作時,核心做出什麼樣的相應反應。
在其中有以下的一些重要檔案:
(1)、message_burst:設定每十秒寫入多少次請求警告;此設定可以用來防止DOS攻擊,預設設定為50;
(2)、message_cost:設定每一個警告的路徑成本,預設為5,當用來防止DOS攻擊時設定為0;
(3)、netdev_max_backlog:設定當個别接口接收包的速度快于核心處理速度時允許的最大的包序列,預設為300;
(4)、optmem_max:設定每個socket的最大補助緩存大小;
(5)、rmem_default:設定接收socket的預設緩存大小(位元組);
(6)、rmem_max:設定接收socket的最大緩存大小(位元組);
(7)、wmem_default:設定發送的socket預設緩存大小(位元組);
(8)、wmem_max:設定發送的socket最大緩存大小(位元組)。
2、/proc/sys/net/ipv4/目錄。
此目錄中的内容用來添加網絡設定,在其中的許多設定,可以用來阻止對系統的攻擊,或用來設定系統的路由功能。
其中有以下的這些重要的檔案:
(1)、icmp_destunreach_rate、icmp_echoreply_rate、icmp_paramprob_rate、icmp_timeexeed_rate:設定發送和回應的最大icmp包的速率,最好不要為0;
(2)、icmp_echo_ignore_all和icmp_echo_ignore_broadcasts:設定核心不應答icmp echo包,或指定的廣播,值為0是允許回應,值為1是禁止;
(3)、ip_default_ttl:設定IP包的預設生存時間(TTL),增加它的值能減少系統開銷;
(4)、ip_forward:設定接口是否可以轉發包,預設為0,設定為1時允許網絡進行包轉發;
(5)、ip_local_port_range:當本地需要端口時指定TCP或UDP端口範圍。第一數為低端口,第二個數為高端口;
(6)、tcp_syn_retries:提供限制在建立連接配接時重新發送回應的SYN包的次數;
(7)、tcp_retries1:設定回應連入重送的次數,預設為3;
(8)、tcp_retries2:設定允許重送的TCP包的次數,預設為15。
二、/proc/sys/net/目錄下檔案的設定方法。
在了解了/proc/sys/net/core/目錄和/proc/sys/net/ipv4/目錄中一些重要檔案的意義和作用後,下面說說如何設定這兩個目錄中的這些重要檔案來為我們工作的。
讀者應該了解,在Linux系統中,要改變某種服務或裝置的工作狀态和功能,主要是通過使用指令方式和直接修改它的配置檔案方式來達到目的,對于這兩個目錄下的檔案,我們也可以通過這兩種方式來修改這些檔案内容中的值,使它們按照我們的意圖工作。
在進行設定之前,應當注意的是,當你确定要修改某個檔案的目前值時,一定要保證輸入的指令格式和值的内容都是正确的,因為任何的錯誤設定都會引起核心的不穩定,如果你不小心造成了這種問題,你就不得不重新開機系統了。在下面的說明中,筆者會将注意的地方特别說明出來的。
首先來看看如何使用指令方式來修改這兩個目錄下檔案的。我們可以通過echo和sysctl這兩個指令來修改這兩個目錄中的檔案,下面筆者将這兩個指令的使用方法分别列出來。
1、sysctl指令是為設定這兩個目錄中的檔案而定制的,它被預設安裝在/sbin/目錄中, 我們可以通過使用此指令來顯示和設定/proc/sys/net/目錄下的檔案内容。例如:/sbin/sysctl -a指令用來顯示此目錄下的所有檔案配置内容;/sbin/sysctl -w指令用來修改此目錄下指定檔案中的變量值,如:/sbin/sysctl -w net.ipv4.ip_forward="1"用來設定允許IP包轉發。其它的參數,讀者可以通過輸入/sbin/sysctl –h指令來得到,在這裡就不再具體全部列出了。要注意的是,這個指令的使用需要管理者權限的,如果使用者不是以管理者身份登入的,在使用此指令前用SU指令得得管理權限後再操作。
2、/proc/sys/net/目錄下的檔案内容也可以通過用echo指令來修改。例如:echo 1 > /proc/sys/net/ipv4/ip_forward用來設定允許IP包轉發;echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all用來設定不回應ICMP ECHO包。在使用echo指令時,還應特别注意此指令的輸入格式,即在echo指令和值之間,以及值與在于符号(>)之間,在于符号與要修改的檔案路徑之間都必需有一個空格。而且,在這兩個目錄中的有些檔案有不上一個的值,是以,如果你想一次性傳遞多個值,那麼,每一個值之間也應保證用空格隔開。同時也要注意的是,用此方法修改/proc/sys/net/目錄下檔案中的内容在系統重新啟動後,所設定的内容會全部變為預設值,是以,如果要想設定的值永久有效,可以直接把這個指令加入到/ect/rc.d/rc.local檔案中,在這裡,這個檔案的路徑是指Red Hat Linux發行版本中的,其它發行版本讀者根據具體情況來定。如果指令項太多,也可以把這些指令項編寫成一個腳本後,加上可執行權限,再放到這個檔案中,這樣當系統啟動時,就會按/etc/rc.d/rc.local中的設定自動執行。如果你不想修改/etc/rc.d/rc.local檔案,那麼筆者推薦你使用/sbin/sysctl指令。
使用指令方式設定/proc/sys/net/目錄下的檔案固然友善易行,但有一部分讀者更喜歡直接修改它們的配置檔案的方式,因為這種方式更加直覺,但它比較适合對系統了解比較深的使用者。
與其它服務或裝置不同的是,Linux系統隻為/proc/sys/net/目錄提供了一個配置檔案,那就是/ect/sysctl.conf,使用者可以通過直接編輯/ect/sysctl.conf配置檔案,來修改增加相應/proc/sys/net/目錄下檔案内容中的變量的值,這樣當系統啟動時就會讀取此檔案中的配置内容來設定相應的項。用vi來編輯此檔案是非常簡單的,此檔案中内容格式也非常清晰易讀,如其中有如下條目:net.ipv4.ip_forward=0,把值修改為1後就打開IP包轉發。其實,用/sbin/sysctl指令修改和直接編輯 /etc/sysctl.conf檔案内容具有相同的效果,是以,為了安全,推薦使用者優先使用/sbin/sysctl指令方式。
到這裡,想必讀者已經對/proc/sys/net/目錄下的/proc/sys/net/core/和/proc/sys/net/ipv4/這兩個目錄,已經有了一定了解了。可是,這隻是筆者為了突出/proc/目錄與IPV4網絡的作用而特别選出來說明,其實,在/proc/目錄下,還有許多的檔案,雖然不能被使用者如上述的兩個目錄那樣可以被設定,但是,可以通過這些檔案來了解系統詳細情況和現行的運作狀态,讀者可以從網絡上找到這個目錄的詳細說明。
本文轉自 雪源梅香 51CTO部落格,原文連結:http://blog.51cto.com/liuyuanljy/162643,如需轉載請自行聯系原作者