輕鬆建立Linux撥號服務

PPP(Point to Point Protocol)協議,即點對點協議,是標準的Internet協議。我們可以利用ppp撥號連接到Internet,也可通過建立撥號服務器,提供ppp撥入服務。例如,有些機構有多個外地部門,在本地已連通Internet,而外地部門有撥號到中心機房連上Internet的需求,則要求中心機房有一臺撥號服務器能提供ppp接入服務,而用目前比較流行的Linux操作系統來做,則顯得輕鬆有餘。本文以RedHat Linux爲基礎,詳細討論如何安裝配置ppp撥號服務器。

  一、軟件及網絡環境

  Redhat 7,內核2.2.16-22,pppd-2.3.11,局域網,Linux 服務器IP設爲202.194.177.9,服務器名稱爲jsred,分配給撥號用戶的固定IP爲202.194.177.66,主機名爲admin。

  二、服務器端的安裝

  1)安裝pppd

  在Linux服務器上查看有沒有安裝pppd,缺省安裝是在/usr/sbin/子目錄下。如果存在,再查看系統內核有沒有提供對ppp的模塊支持,如沒有,可以進到/usr/src/liunx 子目錄,用make menuconfig或make config,對內核進行配置。在PPP支持選項上,選上模塊標誌。然後重新編譯內核,用如下命令:

  make dep; make clean; make zlilo; rdev -R /vmlinuz

  2)安裝調制解調器

  在物理線路正確連接後打開Modem的電源,運行minicom來測試Modem是否已經正確安裝。輸入minicom -s 命令設置Modem相關參數,首先查看缺省串行口,缺省爲 /dev/modem。根據你所用的串行口將之改爲/dev/ttyS0或/dev/ttyS1,其次設置通信速率。如果minicom 與Modem連接成功,進入會話狀態,輸入ATS0=1,如果緊接着在下一行出現OK , 且Modem 的AA燈亮起,modem進入自動應答狀態。表明minicom與Modem通訊正常,Modem可以正常工作了;否則修改串口設置,重複上述步驟。也可用當地的ISP的電話號碼撥號,看能否正確連接。一般是先有撥號音,然後是嘈雜聲,再就是握手,表示接通,出現登錄提示畫面,可證明Modem已正確安裝。

  如果遇到Modem能接通,網卡不能工作或網卡能工作而Modem接不通,則要查看是否由於Moem與網卡或其它設備中斷衝突引起的。一般檢測串行口所佔用的中斷號。輸入:

  # cat /proc/interrupts 命令查看當前串口占用的中斷號,例:

  0: 8889830 timer

  1: 11557 keyboard

  4: 1940 serial

  可以看到當前串口占用的中斷是4。也可以用setserial 命令來給串口設置地址和中斷號(IRQ), 例如:# /sbin/setserial/dev/ttys0 irq 4 賦給串口一(COM1)中斷值爲4。或:#/sbin/setserial/dev/ttys0 auto_irq 賦給串口任意一個空閒中斷號。

  3)創建登錄終端

  在Unix中,將設備看成是一個特殊文件來進行訪問控制。通過特殊文件可以訪問特定的設備,Linux也不例外。 Linux的標準虛擬終端有mingetty、agetty等,本文介紹用mgetty 作爲ppp客戶登錄進來的虛終端,你可以通過網上搜索得到該軟件,Redhat 7自帶RPM包:mgetty-1.1.22-1.i386.rpm,安裝命令爲:rpm -ivh mgetty-1.1.22-1.i386.rpm ,安裝完成後在/sbin子目錄下有二進制文件mgetty。然後進到/etc子目錄,在inittab文件之後加上一句:

  s1:1235:respawn:/sbin/mgetty -D -s 38400 ttyS0

  保存,用init q命令重啓進程。用ps -aux命令可看到類似於:

  219 ? S 0:00/sbin/mgetty -D -s 38400 ttyS0

  表明該終端已準備好,可以接受用戶的撥入請求了。

  4)創建或修改PPP相關配置文件

  基於對撥號安全性的考慮,pppd默認要求進行主客戶機的身份自驗證,即對等驗證。除非使用root用戶帳號撥號或服務器沒有連上Internet,因此爲了使pppd能正常工作,需要在服務器端設置相應的主客戶機驗證信息。

  4.1)編輯/etc/ppp/options文件,在其中加入:

  -detach

  crtscts

  netmask 255.255.255.0

  asyncmap 0

  proxyarp

  其中,Asyncmap 表示,在對遠程機進行串行聯接時,連接可能將ASCII控制碼(0-31)用於特殊的用途,所以,這些代碼不能作爲數據包的一部分進行傳送,這就要告訴pppd,不要直接用這些控制碼。而用特殊的兩字符的轉義序列來代替它們。Asyncmap 0表示不需要對任何控制碼進行轉義處理。

  基於TCP/IP協議的以太網,並不直接利用IP地址,而是利用網卡MAC地址來傳送數據包。Proxyarp告訴它在遠程主機的Arp表中增加一項,列出本地機的地址和遠程機的網卡MAC地址。Netmask可以根據具體子網劃分,修改爲相應的子網掩碼值。

  4.2)創建/etc/ppp/options.ttyS0或/etc/ppp/options.ttyS1文件,對相應端口進行設置,在該文件中加入一行:jsred:admin或202.194.177.9:202.194.177.66。在/etc/hosts文件中爲撥入進來的客戶機登記一項:202.194.177.66 admin。

  4.3)編輯/etc/ppp/pap-secrets文件,由於撥號採用PAP驗證時,需在該文件中設置相應主客戶機信息及PAP驗證密碼。在該文件中設置如下:

  admin jsred "" 202.194.177.66

  第一項爲客戶機名稱或IP,第二項爲撥號服務器名稱或IP,第三項爲PAP密碼,由於我們使用標準的password文件來進行身份驗證,因而將這裏的密碼置空,第四項爲動態分配給客戶機的IP地址。

  5)建立pcguest撥號用戶帳號,創建登錄Shell

  用戶通過電話撥號進來,以什麼樣的身份和權限進入網絡呢?這就要爲撥入用戶建立相應的帳號和登錄Shell。如:# adduser pcguest

  在選擇其Shell時,不要選/bin/bash,而是填入/etc/ppp/ppplogin,ppplogin爲撥入用戶的登錄Shell文件,相當於Novell網用戶的登錄腳本。它爲撥號用戶初始化登錄環境。

  腳本如下:#! /bin/sh

  /usr/sbin/pppd auth -chap +pap login 202.194.177.9:202.194.177.66

  第一行表示腳本的其餘部分用/bin/sh去解釋該腳本。第二行的“+pap login”表示客戶端和服務器端採用PAP的驗證方式但使用/etc/password文件的內容。用“:”分隔的兩項(IP地址)列出ppp撥號服務器和分配給客戶機的IP地址。

  將該文件置爲可執行模式: chmod 755 ppplogin;pppd默認只能由root用戶執行,爲了使普通用戶能夠執行pppd,需要運行命令:#chmod u+s /usr/sbin/pppd。

  最後別忘了在/etc/shells文件中加進一句話:/etc/ppp/ppplogin,然後存盤退出。

  6)啓用Linux的IP轉發功能,爲客戶機通過撥號服務器上Internet鋪平道路

  Redhat 7默認是屏蔽IP轉發的功能,爲啓用IP轉發功能,修改文件/etc/sysctl.conf將 net.ipv4.ip_forward = 0 改爲net.ipv4.ip_forward=1 ,保存退出。重啓Linux服務器,服務器端設置工作完成。

  三、客戶端的安裝

  在Windows 98客戶機上,安裝撥號網絡,新建一連接項,選中該連接項,單擊鼠標右鍵彈出菜單,單擊“屬性”,打開“服務器”標籤的“TCP/IP配置”對話窗口,在“指定IP地址”欄,填入撥號服務器分配給遠端客戶的IP地址,如202.194.177.66,在“主控名稱服務器地址”欄中輸入Internet上有效的DNS服務器的IP地址,如果該Linux服務器能提供DNS服務,也可填入Linux服務器的IP地址,保存退出。雙擊連接項,進入撥號狀態,當終端窗口中出現登錄提示,輸入pcguest用戶名及相應密碼,再點擊“繼續”按鈕,則一個穩定、快速的PPP連接就建立了。

  四、測試

  測試用戶有沒有撥進服務器,可以在Linux服務器的控制檯終端輸入:

  # who

  root ttyp1 Apr 1 09:13

  pcguest ttyS0 Apr 1 09:29

  上面的pcguest即爲通過ttyS0終端登錄的ppp客戶。

  或輸入命令:# ifconfig

  你會發現除了以太網卡eth0,本地環路lo外,還多一個ppp0項。表明客戶已成功撥入。打開客戶端的瀏覽器,如Netscape或IE,看能否正常訪問Internet站點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章