Centos如何配置pppoe命令
首先,硬體平臺需提供兩塊網絡卡,一塊用於靜態地址做NAT使用,一塊用於對pppoe使用者接入的響應,下面是對pppoe伺服器進行的配置安裝
一.檢查並配置ppp軟體
#rpm-qa|grepppp
如果沒有安裝,可以使用以下命令進行安裝:
#yuminstallppprp-pppoe
通過網路來自動安裝。
二.對伺服器網絡卡進行配置
伺服器配置的兩塊網絡卡,一塊用來設定靜態IP,用作NAT(eth1),一塊用來進行對pppoe使用者接入的響應(eth0)。
需要修改以下配置指令碼(有桌面的centOS可以在桌面上進行IP的設定,比較方便)。
#cd/etc/sysconfig/network-scripts
#viifcfg-eth1
#AdvancedMicroDevices[AMD]79c970[PCnet32LANCE]
DEVICE=lan
IPADDR=192.168.0.10
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=211.98.2.4
DNS2=8.8.8.8
HWADDR=xx:xx:xx:xx:xx:xx
ONBOOT=yes
BOOTPROTO=static
USERCTL=no
IPV6INIT=yes
NM_CONTROLLED=yes
TYPE=Ethernet
#viifcfg-eth0
TYPE="Ethernet"
HWADDR=xx:xx:xx:xx:xx:xx
BOOTPROTO=dhcp
DEVICE=wan
ONBOOT=yes
三.配置pppoe伺服器
修改option配置,新增以下內容,其它的刪除。
#vi/etc/ppp/options
local
crtscts
nobsdcomp
nodeflate
nopcomp
配置pppoe-server-options
#vi/etc/ppp/pppoe-server-optionsauth
require-pap
require-chap
login
lcp-echo-interval10
lcp-echo-failure2
logfile/var/log/pppoe.log
ms-dns211.98.2.4
ms-dns8.8.8.8
defaultroute
建立使用者及密碼
vi/etc/ppp/chap-secrets
#vichap-secrets
#SecretsforauthenticationusingCHAP
#clientserversecretIPaddresses
pppoe*pppoe*
這裡配置的一個帳號與密碼都是pppoe
下面開啟pppoe伺服器
#/usr/sbin/pppoe-server-Ieth4-L172.16.0.10-R172.16.0.20-N100
I:指定響應PPPOE請求的埠,本例中是在eth0口上。
L:指定PPPOE伺服器的IP地址。
R:分配給客戶端的地址池起始地址
N:分配給客戶端IP地址的個數
將此命令新增到開機啟動中。
#vi/etc/rc.local
/usr/sbin/pppoe-server-Ieth4-L172.16.0.10-R172.16.0.20-N100
現在到客戶機器上測試撥號成功。
四,客戶機上外網
客戶撥號成功後還不能上外網,因為伺服器那邊沒有進行資料包的轉發。所以需配置iptables進行資料轉發
新增防火牆規則,做nat轉換
#iptables-APOSTROUTING-tnat-s172.16.0.0/24-jMASQUERADE
#iptables-AFORWARD-ptcp--syn-s172.16.0.0/24-jTCPMSS--set-mss1256
#sysctl-wnet.ipv4.ip_forward=1
#echo1>/proc/sys/net/ipv4/ip_forward
#serviceiptablessave
第一條:新增nat,轉換來自172.16.0.0/24網段的ip
第二天:修改mtu,根據自身需求改了(可忽略)
第三條:修改轉發檔案(可忽略)
第四條:開啟轉發
第五條:儲存iptables配置
當然,配置上述後有些使用者還是無法接入外網,有可能是centos預設沒有安裝啟動防火牆功能,所以出現上述的問題需要開啟防火牆功能:
#/etc/init.d/iptablesstart
下面是pppoe建立的原理過程
PPPoE的驗證過程
PPPoE的驗證過程包括2個階段,Discovery階段和PPPSession階段。
Discovery階段,包含4個步驟:
Step1:PADI
PPPoE客戶端傳送主動發現初始包(PPPoEActiveDiscoveryInitiation,PADI),以太頭中的目的地址是以太廣播地址FF:FF:FF:FF:FF:FF,PPPOE頭中的CODE為0x09,SESSION_ID值必須為0,負載部分必須只包含一個Service-Name型別的TAG表示請求的服務型別,另外可以包含其他TAG,整個PPPOE包不能超過1484位元組;
Step2:PADO
伺服器端PPPoE程序在網路介面偵聽到PADI包後,傳送主動發現提議包(PPPoEActiveDiscoveryOffer,PADO),用來回應客戶機的PADI包,以太頭中的目的地址是客戶機的MAC地址,PPPOE頭中的CODE為0x07,SESSION_ID值必須為0,負載部分必須包含一個AC-Name型別的TAG,用來指示本AC的名稱,一個在PADI包中指定的Service-Name的TAG,另外可以包含其他Service-Name的TAG。如果AC不對該客戶機提供服務,AC就不迴應PADO包。
Step3:PADR
PPPoE客戶端收到PADO包後,在PADO包中選擇一個(可能有多個PPPoE伺服器,通常選取最快的一個)傳送主動發現請求包(PPPoEActiveDiscoveryRequest,PADR),以太頭中的目的地址是所選取的PADO包的源以太頭地址(即PPPoE伺服器的MAC地址),PPPOE頭中的CODE為0x19,SESSION_ID值必須為0,負載部分必須只包含一個Service-Name型別的TAG表示請求的服務型別,另外可以包含其他TAG。
Step4:PADS
MAC地址匹配的PPPoE伺服器收到PADR包後,傳送主動發現會話確認包(PPPoEActiveDiscoverySession-confirmation,PADS),將產生一個SEESSION_ID值用來標誌本次PPP會話,以PADR包方式傳送給客戶機。以太頭中的目的地址是客戶機的MAC地址,PPPOE頭中的CODE為0x65,SESSION_ID值必須為所生成的那個SESSION_ID,負載部分必須只包含一個Service-Name型別的TAG,表示該服務型別被PPPoE伺服器接受,另外可以包含其他TAG。如果PPPoE伺服器不接受PADR中的
Server-Name,PADS中則包含一個Service-Name-Error型別的TAG,這時SESSION_ID設定為0。
PPPSession階段:
當客戶端與伺服器端遠成發現階段之後,即進入會話階段,在PPP會話階段,PPP包被封裝在PPPOE以太幀中,以太包目的地址都是單一的,以太協議為0x8864,PPPOE頭的CODE必須為0,SESSION_ID必須一直為發現階段協商出的SEESION_ID值,PPPOE的負載是整個PPP包,PPP包前是兩位元組的PPP協議ID值。
在Session階段,主機或伺服器任何一方都可發PADT(PPPoEActiveDiscoveryTerminate)報文通知對方結束Session。
PPPoE的身份驗證發生在會話(PPPSession)階段。可以這樣更解,rp-pppoe包負責Discovery及會話終止PADT,ppp包負責會話階段的資料傳輸。
華科雲商可提供Linux這方面資源,QQ:32592617