跳轉到內容

Linux 網路/SLIP 客戶端

來自華夏公益教科書,開放的書籍,開放的世界

SLIP 客戶端

[編輯 | 編輯原始碼]

SLIP 裝置命名為 `sl0'、`sl1' 等,第一個配置的裝置被分配為 `0',其餘的裝置按順序遞增。

核心編譯選項

            Network device support  --->
                [*] Network device support
                <*> SLIP (serial line) support
                [ ]  CSLIP compressed headers
                [ ]  Keepalive and linefill
                [ ]  Six bit SLIP encapsulation

SLIP(序列線路網際網路協議)允許您在序列線上使用 tcp/ip,無論是帶有撥號調變解調器的電話線,還是某種租用線路。當然,要使用 SLIP,您需要在您所在地區訪問 SLIP 伺服器。許多大學和企業在世界各地提供 SLIP 訪問。

Slip 使用您機器上的序列埠來承載 IP 資料報。為此,它必須控制序列裝置。Slip 裝置名稱命名為 sl0、sl1 等。這些如何對應您的序列裝置?網路程式碼使用所謂的 ioctl(i/o 控制)呼叫將序列裝置更改為 SLIP 裝置。有兩個提供的程式可以做到這一點,它們被稱為 dip 和 slattach

dip(撥號 IP)是一個智慧程式,能夠設定序列裝置的速度,命令您的調變解調器撥打鏈路的遠端端,自動登入到遠端伺服器,搜尋伺服器傳送給您的訊息並從中提取資訊,例如您的 IP 地址,並執行將序列埠切換到 SLIP 模式的必要 ioctl。dip 具有強大的指令碼功能,您可以利用它來自動化登入過程。您可以在以下位置找到它:metalab.unc.edu。

要安裝它,請嘗試以下操作

            user% tar xvzf dip337o-uri.tgz
            user% cd dip-3.3.7o
            user% vi Makefile
            root# make install

Makefile 假設存在一個名為 uucp 的組,但您可能希望根據您的配置將其更改為 dip 或 SLIP。

與 dip 相比,slattach 是一個非常簡單的程式,非常易於使用,但沒有 dip 那麼複雜。它沒有指令碼功能,它所做的只是將您的序列裝置配置為 SLIP 裝置。它假定您擁有所需的所有資訊,並且在您呼叫它之前已經建立了序列線。slattach 非常適合您與伺服器之間有永久連線的情況,例如物理電纜或租用線路。

我什麼時候使用哪個?

[編輯 | 編輯原始碼]

當您與作為 SLIP 伺服器的機器的連線是撥號調變解調器或其他臨時連結時,您將使用 dip。當您有租用線路(可能是電纜)連線到您的機器和伺服器,並且不需要任何特殊操作來使連結工作時,您將使用 slattach。有關更多資訊,請參見“永久 Slip 連線”部分。

配置 SLIP 類似於配置乙太網介面(請閱讀上面的“配置乙太網裝置”部分)。但是,有一些關鍵的區別。

首先,SLIP 連結與乙太網不同,因為網路上只有兩個主機,一個位於連結的每一端。與乙太網不同,乙太網只要您連線了電纜就可以使用,而 SLIP 則取決於您擁有的連結型別,您可能需要以某種特殊方式初始化您的網路連線。

如果您使用的是 dip,那麼這通常不會在啟動時完成,而是在稍後的某個時間完成,即您準備使用連結時。可以自動執行此過程。如果您使用的是 slattach,那麼您可能希望在您的 rc.inet1 檔案中新增一個部分。這將很快描述。

有兩種主要的 SLIP 伺服器型別:動態 IP 地址伺服器和靜態 IP 地址伺服器。幾乎每個 SLIP 伺服器都會在撥號時提示您使用使用者名稱和密碼登入。dip 可以自動處理您的登入。

使用撥號線和 DIP 的靜態 SLIP 伺服器。

[編輯 | 編輯原始碼]

靜態 SLIP 伺服器是您已獲得專屬於您的 IP 地址的伺服器。每次您連線到伺服器時,您都會使用該地址配置您的 SLIP 埠。靜態 SLIP 伺服器將接聽您的調變解調器呼叫,可能會提示您輸入使用者名稱和密碼,然後將所有發往您地址的資料報透過該連線路由到您。如果您有靜態伺服器,那麼您可能希望將您的主機名和 IP 地址(因為您知道它是什麼)的條目新增到您的 /etc/hosts 中。您還應配置一些其他檔案,例如:rc.inet2、host.conf、resolv.conf、/etc/HOSTNAME 和 rc.local。請記住,在配置 rc.inet1 時,您不需要為您的 SLIP 連線新增任何特殊命令,因為 dip 會為您完成所有繁重的工作,為您的介面進行配置。您需要向 dip 提供適當的資訊,它將在命令調變解調器建立呼叫並登入到您的 SLIP 伺服器後為您配置介面。如果這是您的 SLIP 伺服器的工作方式,那麼您可以轉到“使用 Dip”部分,瞭解如何適當地配置 dip。

使用撥號線和 DIP 的動態 SLIP 伺服器。

[編輯 | 編輯原始碼]

動態 SLIP 伺服器是每次您登入時都會從地址池中隨機分配給您 IP 地址的伺服器。這意味著您無法保證每次都會獲得任何特定的地址,並且該地址很可能在您登出後被其他人使用。配置 SLIP 伺服器的網路管理員會為 SLIP 伺服器分配一組地址供其使用,當伺服器收到新的呼入呼叫時,它會找到第一個未使用的地址,引導呼叫者完成登入過程,然後列印包含已分配的 IP 地址的歡迎訊息,並將繼續在該呼叫期間使用該 IP 地址。

為這種型別的伺服器配置類似於為靜態伺服器配置,除了您必須新增一個步驟,您需要獲取伺服器分配給您的 IP 地址並使用該地址配置您的 SLIP 裝置。

同樣,dip 會完成繁重的工作,並且新版本足夠智慧,不僅可以為您登入,還可以自動讀取歡迎訊息中列印的 IP 地址並將其儲存起來,以便您可以使用它來配置您的 SLIP 裝置。如果這是您的 SLIP 伺服器的工作方式,那麼您可以轉到“使用 Dip”部分,瞭解如何適當地配置 dip。

使用 DIP。

[編輯 | 編輯原始碼]

如前所述,dip 是一個強大的程式,可以簡化和自動化撥號到 SLIP 伺服器、登入、啟動連線以及使用適當的 ifconfig 和 route 命令配置 SLIP 裝置的過程。本質上,要使用 dip,您將編寫一個 `dip 指令碼',它基本上是 dip 理解的命令列表,告訴 dip 如何執行您希望它執行的每個操作。請檢視隨 dip 一起提供的 sample.dip,瞭解其工作原理。dip 是一個功能強大的程式,具有許多選項。這裡不一一介紹所有選項,您應該檢視隨您的 dip 版本提供的聯機幫助頁、README 和示例檔案。

您可能會注意到,sample.dip 指令碼假設您使用的是靜態 SLIP 伺服器,因此您事先知道您的 IP 地址。對於動態 SLIP 伺服器,較新的 dip 版本包含一個命令,您可以使用該命令自動讀取和配置您的 SLIP 裝置,使用動態伺服器分配給您的 IP 地址。以下示例是隨 dip337j-uri.tgz 提供的 sample.dip 的修改版本,可能是您的一個良好起點。您可能希望將其儲存為 /etc/dipscript 並編輯以適合您的配置。

     #
     # sample.dip    Dialup IP connection support program.
     #
     #               This file (should show) shows how to use the DIP
     #       This file should work for Annex type dynamic servers, if you
     #       use a static address server then use the sample.dip file that
     #       comes as part of the dip337-uri.tgz package.
     #
     #
     # Version:      @(#)sample.dip  1.40    07/20/93
     #
     # Author:       Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
     #

     main:
     # Next, set up the other side's name and address.
     # My dialin machine is called 'xs4all.hacktic.nl' (== 193.78.33.42)
     get $remote xs4all.hacktic.nl
     # Set netmask on sl0 to 255.255.255.0
     netmask 255.255.255.0
     # Set the desired serial port and speed.
     port cua02
     speed 38400

     # Reset the modem and terminal line.
     # This seems to cause trouble for some people!
     reset

     # Note! "Standard" pre-defined "errlevel" values:
     #  0 - OK
     #  1 - CONNECT
     #  2 - ERROR
     #
     # You can change those grep'ping for "addchat()" in *.c...

     # Prepare for dialing.
     send ATQ0V1E1X4\r
     wait OK 2
     if $errlvl != 0 goto modem_trouble
     dial 555-1234567
     if $errlvl != 1 goto modem_trouble

     # We are connected.  Login to the system.
     login:
     sleep 2
     wait ogin: 20
     if $errlvl != 0 goto login_trouble
     send MYLOGIN\n
     wait ord: 20
     if $errlvl != 0 goto password_error
     send MYPASSWD\n
     loggedin:

     # We are now logged in.
     wait SOMEPROMPT 30
     if $errlvl != 0 goto prompt_error

     # Command the server into SLIP mode
     send SLIP\n
     wait SLIP 30
     if $errlvl != 0 goto prompt_error

     # Get and Set your IP address from the server.
     #   Here we assume that after commanding the SLIP server into SLIP
     #   mode that it prints your IP address
     get $locip remote 30
	if $errlvl != 0 goto prompt_error

	# Set up the SLIP operating parameters.
	get $mtu 296
	# Ensure "route add -net default xs4all.hacktic.nl" will be done
	default

	# Say hello and fire up!
	done:
	print CONNECTED $locip ---> $rmtip
	mode CSLIP
	goto exit

	prompt_error:
	print TIME-OUT waiting for sliplogin to fire up...
	goto error

	login_trouble:
	print Trouble waiting for the Login: prompt...
	goto error

	password:error:
	print Trouble waiting for the Password: prompt...
	goto error

	modem_trouble:
	print Trouble occurred with the modem...
	error:
	print CONNECT FAILED to $remote
	quit

	exit:
	exit

以上示例假設您正在呼叫動態 SLIP 伺服器,如果您正在呼叫靜態 SLIP 伺服器,那麼隨 dip337j-uri.tgz 提供的 sample.dip 檔案應該對您有效。

當 dip 被賦予 get $local 命令時,它會搜尋來自遠端端的傳入文字,以查詢看起來像 IP 地址的字串,即用 `.' 字元分隔的數字字串。此修改專門針對動態 SLIP 伺服器而實施,以便可以自動執行讀取伺服器授予的 IP 地址的過程。

以上示例將透過您的 SLIP 鏈路自動建立一個預設路由,如果這不是您想要的,您可能有一個應作為預設路由的乙太網連線,那麼從指令碼中刪除 default 命令。在此指令碼執行完畢後,如果您執行 ifconfig 命令,您將看到您有一個 sl0 裝置。這是您的 SLIP 裝置。如果需要,您可以在 dip 命令完成後,使用 ifconfig 和 route 命令手動修改其配置。

請注意,dip 允許您選擇許多不同的協議與 mode 命令一起使用,最常見的示例是 cSLIP,用於帶壓縮的 SLIP。請注意,連結的兩端必須達成一致,因此您應該確保您選擇的內容與伺服器的設定一致。

以上示例非常健壯,應該可以處理大多數錯誤。有關更多資訊,請參考 dip 手冊頁。當然,例如,您可以將指令碼編碼為執行諸如在規定的時間段內未獲得連線時重新撥號伺服器,甚至在您可以訪問多個伺服器時嘗試一系列伺服器之類的操作。

使用租用線路和 slattach 的永久 SLIP 連線。

[編輯 | 編輯原始碼]

如果您在兩臺機器之間有電纜,或者有幸擁有租用線路,或者在您的機器和另一臺機器之間有其他永久序列連線,那麼您不需要費力地使用 dip 來設定您的序列鏈路。slattach 是一款非常易於使用的實用程式,它將為您提供足夠的配置連線的功能。

由於您的連線將是永久的,因此您需要在 rc.inet1 檔案中新增一些命令。從本質上講,您為永久連線所要做的就是確保將序列裝置配置為正確的速度並將序列裝置切換到 SLIP 模式。slattach 允許您使用一個命令執行此操作。將以下內容新增到您的 rc.inet1 檔案中

             #
             # Attach a leased line static SLIP connection
             #
             #  configure /dev/cua0 for 19.2kbps and cslip
             /sbin/slattach -p cslip -s 19200 /dev/cua0 &
             /sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
             #
             # End static SLIP.

Where:


   IPA.IPA.IPA.IPA
      represents your IP address.


   IPR.IPR.IPR.IPR
      represents the IP address of the remote end.

slattach 將第一個未分配的 SLIP 裝置分配給指定的序列裝置。slattach 從 sl0 開始。因此,第一個 slattach 命令將 SLIP 裝置 sl0 連線到指定的序列裝置,sl1 連線到下一個,依此類推。slattach 允許您使用 -p 引數配置許多不同的協議。在您的情況下,您將使用 SLIP 或 cSLIP,具體取決於您是否要使用壓縮。注意:兩端必須就您是否要使用壓縮達成一致。

華夏公益教科書