獨辟蹊徑--實現Linux下的局域網遠程接入

字號:

本文介紹一種利用Linux服務器的兩個串口構建撥號服務器的方法,遠程用戶可以通過撥號連接到局域網,方便地進行信息傳遞和資源共享。
    筆者的配置環(huán)境是Red Hat 8.0 Linux操作系統(tǒng),所需的硬件包括兩個外置Modem(分別連接到COM1和COM2端口)和兩條電話線。實現步驟如下:
    1.初始化串口設備
    在/etc/inittab文件中加入如下兩行,用來初始化ttyS0和ttyS1兩個串口設備:
    S0:345:respawn:/sbin/mgetty -D -X 3 ttyS0
    S1:345:respawn:/sbin/mgetty -D -X 3 ttyS1
    然后,運行“/sbin/init q”命令使改動生效。
    2.指定認證方式
    在/etc/PPP目錄下創(chuàng)建文件ppplogin,內容如下:
    #!/bin/sh
    /usr/sbin/pppd auth -chap +pap login
    該文件指定用戶登錄時采用PAP認證。PAP和CHAP是PPP服務的兩種身份驗證協(xié)議。
    保存文件后,給文件設置執(zhí)行的權限:
    #chmod a+x /etc/ppp/ppplogin
    然后,更改/etc/mgetty+sendfax/login.config文件,去掉“/AutoPPP/”一行前面的注釋,并改為如下內容:
    /AutoPPP/ - - /etc/PPP/ppplogin
    3. 修改options文件
    修改/etc/PPP/Options文件為如下內容;
    detach
    Modem
    Lock
    crtscts
    asyncmap 0
    netmask 255.255.255.0
    proxyarp
    ms-dns 192.168.11.1
    “detach”選項非常重要。如果不指定這個選項,撥號程序就會進入后臺,使得Shell腳本退出,隨之而來的是串行線路被掛斷,導致連接中止。“detach”防止了tty設備脫離PPPD的控制。
    “Modem”選項使得PPPD監(jiān)視DTR引線,可以觀察到對等點是否已掉線。
    “Lock”選項指定在串行設備上使用UUCP風格的鎖定。
    “crtscts”選項用以打開硬件握手信號。
    “asyncmap 0”設置了異步字符映射,這個映射指定控制字符不能直接通過連接發(fā)送,需要先進行轉義。
    “netmask 255.255.255.0”設定PPP網絡接口的網絡掩碼。
    “proxyarp”選項打開了ARP代理功能。
    “ms-dns”2.168.11.1”指定了局域網內的DNS服務器地址,如沒有可以不設。
    4. 給撥入用戶分配IP
    創(chuàng)建/etc/ppp/Options.ttyS0和/etc/ppp/
    options.ttyS1兩個文件,內容如下:
    # Vi options.ttyS0
    192.168.11.3:192.168.11.242
    # Vi options.ttys1
    192.168.11.3:192.168.11.243
    其中,“192.168.11.3”是用作撥號服務器的那臺Linux機器的IP地址,“192.168.11.242”和“192.168.11.243”是分別指定給COM1口和COM2口撥入用戶的IP地址。
    5. 口令驗證
    編輯文件/etc/PPP/pap-secrets,內容如下:
    * * "secret" 192.168.11.242
    * * "passWord" 192.168.11.243
    如上所示,每行代碼包含四列,分別代表用戶名、服務器地址、口令值和IP地址列表?!?”表示可以與任何內容進行匹配。
    用戶撥入后,如果需要訪問局域網內的其它服務器,就必須打開IP轉發(fā)功能:
    echo 1> /proc/sys/net/ipv4/ip_forward
    要想在空閑一段時間后自動解除連接,需要在/etc/ppp/options中加入如下一行:
    idle 600
    上述代碼中,“600”表示600秒,即10分鐘。
    如果在相應目錄下找不到/sbin/mgetty文件和/etc/mgetty+sendfax/login.config文件,則需要安裝mgetty軟件包。