戴文的Linux內核專題:12 配置內核(8)
在本篇中,我們將繼續配置網路特性。記住,網路是計算機最重要的特性,這篇文章和這之後的網路相關文章都要重點了解。
在我們開啟這系列之前,我先要澄清一些事情。配置進程不會編輯你當前系統的內核。這個進程配置的是你編譯(或者交叉編譯)新內核前的源代碼。一旦我完成了配置過程,那麼我會討論讀者建議的話題。同樣,作為提醒,每個段落中在引號或者括弧中的第一句或者第二句(很少)的文本是配置工具中設置的名字。
首先,我們可以啟用兩個不同的稀疏型獨立協議組播路由協議("IP: PIM-SM version 1 support" 和 "IP: PIM-SM version 2 support"),組播有點像廣播,但是廣播會給所有計算機發送信號而組播只會給選定的組或者計算機發送信號。所有PIM協議都是工作在IP的組播路由協議。
注意:當計算機與另外一台計算機或者伺服器通信時,這叫做單播 - 只是以防你們想知道。
下一個要配置的網路特性是"ARP daemon support"。這讓內核有一張IP地址表以及它們相應的在內部緩存中的硬體地址。ARP代表的是地址解析協議(Address-Resolution-Protocol)。
為了額外的安全,"TCP syncookie support"應該要啟用。這保護計算機免於受到SYN洪水攻擊。黑客或者惡意軟體可能會發送SYN信息給一台伺服器來消耗它的資源,以便讓真實的訪客無法使用伺服器提供的服務。SYN消息會打開一個計算機和伺服器之間的連接。Syncookie會阻斷不正當的SYN消息。那麼,真實的用戶可以仍舊訪問訪問網站,而黑客則沒辦法浪費你的帶寬。伺服器應該啟用這個特性。
下面的特性是用於 "Virtual (secure) IP: tunneling"。隧道是一個網路協議到另外一個網路協議的封裝。當在使用虛擬私人網路(VPN)時需要使用安全隧道。
接下來,啟用"AH transformation"增加對IPSec驗證頭的支持。這是一種管理數據驗證的安全措施。
在這之後,啟用"ESP transformation"增加對IPSec封裝安全協議的支持。這是加密與可選擇的數據驗證的安全措施。
如果啟用了這個特性(IP: IPComp transformation),Linux內核會支持IP負載壓縮協議。這是一種無損壓縮系統。無損指的是數據仍會保持完整,在解壓縮後,數據在壓縮前後沒有變化。壓縮在加密前先執行。由於更少的數據傳輸,所以這個壓縮協議可以加速網路。
下面三個設置用於處理不同的IPsec特性("IP: IPsec transport mode"、"IP: IPsec tunnel mode"和"IP: IPsec BEET mode")。IPSec代表的是網際網路安全協議(Internet Protocol SECurity).兩台計算機之間並且/或者伺服器間的傳輸模式是默認的IPSec模式。傳輸模式使用AH或者ESP頭並且只加密IP頭。在隧道模式下,IP頭和負載會被加密。隧道模式通常用於連接網關到伺服器/伺服器或者伺服器到伺服器。BEET模式(Bound End-to-End Tunnel)不會在IP地址改變時重連。BEET模式下的連接會仍然存在。BEET模式比其他幾種模式使用更少的位元組。
下面,內核可以支持收到大量IPv4/TCP包時減輕棧負擔(Large Receive Offload (ipv4/tcp))。網卡(NIC)處理TCP/IP棧。這個特性在內核中增加了處理大型棧的代碼。
INET套接字可以啟用(INET: socket monitoring interface)。INET套接字用於網際網路。這個特性(當啟用時)會監視來自或者發往網際網路的連接與流量。
這裡有另外一個套接字監視介面(UDP: socket monitoring interface)。這個用於用戶數據報協議(User Datagram Protocol (UDP))。再說一下,這個特性監視UDP的套接字。
以下的設定會啟用不同的TCP擁塞控制(TCP: advanced congestion control)。如果網路變得太忙或者帶寬已滿,那麼許多計算機必須等待一些帶寬或者它們的數據流會變慢。如果流量被合理管理,這回有助於網路性能提升。
TCP連接可以被MD5保護(TCP: MD5 Signature Option support)。這用於保護核心路由器之間的邊界網關協議(Border Gateway Protocol (BGP))連接。核心路由器是網路中主要的路由器;這些路由器有時指的是網際網路/網路的骨幹。BGP是一種路由決策協議。
下一個設定允許你啟用/禁用"The IPv6 protocol"。當你啟用它,IPv4仍舊可以很好地工作。
下面的特性是一個特殊的隱私特性(IPv6: Privacy Extensions (RFC 3041) support)。這使得系統在網路介面中生成並使用不同的隨即地址。
注意:計算機中沒有數據是真正隨機的。計算機中隨機數和隨機字串通常稱為偽隨機。
在多路由的網路中,這個特性允許系統能夠更有效地計算出該使用哪一個(IPv6: Router Preference (RFC 4191))。
在這之後,一個用於處理路由信息的實驗性特性可以啟用/禁用(IPv6: Route Information (RFC 4191))。記住,在編譯一個穩定內核時,除非你確實需要這個問題中特性,才去安裝實驗性的功能。
有時,當系統自動配置它的IPv6地址時,它可能會得到一個網路中已被使用的IPv6地址。這是一個允許重複地址檢測(Duplicate Address Detection (DAD)的實驗性特性(IPv6: Enable RFC 4429 Optimistic DAD)。
IPv6可以有不同的IPsecc特性支持("IPv6: AH transformation" 和 "IPv6: ESP transformation")。
IPv6同樣可以使用先前討論過的IP負載壓縮協議(IP Payload Compression Protocol)(IPv6: IPComp transformation)。
這裡甚至有IPv6移動支持(IPv6: Mobility)。這允許使用IPv6的移動設備在保留同樣地址的情況下使用其他的網路。
再說一次,這裡同樣有一些針對IPv6的IPsec特性("IPv6: IPsec transport mode"、"IPv6: IPsec tunnel mode"、"IPv6: IPsec BEET mode")。
當啟用此項後,IPv6可以支持MIPv6路由優化(IPv6: MIPv6 route optimization mode)。這樣就可以確保最短和最佳網路路徑了。如果消息在更少的路由和網路設備間發送,那麼下載和上傳速度就可以更快。
如果一個管理員需要連接到兩個IPv6網路,但是只能通過IPv4來連接,這時內核使這個變得可能(IPv6: IPv6-in-IPv4 tunnel (SIT driver)。這通過隧道使IPv6報文穿越IPv4網路。
這個隧道特性是用於IPv6-in-IPv6 和 IPv4 tunneled in IPv6 (IPv6: IP-in-IPv6 tunnel (RFC2473))
另外一個隧道特性是(IPv6: GRE tunnel)。他只允許GRE隧道。(GRE:通用路由封裝(Generic Routing Encapsulation))
允許支持多重路由表(IPv6: Multiple Routing Tables)。路由表是一張網路位置列表和數據要去目的地的路徑。
允許根據源地址或前綴進行路由如果啟用了(IPv6: source address based routing)。
"IPv6 Multicast routing"(IPv6組播路由)仍然是實驗性質。IPv4和IPv6處理組播的方式不同。
典型的組播路由根據目標地址和源地址來處理組播包(IPv6: multicast policy routing)。啟用這個選項會將介面和包的標記(mark)包含到決策中。
下面可以啟用IPv6的PIM-SMv2 組播路由協議(IPv6: PIM-SM version 2 support)。這與先前提到的IPv4 PIM相同。因為IPv4和IPv6不同,所以PIM可以被v4/v6同時/分別激活
網路包標籤協議(Network packet labeling protocols)(就像CIPSO和RIPSO)可以啟用(NetLabel subsystem support)。這些標籤包含了安全信息和許可權。
網路包可以通過啟用安全標記(Security Marking)變得更安全。
這個網路特性增加了一些開銷(Time-stamping in PHY devices)。物理層(PHY)設備可以給網路包打上時間戳。PHY代表的是"PHYsical layer"。這些設備管理收到和發送的消息。
可以啟用netfilter(Network packet filtering framework)。Netfilters過濾並修改過往的網路包。包過濾器是一種防火牆。如果包滿足了一定的條件,包不會被允許通過。
數據報擁塞控制協議(Datagram Congestion Control Protocol)可以啟用(The DCCP Protocol)。DCCP允許雙向單播連接。DCCP有助於流媒體、網路電話和在線遊戲。
下一步,流控制傳輸協議(Stream Control Transmission Protocol)可以啟用(The SCTP Protocol)。SCTP工作在IP頂層並且是一個穩定可靠的協議。
下面的協議是可靠數據報套接字(Reliable Datagram Sockets)協議(The RDS Protocol)。
RDS可以使用Infiniband和iWARP作為一種支持RDMA的傳輸方式(RDS over Infiniband and iWARP),Infiniband和iWARP都是協議。RDMA代表的是遠程直接內存訪問(remote direct memory access)。RDMA用於一台遠程計算機訪問另一台計算機的內存而無需本機計算機操作系統的輔助。這就像直接內存訪問(DMA),但是這裡遠程代替了本地計算機。
RDS同樣可以使用TCP傳輸(RDS over TCP)
接下來,"RDS debugging messages"應該禁用。
下面的網路協議用於集群(The TIPC Protocol)。集群就是一組計算機作為一台計算機。它們需要有一個方式去通信,所以他們使用透明內部進程間通信協議(Transparent Inter Process Communication (TIPC))。
這個高速協議使用固定大小的數據包(Asynchronous Transfer Mode (ATM))。
使用ATM的IP可以與連接到一個ATM網路的IP的系統通信(Classical IP over ATM)。
下一個特性禁用"ICMP host unreachable"(ICMP主機不可達)錯誤信息(Do NOT send ICMP if no neighbor)。這防止了由於重新校驗而移除ATMARP表被移除的問題。ATMARP表管理地址解析。ICMP代表的是網際網路控制消息協議(Internet Control Message Protocol)並被常用於通過網路發送錯誤消息。
LAN模擬(LANE)模擬了ATM網路上的LAN服務(LAN Emulation (LANE) support)。一台LANE計算機可以作為橋接Ethernet和ELAN的代理。
"Multi-Protocol Over ATM (MPOA) support"允許ATM設備通過子網邊界發送連接。
在這個特性下,至少在kernel看來ATM PVCs的行為就像Ethernet(RFC1483/2684 Bridged protocols)。PVC代表的是永久虛電路(permanent virtual circuit)。虛擬連接是一種基於包的連接,它伴隨著主/原始協議使用其他更高層的協議。
"Layer Two Tunneling Protocol (L2TP)"(二層隧道協議)是隧道對應用透明。虛擬私有網路(Virtual Private Networks (VPNs))使用L2TP
要想使用基於Linux的乙太網橋,啟用這個橋特性(802.1d Ethernet Bridging)。在網路中,一個橋同時連接兩個或者更多的連接。乙太網橋是使用乙太網埠的硬體橋。
"IGMP/MLD snooping"(IGMP/MLD 探聽)是一種乙太網橋能夠基於IGMP/MLD負載選擇性地轉發組播信號的能力。禁用這個特性能夠明顯減少內核的大小。IGMP代表的是網際網路組管理協議(Internet Group Management Protocol),這是一種被用於設置組播組的協議。MLD代表多播監聽發現(Multicast Listener Discovery)。
下一個過濾特性允許乙太網橋選擇性地管理在每個數據包中的基於VLAN的信息的流量。禁用這個特性可以減小內核的大小。
通過啟用這個特性(802.1Q VLAN Support),VLAN介面可以在乙太網上創建。下面"GVRP (GARP VLAN Registration Protocol)"支持GVPR協議被用於在網路設備上註冊某些vlan。
在這之後,"MVRP (Multiple VLAN Registration Protocol) support"(多重VLAN註冊協議)可以啟用。MVRP是GVRP更新的替代品。
"DECnet Support"是一種Digital公司發明的網路協議。這是一中既安全又穩定的協議。
"DECnet router support"允許用戶製作基於Linux的支持DRCnet的路由。
注意:Linux可以用於伺服器、工作站、路由器、集群、防火牆並支持其他許多用途。
下面的特性用於支持邏輯鏈路層2(Logical Link Layer type 2)(ANSI/IEEE 802.2 LLC type 2 Support)。這層允許在同一個網路設備上使用多個協議。強烈建議在網路很重要的環境中啟用這個特性。最好所有內核都支持這個特性。
在下一篇文章中,我們將討論更多的關於可以配置的網路設定。
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-8.4525/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive