系統准備:一個運轉正常的Linux(這個大家都有)
硬件要求:至少一塊網卡,寬帶設備已經申請完畢,同時已經開通
廣州電信的ADS(LAN)L使用的是PPPOE撥號方式,因此,要在Linux下使用ADSL,必須安裝PPPOE客戶端軟件。
下面說明如何進行安裝:本人以RedHat Linux 7.3為平台,其它平台Linux的安裝辦法可以參照下面安裝的步驟。
一、安裝的前提條件1.確保安裝了網卡並工作正常使用命令#ifconfig eth0查看網卡狀態2.在系統中不要設置默認路由(網關),讓ADSL撥號後自動獲得如果已經設置了默認路由,使用以下方法刪除:在文件 /etc/sysconfig/network 中刪除 GATEWAY= 這一行,然後以root執行:#/etc/rc.d/init.d/network restart 3.已經安裝了pppd軟件包如果存在文件 /usr/sbin/pppd,則說明已經安裝了pppd;如未安裝,從RedHatLinux 安裝光盤上裝ppp-2.3.11-4.i386.rpm(版本可能不一樣)這個軟件包二、安裝PPPOE客戶端軟件Linux下的PPPOE客戶端軟件比較多,而且大多使用GNU License,推薦使用rp-pppoe這個軟件包,
從http://www.roaringpenguin.com/pppoe/這個網站上,不僅可以下栽RedHat 平台下的rp-pppoe的二進制軟件包,而且可以下栽源代碼軟件包。
1.二進制軟件包的安裝:A.下栽二進制軟件包http://www.roaringpenguin.com/pppoe/rp-pppoe-3.5-1.i386.rpm B.進行安裝以root執行:#rpm -Uvh rp-pppoe-3.5-1.i386.rpm 2.從源代碼進行安裝:從源代碼進行安裝同樣適用於其它平台的Linux,但必須在Linux系統中安裝gcc編譯器。
A.下栽源代碼軟件包http://www.roaringpenguin.com/pppoe/rp-pppoe-3.5.tar.gz B.解壓縮#tar xvfz rp-pppoe-3.5.tar.gz #cd rp-pppoe-3.5 C.進行編譯和安裝運行腳本#./go將自動進行編譯和安裝,最後,自動調用/usr/sbin/adsl-setup進行配置,具體解釋見三。
三、配置PPPOE客戶端軟件安裝完軟件包後,必須配置pppoe的配置文件/etc/ppp/pppoe.conf,從而讓ADSL撥號時使用配置文件中的用戶名、密碼等參數。我們不必手工改動這個文件,可以使用adsl-setup這個工具進行配置:#/usr/sbin/adsl-setup當出現
>>> Enter your PPPoE user name :
輸入ADSL帳號的用戶名當出現
>>> Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethn, where n is a number.(default eth0):輸入 eth0 ,這是ADSL相連的網卡的名字當出現
>>> Enter the demand value (default no):
輸入 no當出現
>>> Enter the DNS information here:
輸入 “server” ,這表示使用ADSL撥號自動獲得的DNS服務器IP地址當出現
>>> Please enter your PPPoE passWord:
輸入ADSL帳號的密碼當出現
>>> Choose a type of firewall (0-2):
輸入 0 ,不使用防火牆當出現
>>> Accept these settings and adjust configuration files (y/n)?
如果輸入的信息正ā確,輸入 y ,完成配置,否則,輸入 n 重新輸入。
四、啟動PPPOE客戶端軟件使用命令/usr/sbin/adsl-start 啟動PPPOE客戶端軟件,進行連接,如果成功,將出現Connected;如果不成功,請檢查網線、ADSL MODEM等物理設備,並查看 /var/log/messages中的信息/usr/sbin/adsl-stop 關閉和ISP的連接/usr/sbin/adsl-status 查看當前連接的狀態如果想在Linux系統啟動時自動啟動ADSL連接,輸入以下命令#chkconfig –add adsl將在當前的運行級下加入ADSL的自啟動腳本五、測試當連接成功後,使用命令#ifconfig -a在輸出中應含有關於 ppp0 的信息,其中還綁定了IP 地址,說明已經從撥號中獲得了IP地址。
使用命令#netstat -nr查看路由表信息,這時的默認路由應該是上面獲得的IP地址。
如果沒有默認路由,我們可以手動增加:#route add default gw 上面獲得的IP地址使用命令#nslookup www.sina.com.cn如果解析出新浪的IP,說明已經從撥號中正確獲得了DNS服務器最後,使用命令ping某個域名或IP,如果有響應,表示你已經大功告成了。
注:好像在進行配置的過程中,會提示你是否在啟動時加載ADSL,選yes,這樣就會省的登錄後再start了。
五、使用雙網卡帶動公司網、家庭網絡上網硬件要求:同上雙網卡
NAT方式:接內部網絡的網卡設置IP為私有地址(192.168.0.0/24、172.16.0.0/16、10.0.0.0/8),
例如192.168.100.123/24.不要設置默認路由(網關),DNS設置為廣州地區(61.144.56.100),其它
地區的相應改動為本地區的DNS. 在/etc/rc.d/目錄下用toUCh命令建立firewall文件,執行chmod u+x firewall以改變文件屬性,編輯/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/firewall以確保開機時能自動運行該腳本。
firewall內容為:#!/bin/sh echo “Enable IP Forwarding…”
echo “1″>/proc/sys/net/ipv4/ip_forward echo ”Starting iptables rules…“
/sbin/modprobe iptable_filter /sbin/modprobe ip_tables /sbin/modprobe iptable_nat #Refresh all chains /sbin/iptables -F -t nat iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MMASQUERADE客戶端設置(windows98/2000/XP、linux)網關設置為這台linux地址(192.168.100.123),DNS設置為61.144.56.100.
透明代理配置代理軟件squid:
編輯/usr/local/squid/etc/squid.conf,修改以下內容,確保以下配置:
http_port 192.168.100.123:8080
cache_mem 48 MB acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # FTP acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemakāer acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl flag src 192.168.100.0/255.255.255.0
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on cache_effective_user nobody cache_effective_group nobody http_Access allow flag
http_access deny all
(限制只允許局域網用戶使用代理,具體可以參考squid手冊中關於Access Control Lists的內容來限制訪問代理)
cache_dir ufs /var/spool/squid 100 16 256
cache_dir type Directory-Name Mbytes Level-1 Level2
(說明:指定squid用來存儲對象的交換空間的大小及其目錄結構。可以用多個cache_dir命令來定義多個這樣的交換空間,並且這些交換空間可以分布不同的磁盤分區。“directory ”指明了該交換空間的頂 級目錄。如果你想用整個磁盤來作為交換空間,那麼你可以將該目錄作為裝載點將整個磁盤mount上去。缺省值為/var/spool/squid.“Mbytes”定義了可用的空間總量。需要注意的是,squid進程必須擁有對該目錄的讀寫權力。“Level-1″是可以在該頂級目錄下建立的第一級子目錄的數目,缺省值為16.同理,”Level-2″是可以建立的第二級子目錄的數目,缺省值為256.為什麼要定義這麼多子目錄呢?這是因為如果子目錄太少,則存儲在一個子目錄下的文件數目將大大增加,這也會導致系統尋找某一個文件的時間大大增加,從而使系統的整體性能急劇降低。所以,為了減少每個目錄下的文件數量,我們必須增加所使用的目錄的數量。如果僅僅使用一級子目錄則頂級目錄下的子目錄數目太大了,所以我們使用兩級子目錄結構。那麼,怎麼來確定你的系統所需要的子目錄數目呢?我們可以用下面的公式來估算。
已知量:
DS = 可用交換空間總量(單位KB)/ 交換空間數目
OS = 平均每個對象的大小= 20k
NO = 平均每個二級子目錄所存儲的對象數目 = 256
未知量:
L1 = 一級子目錄的數量
L2 = 二級子目錄的數量
計算公式:
L1 x L2 = DS / OS / NO
(注意這是個不定方程,可以有多個解)
acl allow_domain dstdomain “/etc/squid/allow_domain”
創建cache目錄
[root@proxy squid]# squid -z
修改該目錄所有者squid:
[root@proxy squid]# chown squid:squid /usr/spool/squid
最後啟動squid:
[root@iptable logs]# /usr/local/squid/bin/RunCache &
並且系統中應該有如下幾個端口被監聽:
[root@proxy logs]# netstat -ln tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN udp 0 0 0.0.0.0:3130 0.0.0.0:*
這些說明squid已經正常啟動了。
然後使用Redhat的serviceconf工具以使得系統啟動時自動啟動squid服務器。
5.iptables的設置
在/etc/rc.d/目錄下用touch命令建立firewall文件,執行chmod u+x firewll以更改文件屬性,編輯/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/firewall以確保開機時能自動執行該腳本。
firewall文件內容為:
#!/bin/sh
echo “Enabling IP Forwarding…”
echo 1 > /proc/sys/net/ipv4/ip_forward
echo “Starting iptables rules…ā”
#Refresh all chains
/sbin/iptables -F -t nat
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp–dport 80 -j REDIRECT –to-ports 8080
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 — -j MMASQUERADE七、在含有多個vlan的三層交換網絡中實現squid+iptables的透明代理在企業中網絡常常會有三層交換。它能夠有效隔離廣播,防止廣播風暴。通過三層交換機劃分vlan,使得應用和管理都變得相對容易些。但也給代理的設置帶來一點小麻煩,傳統代理要設置代理
服務器地址和端口,這對三層交換網絡沒有什麼問題。關鍵是透明代理中網關的設置,在三層交換的網絡中每個vlan的計算機的網關都要設置成所在vlan的網關,如:下表中vlan1的網關必須是192.168.100.1,vlan2的網關必須是192.168.110.1,像普通網絡中把網關都設置成代理服務器的地址是絕對不行的。所以,三層交換網絡中透明代理的設置主要問題集中在三層中心交換機和代理服務器路由的設置,三層交換機的路由表中要有一條默認路由指向代理服務器,服務器的路由表中要有一個容納所有vlan的網關。
以下是我的網絡說明:網絡內網有15個vlan如路由表所示,代理服務器(squid+iptables)在vlan1中服務器有兩塊網卡,eth0連接外網ip是A.B.C.D,網關為A.B.C.1.eth1連接內網ip是192.168.100.123/24不設網關。給服務器加上一條路由,將192.168.0.0/16,指向vlan1的網關192.168.100.1,route add -net 192.168.0.0 netmask 255.255.0.0 eth1以保證與其他vlan的通信,如此網絡部分便配置成功,關於透明代理設置這裡就不說了,請參考其他文章。這樣所有的vlan的計算機只要網關和dns配置好就可以上網了,如:vlan3中某台計算機ip設置192.168.120.47,網關為192.168.120.1,dns地址為服務商給的(廣州地區ADSL:61.144.56.100),這樣就OK了。其出網的路由為->192.168.120.47->192.168.120.1->192.168.100.1->192.168.100.123->A.B.C.1->……
服務器地址和端口,這對三層交換網絡沒有什麼問題。關鍵是透明代理中網關的設置,在三層交換的網絡中每個vlan的計算機的網關都要設置成所在vlan的網關,如:下表中vlan1的網關必須是192.168.100.1,vlan2的網關必須是192.168.110.1,像普通網絡中把網關都設置成代理服務器的地址是絕對不行的。所以,三層交換網絡中透明代理的設置主要問題集中在三層中心交換機和代理服務器路由的設置,三層交換機的路由表中要有一條默認路由指向代理服務器,服務器的路由表中要有一個容納所有vlan的網關。
以下是我的網絡說明:網絡內網有15個vlan如路由表所示,代理服務器(squid+iptables)在vlan1中服務器有兩塊網卡,eth0連接外網ip是A.B.C.D,網關為A.B.C.1.eth1連接內網ip是192.168.100.123/24不設網關。給服務器加上一條路由,將192.168.0.0/16,指向vlan1的網關192.168.100.1,route add -net 192.168.0.0 netmask 255.255.0.0 eth1以保證與其他vlan的通信,如此網絡部分便配置成功,關於透明代理設置這裡就不說了,請參考其他文章。這樣所有的vlan的計算機只要網關和dns配置好就可以上網了,如:vlan3中某台計算機ip設置192.168.120.47,網關為192.168.120.1,dns地址為服務商給的(廣州地區ADSL:61.144.56.100),這樣就OK了。其出網的路由為->192.168.120.47->192.168.120.1->192.168.100.1->192.168.100.123->A.B.C.1->……