Devyn的Linux內核專題:配置網絡特性
在本文中,我們將繼續配置網絡特性。記住,網絡是計算機最重要的特性,這篇文章和這之后的網絡相關文章都要重點了解。
在我們開啟這系列之前,我先要澄清一些事情。配置進程不會編輯你當前系統的內核。這個進程配置的是你編譯(或者交叉編譯)新內核前的源代碼。一旦我完成了配置過程,那么我會討論讀者建議的話題。同樣,作為提醒,每個段落中在引號或者括號中的第一句或者第二句(很少)的文本是配置工具中設置的名字。
首先,我們可以啟用兩個不同的稀疏型獨立協議組播路由協議("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/