跳轉到內容

LPI Linux 認證/LPIC2 考試 202/網路

來自 Wikibooks,開放世界中的開放書籍
 
LPI logo

章節概述

[編輯 | 編輯原始碼]
  • 基本網路配置
    • 概述
    • Getty 簡介
    • 關於 mgetty
    • 關於 uugetty
    • 關於 getty_em
    • 關於 agetty
    • 關於 mingetty 和 fbgetty
    • PAP/CHAP 金鑰檔案
    • PAP 金鑰檔案
    • CHAP 金鑰檔案
    • 處理多個 PAP 認證連線
    • 練習
  • 高階網路配置和故障排除
    • 概述
    • 網路資料包過濾
    • Mangle 表
    • NAT 表
    • Filter 表
    • 狀態機
    • Conntrack 條目
    • 使用者空間狀態
    • TCP 連線
    • UDP 連線
    • ICMP 連線
    • 預設連線
    • 複雜協議和連線跟蹤
    • 規則的構建方式
    • 命令
    • 匹配
    • 通用匹配
    • 隱式匹配
    • TCP 匹配
    • UDP 匹配
    • ICMP 匹配
    • 顯式匹配
    • Limit 匹配
    • MAC 匹配
    • Mark 匹配
    • Multiport 匹配
    • Owner 匹配
    • State 匹配
    • TOS 匹配
    • TTL 匹配
    • 目標/跳轉
    • 練習

基本網路配置

[編輯 | 編輯原始碼]

描述: 候選人應能夠配置網路裝置以連線到本地網路和廣域網。此目標包括能夠在單個網路中的不同子網之間進行通訊,使用 mgetty 配置撥號訪問,使用調變解調器或 ISDN 配置撥號訪問,配置 PAP 和 CHAP 等認證協議,以及配置 TCP/IP 日誌記錄。

關鍵檔案術語工具包括

/sbin/route 
/sbin/ifconfig 
/sbin/arp 
/usr/sbin/arpwatch
/etc/ 

介面配置通常使用 ifconfig 命令完成。Ifconfig 通常會啟動指定的介面並在核心的路由表中為其 IP 地址建立一個路由。要訪問單個網路中的各種子網,請使用 route 或 ifconfig 的 netmask 標誌。使用 route,您可以設定具有相同 IP 的多個介面,但根據連線到哪個介面來路由資料包。使用 ifconfig,您可以為您的主機設定多個 IP,每個子網一個,從而成為多個子網之間的橋樑。

Getty 簡介

[編輯 | 編輯原始碼]

getty 是您用於撥號的程式。您不需要它進行撥出。除了顯示登入提示符之外,它還可以幫助接聽電話。最初,getty 用於從啞終端登入到計算機。如今,它的一種主要用途是登入到 Linux 控制檯。有幾個不同的 getty 程式,但其中幾個可以與調變解調器一起用於撥號。getty 程式通常在啟動時啟動。它必須從 /etc/inittab 檔案中呼叫。您可能在這個檔案中找到一些示例,您可能需要對其進行一些編輯。希望這些示例適合您個人計算機上安裝的 getty 版本。

有四種不同的 getty 程式可供選擇,可以與調變解調器一起用於撥號:mgetty、uugetty、getty_em 和 agetty。以下小節提供了簡要概述。Agetty 是這四種中最弱的一種,它主要用於直接連線的文字終端。mgetty 支援傳真和語音郵件,而 Uugetty 不支援。據說 mgetty 缺少 uugetty 的一些功能。getty_em 是 uugetty 的簡化版本。因此,mgetty 可能是您的最佳選擇,除非您已經熟悉 uugetty(或難以獲得 mgetty)。這些 getty 程式的語法不同,因此請確保您在 /etc/inittab 中使用正確的語法,無論您使用哪個 getty。

為了檢視您計算機上有關各種 getty 的文件,請使用“locate”命令。鍵入:locate “*getty*”(包括引號可能會有所幫助)。請注意,許多發行版只是將程式稱為 getty,即使它實際上可能是 agetty、uugetty 等。但如果您閱讀手冊頁(鍵入:man getty),它可能會顯示它是哪個 getty。這應該是路徑為 /sbin/getty 的 getty 程式。

Getty 在登入後“退出”(並且可以重新生成)

登入後,您會注意到(透過使用“top”、“ps -ax”或“ptree”)getty 程序不再執行。它發生了什麼?為什麼在您的 shell 被終止後 getty 會重新啟動?原因如下:在您輸入使用者名稱後,getty 會獲取它並呼叫 login 程式,告訴它您的使用者名稱。getty 程序被 login 程序替換。login 程序會要求您的密碼,檢查它,並啟動您的密碼檔案中指定的任何程序。此程序通常是 bash shell。如果是這樣,bash 會啟動並替換 login 程序。請注意,一個程序替換了另一個程序,並且 bash shell 程序最初作為 getty 程序啟動。這將在下文中說明。

現在,在 /etc/inittab 檔案中,如果 getty 被終止,它應該重新生成(重新啟動)。它在呼叫 getty 的行上這樣說。

示例:/etc/inittab 中的 getty 條目 S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102


但是,如果 bash shell(或 login 程序)被終止,getty 會重新生成(重新啟動)。為什麼?好吧,login 程序和 bash 都是 getty 的替代品,並繼承了它們的前身建立的訊號連線。事實上,如果您仔細觀察,您會注意到替換程序將具有與原始程序相同的程序 ID。因此,bash 在某種程度上是假扮的 getty,具有相同的程序 ID 號碼。如果 bash 被終止,就像 getty 被終止一樣(即使 getty 不再執行)。這會導致 getty 重新生成。

當用戶登出時,該序列埠上的所有程序都會被終止,包括 bash shell。如果啟用,這也會在調變解調器透過 DCD 電壓下降傳送結束通話訊號到序列埠時發生。登出或 DCD 下降都會導致 getty 重新生成。您可以透過手動終止 bash(或 login)來強制 getty 重新生成,方法是在“top”中按下 k 鍵等,或使用“kill”命令。您可能需要使用訊號 9 終止它(它無法被忽略)。


說明的迴圈

      init - spawns -> getty -- starts -> login - starts --> shell
        \                                                      /
         \---------------<<  returns control to <<------------/

您可以透過名稱開頭的減號識別登入 shell。

示例:ps 輸出(已過濾)walter 32255 0.0 0.7 4012 1772 pts/36 Ss 14:53 0:00 -bash

關於 mgetty

[編輯 | 編輯原始碼]

mgetty 是作為 uugetty 的替代品而編寫的,uugetty 早在 mgetty 出現之前就存在了。兩者都用於調變解調器,但 mgetty 是最好的(除非您已經致力於使用 uugetty)。Mgetty 也可以用於直接連線的終端。除了允許撥號登入之外,mgetty 還提供傳真支援和自動 PPP 檢測。它允許在 mgetty 等待傳入電話呼叫時撥出。還有一個名為 vgetty 的補充程式,它為某些調變解調器處理語音郵件。mgetty 文件還算不錯(除了語音郵件)。要自動啟動 PPP,必須編輯 /etc/mgetty/login.conf 以啟用“AutoPPP”。您可以在 http://www.leo.org/~doering/mgetty/http://alpha.greenie.net/mgetty/ 找到有關 mgetty 的最新資訊。

關於 uugetty

[編輯 | 編輯原始碼]

getty_ps 包含兩個程式:getty 用於控制檯和終端裝置,uugetty 用於調變解調器。Greg Hankins(Serial-HOWTO 的前作者)使用 uugetty,因此他關於 uugetty 的文章包含在此。請參見 Uugetty。

關於 getty_em

[編輯 | 編輯原始碼]

這是 ``uugetty 的簡化版本。它由 Vern Hoxie 編寫,在他完全 對 getty_ps 和 uugetty 所需的複雜支援檔案感到困惑後。它是 Vern Hoxie 提供的序列埠實用程式和資訊的集合的一部分,可以透過 ftp 從 scicom.alphacdc.com/pub/linux 獲取。該集合的名稱是 ``serial_suite.tgz.

關於 agetty

[編輯 | 編輯原始碼]

本小節篇幅較長,因為作者嘗試使用 agetty 進行撥號。agetty 似乎很簡單,因為它沒有初始化檔案。但是當我嘗試它時,即使沒有 CD 訊號,它也會開啟序列埠。然後,它在建立連線之前向處於 AT 命令狀態的調變解調器傳送了登入提示和 /etc/issue 檔案。調變解調器認為這一切都是一個 AT 命令,如果它確實包含任何“at”字串(偶然),它可能會對您的調變解調器配置檔案產生不利影響。回顯衝突可能會開始,其中 getty 和調變解調器會一遍又一遍地來回傳送相同的字串。如果您遇到這種情況,您可能會看到“過快重新生成”錯誤訊息。為了防止這種情況,您需要停用調變解調器的所有回顯和結果程式碼(E0 和 Q1)。還要使用 agetty 的 -i 選項來防止傳送任何 /etc/issue 檔案。

如果您在調變解調器埠上啟動 getty,並在幾秒鐘後發現您是在該埠上執行登入程序而不是 getty,則意味著一個錯誤的使用者名稱已從調變解調器傳送到 agetty。為了防止這種情況發生,我必須將我的撥號配置檔案儲存在調變解調器中,使其在開機時生效。另一個儲存的配置檔案用於撥號。然後,任何使用調變解調器的撥號程式都必須在其初始化字串中使用 Z、Z0 或 Z1 來初始化調變解調器以進行撥號(透過載入儲存的撥號配置檔案)。如果 1 配置檔案用於撥號,則使用 Z1 載入它,等等。如果您想稍後監聽撥號,則調變解調器需要重置為撥號配置檔案。並非所有撥號程式都能在退出時執行此重置。

因此,雖然 agetty 可以在您在調變解調器硬體中正確設定撥號配置檔案的情況下正常工作,但它可能最適合虛擬控制檯或終端,而不是調變解調器。如果 agetty 正在執行撥號,則沒有簡單的方法進行撥號。當有人第一次撥號到 agetty 時,他們應該按回車鍵以獲取登入提示。Debian 發行版中的 agetty 只是名為 getty。

關於 mingetty 和 fbgetty

[編輯 | 編輯原始碼]

mingetty 是一個小型 getty,它僅適用於顯示器(通常的控制檯),因此您不能將其用於撥號的調變解調器。fbgetty 與上述相同,但支援幀緩衝區。

基本網路配置

配置 PPP 的 PAP/CHAP 身份驗證

如果要連線到的伺服器需要 PAP 或 CHAP 身份驗證,請編輯您的 PPP 選項檔案並新增以下行

#
# force pppd to use your ISP user name as your 'host name' during the authentication process
name <your ISP user name> # you need to edit this line
#
# If you are running a PPP *server* and need to force PAP or CHAP uncomment the appropriate
# one of the following lines. Do NOT use these is you are a client connecting to a PPP server (even if
# it uses PAP or CHAP) as this tells the SERVER to authenticate itself to your machine (which
# almost certainly can't do - and the link will fail).
#+chap
#+pap
#
# If you are using ENCRYPTED secrets in the /etc/ppp/pap-secrets file, then uncomment the
# following line. Note: this is NOT the same as using MS encrypted passwords as can be
# set up in MS RAS on Windows NT.
#+papcrypt

基本網路配置 使用 MSCHAP

Microsoft Windows NT RAS 可以設定為使用 CHAP(挑戰/握手身份驗證協議)的變體。在您的 PPP 原始碼包中,您會找到一個名為 README.MSCHAP80 的檔案,其中討論了這一點。

您可以透過為 pppd 啟用除錯來確定伺服器是否正在請求使用此協議進行身份驗證。如果伺服器正在請求 MS CHAP 身份驗證,您將看到類似於以下內容的行

rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]

這裡的關鍵資訊是 auth chap 80。為了使用 MS CHAP,您需要重新編譯 pppd 以支援它。有關如何編譯和使用此變體的說明,請參閱 PPP 原始檔中的 README.MSCHAP80 檔案中的說明。

您應該注意,目前此程式碼僅支援連線到 MS Windows NT 伺服器的 Linux PPP 客戶端。它不支援設定使用 MSCHAP80 身份驗證來自客戶端的 Linux PPP 伺服器。

PAP/CHAP 金鑰檔案

[編輯 | 編輯原始碼]

如果您使用的是 pap 或 chap 身份驗證,那麼您還需要建立金鑰檔案。這些是

/etc/ppp/pap-secrets
/etc/ppp/chap-secrets

它們必須由使用者 root、組 root 擁有,並且出於安全原因具有 740 的檔案許可權。關於 PAP 和 CHAP 需要注意的第一點是,它們旨在對計算機系統進行身份驗證,而不是對使用者進行身份驗證。啊?有什麼區別?我聽到你問。好吧,一旦您的計算機建立了與伺服器的 PPP 連線,您系統上的任何使用者都可以使用該連線——不僅僅是您。這就是您可以使用 PPP 建立連線兩個區域網(LAN)的廣域網(WAN)連結的原因。

PAP 可以(並且對於 CHAP 來說是必需的)要求雙向身份驗證——也就是說,每臺計算機都需要一個有效的名稱和金鑰來識別參與的其他計算機。但是,這不是大多數提供撥號 PPP PAP 身份驗證連線的 PPP 伺服器的操作方式。

也就是說,您的 ISP 可能已經為您提供了使用者名稱和密碼,以允許您連線到他們的系統,然後連線到網際網路。您的 ISP 對您的計算機名稱並不感興趣,因此您可能需要使用 ISP 給您的使用者名稱作為您計算機的名稱。這是使用 name 使用者名稱選項來完成的。因此,如果您要使用 ISP 給您的使用者名稱,請新增以下行

name your_user name_at_your_ISP

到您的 /etc/ppp/options 檔案中。從技術上講,您應該真正使用 user our_user name_at_your_ISP 來使用 PAP,但 pppd 足夠智慧,如果需要使用 PAP,它會將 name 解釋為 user。使用 name 選項的優勢在於它對 CHAP 也有效。

由於 PAP 用於對計算機進行身份驗證,因此從技術上講您還需要指定一個遠端計算機名稱。但是,由於大多數人只有一家 ISP,因此您可以在金鑰檔案中使用萬用字元 (*) 作為遠端主機名。還值得注意的是,許多 ISP 運營著多個調變解調器組,這些調變解調器組連線到不同的終端伺服器——每個伺服器都有一個不同的名稱,但透過單個(旋轉)撥號號碼進行訪問。因此,在某些情況下,提前知道遠端計算機的名稱可能非常困難,因為這取決於您連線的哪個終端伺服器!基本網路配置

PAP 金鑰檔案

[編輯 | 編輯原始碼]

/etc/ppp/pap-secrets 檔案如下所示

# Secrets for authentication using PAP
# client        server       secret     acceptable_local_IP_addresses

四個欄位以空格分隔,最後一個欄位可以為空(這是您希望從 ISP 獲得動態和可能靜態 IP 分配時的情況)。假設您的 ISP 給您提供了名為 fred 的使用者名稱和名為 flintstone 的密碼,您將在 /etc/ppp/options[.ttySx] 中設定名為 fred 的選項,並將 /etc/ppp/pap-secrets 檔案設定為如下

# Secrets for authentication using PAP
# client        server  secret  acceptable local IP addresses
fred  * flintstone

這表示對於本地機器名稱 fred(我們已經告訴 pppd 使用,即使它不是我們的本地機器名稱)以及任何伺服器,都使用 flintstone 的密碼(金鑰)。請注意,我們不需要指定本地 IP 地址,除非我們必須強制使用特定的本地靜態 IP 地址。即使您嘗試這樣做,它也不太可能成功,因為大多數 PPP 伺服器(出於安全原因)不允許遠端系統設定要分配給它們的 IP 號碼。

CHAP 金鑰檔案

[編輯 | 編輯原始碼]

這要求您擁有相互身份驗證方法——也就是說,您必須允許您的機器驗證遠端伺服器,並且遠端伺服器驗證您的機器。

因此,如果您的機器是 fred,遠端機器是 barney,您的機器將設定 name fred remotename barney,遠端機器將在它們各自的 /etc/ppp/options.ttySx 檔案中設定 name barney remotename fred。

fred 的 /etc/chap-secrets 檔案如下所示

# Secrets for authentication using CHAP
# client        server  secret            acceptable local IP addresses
fred  barney flintstone
barney  fred wilma

對於 barney

# Secrets for authentication using CHAP
# client        server  secret            acceptable local IP addresses
barney          fred    flintstone
fred  barney wilma

特別注意,兩臺機器都必須有雙向身份驗證的條目。這允許本地機器驗證其對遠端機器的身份,以及遠端機器驗證其對本地機器的身份。

處理多個 PAP 認證連線

[編輯 | 編輯原始碼]

一些使用者有多個使用 PAP 連線的伺服器。只要您要連線的每個機器上的使用者名稱不同,這就不成問題。

但是,許多使用者在連線的兩個(或多個——甚至全部)系統上具有相同的使用者名稱。然後,這在從 /etc/ppp/pap-secrets 中正確選擇適當的行時會出現問題。

正如您可能預料的那樣,PPP 提供了一種克服此問題的機制。PPP 允許您使用 remotename 選項為連線的遠端(伺服器)端設定“假定名稱”。

假設您使用使用者名稱 fred 連線到兩個 PPP 伺服器。您將 /etc/ppp/pap-secrets 設定為類似於以下內容

fred pppserver1 barney
fred pppserver2 wilma

現在,要連線到 pppserver1,您將在 ppp-options 中使用 name fred remotename pppserver1,對於 pppserver2,則使用 name fred remotename pppserver2。

由於您可以使用 file filename 選項選擇與 pppd 一起使用的 ppp 選項檔案,因此您可以設定一個指令碼以連線到每個 PPP 伺服器,正確選擇要使用的選項檔案,從而選擇正確的 remotename 選項。

關鍵詞、檔案和實用程式

/sbin/route
/sbin/ifconfig
PAP, CHAP, PPP
/etc/*

.

華夏公益教科書