歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux管理 >> Linux問題解決

用Linux實現共享ADSL方案

  *案例名稱   用Linux實現共享ADSL方案      *技術范圍   接入      *技術關鍵詞   ADSL Linux Squid      *案例描述   某一小企業團體,局域網規模很小,只有20幾台終端客戶機,沒有服務器,需要共享上網。還需要一定的互聯網訪問權限的設置,為了廢物利用,要求利用現存的一台2000年購買的賽揚電腦進行改造成互聯網代理服務器或者防火牆。      *解決思路   2001年購買的電腦,硬件性能普遍沒有時下主流配置強勁,所以如果用Windows Server來做平台是不可能的了,原因有很多,撇開硬件因素不談──想想吧,賽揚 466CPU、128MB 內存跑Windows Server 2003和ISA Server是什麼感覺啊,老牛拉破車!該團體沒有專職的網管員,不可能時刻去照顧服務器,但是Windows是眾所周知的出了名的脆弱,如果對他放任不管,不去升級補丁,不去仔細設置,沒幾天就會被黑客給攻陷了。另外該團隊的老板對使用破解的軟件心存顧慮。經綜合權衡,決定采用Linux+Squid+ Iptables來實現目標。這些都是開源軟件,不存在破解帶來的安全隱患。且Linux對硬件配置要求極低,像2000年買來的那樣配置的硬件, Linux可以為50個客戶端提供服務,速度絲毫不受影響,而且Linux由於沒有Windows普及面廣,針對它的病毒和黑客活動與Windows平台相比,可以說是微不足道。   故本方案決定采用Debian Linux作為服務器平台,使用Squid為客戶端提供HTTP代理服務。      *關鍵技術   Debian,是一種自由操作系統,全稱Debian GNU/Linux,采用Linux作為內核,由Debian計劃(Debian Project)組織維護。Debian是一個純粹由自由軟件所組合而成的操作環境,而其背後並沒有任何的營利組織支持,它的開發團隊全部都是來自世界各地的志願者,官方開發者的總數就將近1000名,而非官方的開發者亦為數眾多。   Debian以其堅守Unix和自由軟件的精神,以及其給予用戶的眾多選擇(現時Debian包括了超過15,000個組件並支持11個計算機系統結構)而聞名。因此,其它眾多Linux發行版,例如Ubuntu、Knoppix和Linspire也建基於Debian。   Debian以穩定性聞名,所以很多服務器都使用Debian作為其作業系統具備以下幾個特點:   Debian是極為精簡的Linux發行版,有著干淨的操作環境。   安裝步驟簡易,大部分情況下只要<Enter>、<Enter>一直按下去便可以順利安裝。   擁有方便的組件管理程序,可以讓用戶容易的尋找、安裝、刪除、更新程序,或系統昇級。   健全的軟件管理制度,包括了臭蟲回報、組件維護人等制度,讓Debian所收集的軟件質量在其的Linux發行組件之上。   擁有龐大的組件庫,令用戶只需通過其自身所帶的軟件管理系統便可下載並安裝組件,不必再在網絡上尋找。   組件庫分類清楚,用戶可以明確地選擇安裝自由軟件、半自由軟件或閉源軟件。   Squid cache(簡稱為Squid)是一個流行的自由軟件(GNU通用公共許可證)的代理服務器和Web緩存服務器。Squid有廣泛的用途,從作為網頁服務器的前綴cache服務器緩存相關請求來提高Web服務器的速度,到為一組人共享網絡資源而緩存萬維網,域名系統和其它網絡搜索,到通過過濾流量幫助網絡安全,到局域網通過代理上網。Squid主要設計用於在Unix一類系統運行。   Squid的發展歷史相當悠久,功能也相當完善。除了HTTP外,對於FTP與HTTPS的支持也相當好,在3.0 測試版中也支持了IPv6。      *配置過程   首先登錄Debian官方站點下載Debian安裝鏡像,最新版本是etch 4.0r0,將ISO鏡像下載回來刻成光盤來安裝最為妥當。   Debian安裝比較簡單,若有問題可以參閱Debian參考手冊(http://qref.sourceforge.net/),這本Debian參考手冊很好,提供了大量的實例,涵蓋了系統管理的方方面面。   安裝時要注意網絡的設置,第一塊網卡,即接ADSL Modem的網卡;第二塊網卡即接入局域網;系統表現為eth0和eth1,但實際上eth0和eth1未必對應與相應的網卡,故當網絡不通的時候應考慮交換一下網線,筆者就曾經犯過這樣的低級錯誤。   接內網的網卡的網絡設置要和局域網的網絡在同一網段,如有錯誤可以修改該網絡的設置:   #ifdown eth0   #nano /etc/network/interfaces #根據你的實際需求做出調整   #ifup eth0
  編輯/etc/network/interfaces文件,使其包含類似下面這段的內容:
  iface eth0 inte static     address 10.152.16.3     netmask 255.255.255.0   不要使用DHCP,否則其他客戶端會找不到這台服務器。該文件避免出現:   iface eth0 inet dhcp   快速設置ADSL撥號上網的方法是使用pppoeconf,在終端中輸入:   #pppoeconf   即可進行設置ADSL撥號。   pppoeconf是使用菜單界面詢問一些問題,設置後,系統每次啟動都會自動撥號ADSL。   服務器設置最關鍵是在squid的設置。   squid的安裝有兩種途徑,一是從Debian的源中來安裝;二是源碼編譯安裝。   第一個方法很簡單,   apt-get install squid   就可以完成安裝,但是Squid很多特性都不會實現,我通常更傾向於源碼編譯安裝。   到下面的官方網站下載最新的版本進行編譯安裝:   http://www.squid-cache.org/   其中STABLE穩定版、DEVEL版通常是提供給開發人員測試程序的,假定下載了最新 的穩定版squid-2.*.STABLE.tar.gz,用以下命令解開壓縮包:   tar xvfz squid-2.*.STABLE.tar.gz   用bz2方式壓縮的包可能體積更小,相應的命令是:   tar xvfj squid-2.*.STABLE.tar.bz2   然後,進入相應目錄對源代碼進行配置和編譯,命令如下:   cd squid-2.*.STABLE2   配置命令configure有很多選項,如果不清楚可先用“-help”查看。通常情況下,用到的選項有以下幾個:   --prefix=/web/squid   指定Squid的安裝位置,如果只指定這一選項,那麼該目錄下會有bin、sbin、man、conf等目錄,而主要的配置文件此時在conf子目錄中。為便於管理,最好用參數--sysconfdir=/etc把這個文件位置配置為/etc。   --enable-storeio=ufs,null   使用的文件系統通常是默認的ufs,不過如果想要做一個不緩存任何文件的代理服務器,就需要加上null文件系統。   --enable-arp-acl   這樣可以在規則設置中直接通過客戶端的MAC地址進行管理,防止客戶使用IP欺騙。   --enable-err-languages="Simplify_Chinese"   --enable-default-err-languages="Simplify_Chinese"   上面兩個選項告訴Squid編入並使用簡體中文錯誤信息。   --enable-linux-netfilter   允許使用Linux的透明代理功能。   --enable-underscore   允許解析的URL中出現下劃線,因為默認情況下Squid會認為帶下劃線的URL是非法的,並拒絕訪問該地址。整個配置編譯過程如下:   ./configure --prefix=/var/squid   --sysconfdir=/etc   --enable-arp-acl   --enable-linux-netfilter   --enable-pthreads   --enable-err-language="Simplify_Chinese"   --enable-storeio=ufs,null   --enable-default-err-language="Simplify_Chinese"   --enable-auth="basic"   --enable-baisc-auth-helpers="NCSA"   --enable-underscore   其中一些選項有特殊作用。最後執行下面兩條命令,將源代碼編譯為可執行文件,並拷貝到指定位置。   make   make install   配置squid是通過編輯/etc/squid/squid.conf文件來完成的。所有項目都在squid.conf中完成。Squid自帶的squid.conf包括非常詳盡的說明,相當於一篇用戶手冊,對配置有任何疑問都可以參照解決。   本案例是要求分advance組、normal組;advance組可以不受任何限制地訪問Internet,而normal組則只能在工作時間上網,而且不能下載多媒體文件,不能訪問某些特定的站點,而且發送請求不能超過3個。 則squid.conf文件內容如下:   http_port 10.152.16.3:8080   cache_mgr [email protected]   cache_dir null /tmp   cache_access_log /var/squid/access.log   cache_log /var/squid/cache.log   cache_store_log /var/squid/store.log   visible_hostname No1.proxy   client_mask 255.255.255.255   httpd_accel_host virtual   httpd_accel_port 80   httpd_accel_with_proxy on   httpd_accel_user_host_header on   acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b ...   acl normal proxy_auth REQUIED   acl all src 0.0.0.0   acl mmxfile urlpath_regex \.mp3$ \.avi$ \.exe$   acl conncount maxconn 3   acl worktime time MTWHF 8:30-12:00 14:00-18:00   acl sinapage dstdomain ok.sina.com.cn   acl qq dstdomain .tcccent.com.cn   http_access allow advance   http_access deny conncount normal   http_access deny !worktime   http_access deny mmxfile   http_access deny sinapage   http_access deny qq   http_access allow normal   Squid的能力遠不止此,可以建立強大的代理服務器陣列,可以幫助本地的Web服務器提高性能,可以提高本地網絡的安全性等。要想發揮它的功效,還需要進一步控制。 而這些就不是本案例所討論的范疇了。   對於普通的單位上網用戶,Squid可充當代理服務器,而對於大型網站又可以充當web加速器,在這兩個領域中Squid都表現異常優秀。
Copyright © Linux教程網 All Rights Reserved