歡迎您光臨本站 註冊首頁

Linux下如何接ADSL一類的寬頻貓帶動區域網上internet

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
以下內容由伊甸園網友liuqing9906提供
【liuqing9906注】最近罈子裡面很多網友詢問adsl上網的問題.由於我在學校都是寬頻.沒有機會研究這個東東.希望下面的文章能夠幫助大家!謝謝!


Linux下如何接ADSL一類的寬頻貓帶動區域網上internet



--------------------------------------------------------------------------------

系統準備:一個運轉正常的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->......





[火星人 ] Linux下如何接ADSL一類的寬頻貓帶動區域網上internet已經有682次圍觀

http://coctec.com/docs/linux/show-post-57486.html