| 為了節省和控制上網開支,許多公司及辦公室採取了申請一條DDN專線,將整個公司或辦公室連成一個局域網,然後讓整個局域網共享這條DDN專線上網。在這種情況下,如下圖所示,我們必須通過一個代理服務器來實現。
1 HTTP代理服務器
代理服務器,顧名思義就是局域上不能直接上網的機器將上網請求(比如說,瀏覽某個主頁)發給能夠直接上網的代理服務器,然後代理服務器代理完成這個上網請求,將它所要瀏覽的主頁調入代理服務器的緩存;然後將這個頁面傳給請求者。這樣局域網上的機器使用起來就像能夠直接訪問網絡一樣。
並且,代理服務器還可以進行一些網站的過濾和控制的功能,這樣就實現了我們使用它的初衷——控制和節省上網費用。
在LINUX中,有一個功能很強大的http/https/ftp的代理服務器程序——Squid Proxy Server,由於它安裝簡單,使用方便,所以已經被廣泛地使用。在RedHat LINUX的安裝光盤中已經包含了它。下面我們說說它的使用方法。
1.1安裝Squid Proxy Server
由於在安裝光盤中用Squid的RPM安裝包,所以我們可以使用RPM來安裝Squid。
rpm –ivh squid-1.1.22-2.rpm
當然,由於這個安裝包是在光盤上的,我們要先將光盤mount到文件系統中來,才能夠進行安裝。
這樣,squid就會完成安裝,並做了相應的初始設置。
1.2配置初步
Squid Proxy Server僅有一個配置文件——/etc/squid.conf。我們必須對它進行相應的修改才能適用於我們的系統。下面就是一些最基本的配置選項。我們可以用vi打開這個文件進行編輯。
1.設置http/https/ftp的代理端口號:
代理端口的默認值是3128,可以根據自己的喜好修改。但是要注意的是,千萬不能與一些著名的端口沖突,例如POP端口——110等。如果你不是十分熟悉,就保留默認值吧。
下面就是在/etc/squid.conf文件中的一句:
http_port 3128
2.添加訪問控制組:
我們將需要區別開的不同用戶定義成一個訪問控制組。比如一個公司的內部網的網絡IP是192.168.200.0。而且隻想區分公司內和公司外的兩類用戶,則我們就在/etc/squid.conf文件中添加下表的兩句:
acl all src 0.0.0.0/0.0.0.0
acl company src 192.168.200.0/255.255.255.0
這樣,我們說定義了一個包含所有人的組,和一個包含公司內部網的所有人的組。下面就可以對這兩個組分別進行訪問權力的設制。
3.設置每個訪問控制組的訪問權力:
比如,我們希望公司內部的所有人都能夠通過代理服務器上網,而禁止其它的人使用代理服務器上網,則我們就在/etc/squid.conf文件中添加下面兩句:
http_access allow company
http_access deny all
也就是我們allow(允許)“company”組使用代理服務器,而除了這個組以外的“all”deny(禁止)使用代理服務器。要注意的是,這兩句一定不能順序調換。否則將禁止所有的用戶使用。
請大家好好體會。
4.存盤退出;
5.執行下面的命令,使得新的配置生效:
/etc/rc.d/init.d/squid restart
上面僅僅是一個最基本的設置,squid提供了許多功能強大的可選項,大家可以根據實際情況進行更詳盡的設置。在/etc/squid.conf文件中,每一項設置均有詳盡的注釋,大家可以參看這些幫助為squid作更多的設置。
1.3客戶端設置
下面我們以IE為例,簡單說明局域網上的客戶機的設置。
1.打開IE,在菜單欄上選擇“工具”® “Internet選項”®“連接”®“局域網設置”,將出現如下圖所示的對話框:
如圖所示,選中“使用代理服務器”選項,並且填上代理服務器的IP地址192.168.9.1以及代理端口號3128。
2.為了更好地使用squid代理服務器,我們可以進行更加詳細的設置,單擊“高級…”按鈕,進入如圖7-3所示的代理服務器設置對話框。
由於Squid是一個http和ftp的代理服務器,所以我們應該將使用代理服務器的協議修改為隻有http和ftp,修改後如下圖所示:
2 IP代理服務器
使用HTTP代理服務器,可以使局域網中的每一台電腦能夠獲得http/https/ftp三種服務。接下來我們討論如何讓LINUX成為一個連接局域網和Internet無縫連接的一個IP代理服務器。
在Internet中,每個主機都必須有一個唯一的IP地址。現在的IP協議是IPV4,第四版本的IP協議,在設計它的時候,盡管人們已經大膽地使用了32位地址(大約可以表示320億個不同地址),但是仍然無法滿足日益增長的網絡需求。所以網絡界已經開始研究和過渡到IPV6(採用128位地址,可以表示320億的四次方個不同地址)。但在尚未採用新的IP協議的時候,人們隻能使用一些折衷的方法。
現在最常用的方法就是:如果某個網絡直接與Internet相連,那就需要先申請一些公用地址,這些公用地址是唯一的,沒有重復的。而對於那些不打算直接與Internet相連的網絡則採用一些允許重復的“私有地址”。這樣,雖然這些私有地址可能被許多網絡使用,但是由於它們並不相互通信,所以就不會造成什麼影響。按照RFC 1918文件的規定,以下地址為“私有地址”:
1個A類地址:10.0.0.0
16個B類地址:172.16.0.0~172.31.0.0
256個C類地址用於私用地址:192.168.0.0~192.168.255.0
也就是說,使用這些網絡地址來定義內部網,然後通過一個網關或其它可以執行“網絡地址翻譯”功能的其它系統與Internet相連。如下圖所示:
正如上圖所示,在局域網上使用的是私有地址,而網關擁有兩個IP地址,一個是內部網的,而另一個則是全球唯一的公用地址。一般來說,申請一條DDN專線,就可以得到8個公用地址。
在後面的章節中,我們將以這個圖為原型,討論具體的設置方法。值得說明的是,在局域網部分,雖然圖中隻畫出了兩台,而實際上,最多可以擴充到254台。(因為我們使用的是一個C類地址:192.168.200.0)
3 安裝IP代理服務器
3.1重新編譯內核
如果你使用的是RedHat LINUX 6.0,那麼就請跳過這個小節。因為在RedHat LINUX 6.0中已經完成了這個部分的工作了。否則,請確認以下選項是否與要求一致。
IP:forwarding/gatewaying(CONFIG_IP_FORWARD)[Y/n] y
IP:optimize as router not host(CONFIG_IP_ROUTER)[Y/n] y
NetWork firewalls(CONFIG_FIREWALL)[y/n] y
TCP/IP networking(CONFIG_NET)[y/n] y
IP:firewalling(CONFIG_IP_FIREWALL)[y/n] y
IP:masquerading(CONFIG_IP_MASQUERADE) y
3.2配置兩塊網卡
要作為IP代理服務器的這台電腦,必須安裝兩塊網卡,而且必須確認兩塊網卡eth0和eth1工作正常。關於網卡的配置,請大家參看本篇的第三章。而在配置網卡的過程中,可以使用以下命令來使得網卡重新加載:
/etc/rc.d/init.d/network restart
將兩塊網卡的IP地址按實際情況設置好,一個是局域網內的IP地址,一個是連接Internet的公用IP地址。例如:
我們用第一塊網卡(eth0)將IP代理服務器連接到內部網交換機上,則將內部網的IP地址給第一塊網卡。
IP address:192.168.200.1 netmask:255.255.255.0
我們用第二塊網卡(eth1)將IP代理服務器與DDN專線相連(這個部分的連接一般由DDN專線的提供方ISP設置。則將隨著DDN而獲得的公用地址給第二塊網卡。
IP address:202.101.98.1 netmask:255.255.255.0
3.3設置IP的轉發規則
根據LINUX的內核版本不同,LINUX所提供的IP轉發規則設置工作也不一樣。在早期版本中,用的是ipfwadm,而在新的版本中(LINUX 2.2以後版本)使用的是ipchains。以下就簡單地說明如何使用ipchains工具設置IP的轉發規則。
1.設置思路
一般來說,我們可以採用以下兩種思路進行IP的轉發規則設置:
1)先全面禁止所有的輸入、輸出、轉發包,然後根據需要逐步打開所要求的各項服務。這種方法相對來說更安全,但是如果你對要實現的服務和功能不能清楚地知道應該打開哪些服務和端口就不太好辦了。
2)我們也可以先打開所有的輸入、輸出、轉發包。然後禁止一些危險包,IP欺騙包,廣播包,ICMP服務類型攻擊等。這種方法的缺點就是不夠安全。但是比較方便、容易配置。所以本文以這種方法作為設置的思路。
2.設置前的準備
在設置之前,我們應該對自己所要進行設置的網絡環境和要求有一個全面的了解,以便在設置的時候做到心中有數。在本例中我們就是以圖7-5所示為參考。
另外,由於IP的轉發規則比較多,而且容易變化,所以我們一般建立一個專門的腳本文件(例如:/etc/ipchains.set)來存放這些IP的轉發規則。當創建之後,我們要用chmod命令賦予它可執行的權限。然後運行它,這樣IP的轉發規則就生效了。
為了讓這個IP轉發規則能夠在一啟動就生效,我們必須在/etc/rc.d/rc.local中加上一行:
/etc/ipchains.set |