全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1993
推到 Plurk!
推到 Facebook!

Linux 使用 ADSL (計時制) 的經驗分享

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-07-04 23:44:59 IP:61.70.xxx.xxx 未訂閱
Linux 使用 ADSL (計時制) 的經驗分享 作者/出處/資料來源: Steven Nien 最後更新日期: 2001-10-20 前言 自從去年 (民國 88 年) 底,Hinet 推出 ADSL 之後,便廣受各方矚目,再加上今年 (民國 89 年) 四月底推出降價的優惠方案,使得申請人數暴增,當然此時各大 ISP 業者亦陸續推出 ADSL 的業務。其中 ADSL 又可分為固定制與計時制二種,前者具有費用較高及擁有固定 IP 的優點,後者費用較低,但採用動態分配 IP 的方式。換句話說,計時制的用戶,雖然有合法的 IP 可用,但每次撥接到 ISP 後,所取得的 IP 並不相同。因此,若有意架站 (提供某些伺服器的功能,例如:Web、Mail、FTP... 等) 的公司或個人,便申請固定制,其餘則申請計時制。 由於計時制的申請人數較多,而且計時制必須撥接上網,因此本文特別針對 ADSL 計時制的特性,加以說明如何在 Linux 的系統下使用。另外,由於計時制的 IP 並不固定,因此本文也將提供二個使用的技巧,讓計時制的用戶也能像固定制的用戶般的方便。當然還是會有些差異,但就我個人而言,我認為這樣便足夠了,不需另外每個月花 800 元 (目前 Hinet 固定制與計時制的差價) 來申請固定制。 安裝與設定 在開始安裝之前,首先說明,以下所提到的操作與設定,均是以 RedHat 6.2 的環境為主,為免因各種 Linux 套件所產生的差異性,而造成無法順利執行,故在此先聲明。事實上,現在大多數的 Linux 套件應該都已經內容相關的軟體,例如:RedHat 7.0/7.1.. 等,所以都是可以用的。 由於 ADSL 計時制是採用 Point-to-Point Over Ethernet (簡稱 PPPoE) 的通訊協定 (詳細內容請參考 RFC2516 的說明) 來撥接到 ISP,故我們必須要先找到一套可以在 Linux 下執行的 PPPoE Client,這類的軟體可以在 freshmeat.net 找到好幾個,在本文將以 RP-PPPoE 為例。 RP-PPPoE 這套軟體可以在 http://www.roaringpenguin.com/pppoe/ 找到相關的說明,或下載最新的檔案。而目前較新的 Linux Distribution (包括 RedHat 7.x/Mandrake 8.x...等) 均已內含此軟體,直接使用即可。 系統需求 Linux Kernel 2.0 或 2.2 系列 Kernel 要支援 packet sockets。(預設已經開啟此功能) pppd 2.3.7 或更新版。(如果要使用 demand-dialing 則要求 pppd 2.3.10 或更新版) Ethernet 網路卡 ADSL Modem (由中華電信提供) 開始安裝 先在 Linux 中將網路卡的相關設定完成 (在 conf.modules 檔案中設定,或者藉由 netconf 程式來設定)。另請要注意一點,要接 ADSL ATU-R 的那片網路卡不要設定 IP 等相關資料。要檢查是否設定正確,可執行下列指令查看: [root@linux /root]# ifconfig -a eth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF inet addr:192.168.29.254 Bcast:192.168.29.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1964 errors:0 dropped:0 overruns:0 frame:0 TX packets:1372 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:10 Base address:0x300 eth1 Link encap:Ethernet HWaddr 00:80:C8:7B:AE:D8 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:5 Base address:0x320 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:229 errors:0 dropped:0 overruns:0 frame:0 TX packets:229 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 你應該看到與上面類似的訊息,其中 eth0 與 eth1 分別是我的二張網路卡,而 eth1 是要用來接 ATU-R 的網路卡,所以雖然我有載入此網路卡的模組,但並未設定 IP。(如果你根本未看到你所設定的網路卡出現,或者其 HWaddr 後面未顯示該網路卡的 MAC 位址,那代表你的設定有問題,須再檢查看看。) 檢查是否已經安裝 pppd。 [root@linux /root]# rpm -qa | grep ppp 如果出現類似 ppp-2.3.11-4 這樣的訊息,則表示已安裝 pppd,請跳到步驟 3。 安裝 pppd。(RedHat 6.2 中的版本為 ppp-2.3.11-4.i386.rpm) [root@linux /root]# rpm -ihv ppp-2.3.11-4.i386.rpm 安裝 rp-pppoe-2.2-1.i386.rpm。 [root@linux /root]# rpm -ihv rp-pppoe-2.2-1.i386.rpm 設定 執行下列指令,並依說明輸入相關的資料: [root@linux /root]# adsl-setup Welcome to the Roaring Penguin ADSL client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly... Looks good! Now, please enter some information: USER NAME >>> Enter your PPPoE user name (default bxxxnxnx@sympatico.ca): 84xxxxxx@hinet.net (輸入 ISP 給你的帳號,格式如範例如示。) INTERFACE >>> Enter the Ethernet interface connected to the ADSL modem (default eth1): eth1 (輸入連接 ADSL ATU-R 的網路卡名稱,例如:eth0) Do you want the link to come up on demand, or stay up continuously? If you want it to come up on demand, enter the idle time in seconds after which the link should be dropped. If you want the link to stay up permanently, enter `no` (two letters, lower-case.) NOTE: Demand-activated links do not interact well with dynamic IP addresses. You may have some problems with demand-activated links. >>> Enter the demand value (default no): no (如果你希望 ADSL 持續連線,則回答 no,否則如果希望一段時間未使用便斷線, 則輸入你希望的時間,單位為秒。) DNS Please enter the IP address of your ISP`s primary DNS server. If your ISP claims that `the server will provide DNS addresses`, enter `server` (all lower-case) here. If you just press enter, I will assume you know what you are doing and not modify your DNS setup. >>> Enter the DNS information here: 168.95.1.1 (輸入你的 ISP 所提供的主要的 DNS 伺服器的 IP,Hinet 的用戶可輸入 168.95.1.1) Please enter the IP address of your ISP`s secondary DNS server. If you just press enter, I will assume there is only one DNS server. >>> Enter the secondary DNS server address here: 168.96.192.1 (輸入你的 ISP 所提供的次要的 DNS 伺服器的 IP,Hinet 的用戶可輸入 168.95.192.1) PASSWORD >>> Please enter your PPPoE password: >>> Please re-enter your PPPoE password: (輸入 ISP 所核發給你的密碼,要連續輸入二次,且二次的密碼要相同。) FIREWALLING Please choose the firewall rules to use. Note that these rules are very basic. You are strongly encouraged to use a more sophisticated firewall setup; however, these will provide basic security. If you are running any servers on your machine, you must choose `NONE` and set up firewalling yourself. Otherwise, the firewall rules will deny access to all standard servers like Web, e-mail, ftp, etc. If you are using SSH, the rules will block outgoing SSH connections which allocate a privileged source port. The firewall choices are: 0 - NONE: This script will not set any firewall rules. You are responsible for ensuring the security of your machine. You are STRONGLY recommended to use some kind of firewall rules. 1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation 2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway for a LAN >>> Choose a type of firewall (0-2): 0 (如果這部 Linux 的機器是擔任 Gateway 的角色,則選擇 2,這樣內部的機器便可 透過此 Linux 機器,連結到 Internet。如果此 Linux 機器是獨立的機器,則可選 擇 1,這樣除了這部 Linux 可連結到 Internet 之外,還會有基本 Firewall 的功 能。當然你也可以選擇 0,這樣此 Linux 只負責撥接到 ISP,而沒有任何 Firewall 的功能。在這裡我選擇 0,因為我打算自己使用 ipchains 及 ipmasqadm 來設定我 的 Firewall 的功能。但這樣做會比較麻煩(換個角度來說,這樣做比較有樂趣,而 且學得到東西),如果你不想這樣做,你可以選擇 1 或 2。) ** Summary of what you entered ** Ethernet Interface: eth1 User name: 84025008@hinet.net Activate-on-demand: No Primary DNS: 168.95.1.1 Secondary DNS: 168.95.192.1 Firewalling: NONE >>> Accept these settings and adjust configuration files (y/n)? y (最後檢查一下上面所列出來的資料是否有誤,如果正確無誤,請輸入 y 將之前的設 定存檔,否則請按 n 並重新執行 adsl-setup 來設定。) Adjusting /etc/ppp/pppoe.conf Adjusting /etc/resolv.conf (But first backing it up to /etc/resolv.conf-bak) Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets (But first backing it up to /etc/ppp/pap-secrets-bak) (But first backing it up to /etc/ppp/chap-secrets-bak) Congratulations, it should be all set up! Type `adsl-start` to bring up your ADSL link and `adsl-stop` to bring it down. Type `adsl-status` to see the link status. 使用 完成以上的步驟之後,如果一切順利的話,我們便可以開始利用 ADSL 來享受高速上網的樂趣。(說真的,和過去用 56K Modem 相比,我覺得蠻快的!!) 啟動連線 [root@linux /root]# adsl-start . Connected! 檢查連線狀態 [root@linux /root]# adsl-status adsl-status: Link is up and running on interface ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:168.95.186.53 P-t-P:168.95.186.254 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:18 errors:0 dropped:0 overruns:0 frame:0 TX packets:15 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 結束連線 [root@linux /root]# adsl-stop Killing adsl-connect (1046) Killing pppd (1058) 問題處理 陸續有些人寫 Email 詢問依照上述設定依然無法成功連線的問題,接下來說明如何解決問題: 如果是使用 bash shell 的話,請執行 DEBUG=1 adsl-start 如果是使用 tcsh or csh shell 的話,請執行 setenv DEBUG 1; adsl-start 然後到 /tmp 目錄中找一下,會產生一個 Log 檔,仔細看一下這個檔案的內容,或許就可以知道問題出在哪裡? 最後,記得執行 setup 來設定 adsl 的服務要自動啟動。 如何讓多部 PC 透過 Linux 連到 Internet 當完成前面的步驟之後,Linux 便可藉由 ADSL 的方式連到 Internet。但若你有多部 PC 要同時上網,總不能每部都申請一條 ADSL 吧?! 那可要花不少錢。這一小節便說明,如何透過 Linux 來連接 Internet。 首先,你必須再 Linux 另外安裝一片網路卡,當然所有要上網的 PC 也都要有一片網路卡,最後再買一個 Hub,來將這幾部 PC (包括 Linux 上的那片網路卡) 接到 Hub,如此硬體架構便算完成。 接下來,你可以從選擇一組保留未用的私有 IP (例如:192.168.1.x),自行分配給每部機器,例如: Linux 192.168.1.254/24 PC1 192.168.1.1/24 PC2 192.168.1.2/24 ..... 以此類推 當然記得要將所有 PC 的子網路遮罩 (Gateway) 指向 Linux,也就是 192.168.1.254;至於 DNS 就設你的 ISP 所提供的 IP。 至於在 Linux 上,當然就是設 IP 為 192.168.1.254,Subnet Mask 為 255.255.255.0。還有請檢查是否已經安裝 ipchains。如果尚未安裝,請使用 RPM 的指令來安裝,檔案在 RedHat 6.2 的光碟中,檔案名稱為 ipchains-1.3.9-5.i386.rpm。 另外,我們可以在 Linux 建立一個 Shell Script,內容如下所示: #!/bin/sh echo "Starting NAT..." depmod -a modprobe ip_masq_ftp echo 1 > /proc/sys/net/ipv4/ip_forward ipchains -A forward -j MASQ -s 192.168.1.0/24 姑且我們就將檔案命名為 nat,並儲存到 /etc/rc.d 的目錄中。並更改檔案的權限為 755,如下指令所示: [root@linux rc.d]# chmod 755 /etc/rc.d/nat 最後,修改 /etc/rc.d/rc.local 的內容,以便讓 nat 這個 script 一開機便自動執行。因此我們在 rc.local 檔案的最後面加上如下所示的內容: if [ -f /etc/rc.d/nat ]; then /etc/rc.d/nat fi 到此設定便完成了,我們可以立刻執行下列的指令來啟動此功能: [root@linux rc.d]# /etc/rc.d/nat 或將 Linux 重新開機,也是可以的。 OK.. 馬上找部 PC 試試看是否可以正常連到 Internet。 解決動態 IP 的問題 目前計時制雖可像專線般使用,可是 ISP 動態分配 IP 是很麻煩的問題,因為別人或當自己在外面時,無法連回 Linux,因為包括你自己在內,你不知道現在的 IP 是什麼。為了解決此一問題,我使用二種方式來克服,雖然沒像固定 IP 那樣方便,但至少還是可以解決變動 IP 的困擾。 使用 Shell Script 來偵測 由於計時制 IP 不固定,因此我首先想到的是:執行 Shell Script 來檢查 IP 是否改變,一但 IP 改變,便發 Email 給特定帳號,這樣即使你人在外面,也可以得知目前的 IP 為何? 以下是我所使用的 Script: #!/bin/sh cd /usr/local/ping rm -rf ping-stop connect=0 # 0 disconnect 1 connect while [ ! -f ping-stop ] do connect=`ifconfig ppp0 | grep inet | wc -l` if [ $connect -eq 0 ] ; then sleep 3 else adslipold=$adslip gatewayold=$gateway adslip=`ifconfig ppp0 | grep inet | sed -e `s/inet addr://g` | sed -e `s/P-t-P://g` | gawk `{print $1}`` gateway=`ifconfig ppp0 | grep inet | sed -e `s/inet addr://g` | sed -e `s/P-t-P://g` | gawk `{print $2}`` if [ "$adslip" != "${adslipold}" ] ; then echo "`date %m/%d/%Y` `date %T`" > connect echo $adslip >> connect echo $gateway >> connect mail `cat maillist` -s Notice-IP更新 < connect fi sleep 180 fi done 我們將以上的 Script 儲存到 /usr/local/ping 的目錄中,檔案名稱為 ipmonitor。另外必須建立一個文字檔,檔名為 maillist。檔案內容為我們要發通知的對象,例如: stnien@linux.org,abc@hinet.net 最後,依然在 /etc/rc.d/rc.local 的最後,加上以下的段落: if [ -f /usr/local/ping/ipmonitor ]; then /usr/local/ping/ipmonitor & fi 我們可以執行 /usr/local/ping/ipmonitor & 或重新開機,以便讓此 Script 開始執行。這樣一來,我們只要收 Email 便知道現在的 IP 是多少。 向提供動態 DNS 的公司註冊固定的網址 前面所提到的方法雖然可以讓特定的人員知道目前所使用的 IP 位址,但如果要架設伺服器的話,就派不上用場,因為我們無法向全天下的人宣佈最新的 IP 位址,因此我們還是必須要有固定的網址。所幸目前有幾個提供動態 DNS 服務的網站,可以滿足我們的需求,其中 http://www.dyndns.org/ 及 http://www.yi.org/ 均是這類型的網站,在本小節中,將以使用 http://www.dyndns.org/ 所提供的服務為例。 首先,要使用 http://www.dyndns.org/ 所提供的服務之前,必須先到 http://members.dyndns.org/ 申請一個帳號。基本上申請的程序還算簡單,因此在此省略說明。假設你已經完成申請的程序,而且順利取得帳號及密碼,接下來請到動態 DNS Client 的網頁 (網址為 http://support.dyndns.org/dyndns/clients/unix.shtml ) 下載所需的 Client 程式。目前已經提供數種 Client 可供選擇,接下來我們以 ddclient 為例。 在開始安裝設定之前,請先確認 Linux 系統是否已經安裝 Perl 5.004 或更新版本。如果尚未安裝,可從 RedHat 6.2 光碟中找到 perl-5.00503-10.i386.rpm 來安裝。接下來開始介紹安裝的程序: [root@linux /tmp]# tar zxvf ddclient-3.0.2.tar.gz [root@linux /tmp]# mkdir /root/bin [root@linux /tmp]# cp ddclient-3.0.2/ddclient /root/bin [root@linux /tmp]# cp ddclient-3.0.2/sample-etc_ddclient.conf /etc/ddclient.conf [root@linux /tmp]# cp ddclient-3.0.2/sample-etc_cron.d_ddclient /etc/cron.d/ddclient [root@linux /tmp]# cp ddclient-3.0.2/sample-etc_rc.d_init.d_ddclient /etc/rc.d/init.d/ddclient [root@linux /tmp]# chkconfig --add ddclient 編輯 /etc/ddclient.conf 檔案,其內容請參考如下所示範例(請依實際狀況自行修改): syslog=yes mail=root use=if, if=ppp0 protocol=dyndns2 server=members.dyndns.org login=steven #申請的帳號 password=yourpassword #申請的密碼 mx=scw.homeip.net scw.homeip.net #申請的FQDN 最後執行下列指令以啟動 ddclient: [root@linux /tmp]# /etc/rc.d/init.d/ddclient start 很簡單吧!! 簡單的小動作,卻每個月可以省下一筆費用,嗯! 還蠻划算的... :-) Steven 的電腦世界 - 永久網址 http://scw.homeip.net/ (主站) 或 http://scw.2y.net/ (Mirror站) 粘松德 版權所有 Copyright 2000-2002 Steven Nien All Rights Reserved
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
paul
初階會員


發表:8
回覆:82
積分:28
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-07-17 13:19:39 IP:61.70.xxx.xxx 未訂閱
補充: 1.RedHat 7.2 少了 adsl-setup 這個程式,所以必須到 pppoe 原始網站將最新的檔案抓下來重新安裝才行. 2.在RedHat 7.x 版安裝時,預設的防火牆等級要設定為0(即不要預設防火牆),裝好後自行再設定 ipchain 或 iptables 才不會有某些協定無法使用的問題. 3.RedHat 7.2 版的 sendmail 正常安裝後,會有無法送信出去的問題,要自己再把 sendmail.cf 其中的 127.0.0.1 改為 0.0.0.0 才會正常.
天外來客
初階會員


發表:22
回覆:199
積分:44
註冊:2001-11-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-08-24 11:40:10 IP:61.224.xxx.xxx 未訂閱
引言: 2.在RedHat 7.x 版安裝時,預設的防火牆等級要設定為0(即不要預設防火牆),裝好後自行再設定 ipchain 或 iptables 才不會有某些協定無法使用的問題.
阿阿~我就是發生使用rh 7.3或md 8.2 都出現udp可以過,tcp 不能過的問題!! 請問大大,真的只有重灌一途嬤?! @_@
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-08-24 13:02:50 IP:61.221.xxx.xxx 未訂閱
不需重灌阿 遇到問題才能真正學東西 並自行解決問題所在點 建議 netconf 這是網路設定的指令! 請參考指令 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19606 將要使用的post打開 如網頁使用80,ftp使用21,網路方鄰137,138,139等 安裝新版pppop的通訊協定如下 ppp-2.3.11-4.i386.rpm(解壓安裝) 或使用webwin設定 請自行觀看相關網址 都有敘述
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
天外來客
初階會員


發表:22
回覆:199
積分:44
註冊:2001-11-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-08-26 01:15:14 IP:61.224.xxx.xxx 未訂閱
引言: 不需重灌阿 遇到問題才能真正學東西 並自行解決問題所在點 建議 netconf 這是網路設定的指令! 請參考指令 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19606 將要使用的post打開 如網頁使用80,ftp使用21,網路方鄰137,138,139等 安裝新版pppop的通訊協定如下 (解壓安裝) 或使用webwin設定 請自行觀看相關網址 都有敘述
謝謝您的回應!! 我也是這樣想,可是怎樣都弄不好~(沮喪~) 我進去rc3.d裡面,看到系統有執行iptables 的script,我直接將鏈結刪除,並重新開機,結果還是依樣~~~ 我裝md 8.2,居然找不到netcfg 或netconf,裝了wedmin,可是port 80連不上,ssh 也不通~~~,真的有點給他....... 待會來去找ppp-2.3.11-4.i386.rpm.....
crispin2k
初階會員


發表:7
回覆:42
積分:33
註冊:2002-07-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-08-26 20:11:50 IP:61.70.xxx.xxx 未訂閱
對於Linux的ADSL連線,我用RedHat 7.3也是試了半天都連不起來,不過ManDrake 8.2卻是不用多做設定,安裝完成後就可自動連線,而且X-Window的速度比RedHat還快很多(資源吃的比較少),只是習慣注音輸入法的我,卻找不到注音輸入法可用,真是令人沮喪!另外,ManDrake 8.2的中文化尚有部分問題,這一點RedHat 7.3倒是做的很好。 裝了許多套Linux,給我的感覺是RedHat比較商業化,安裝的內容一變再變,設定的方式每一個版本都有些許差異(想賺顧問諮詢費),但是來自歐洲的Linux就很老實,像原作者的感覺一樣,令人欣賞。
系統時間:2024-03-28 18:27:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!