1. 程式人生 > >Centos 配置 pppoe 伺服器

Centos 配置 pppoe 伺服器

Centos配置pppoe伺服器

首先,硬體平臺需提供兩塊網絡卡,一塊用於靜態地址做NAT使用,一塊用於對pppoe使用者接入的響應,下面是對pppoe伺服器進行的配置安裝

一.檢查並配置ppp軟體

#rpm-qa|grepppp

如果沒有安裝,可以使用以下命令進行安裝:

#yuminstallppprp-pppoe

通過網路來自動安裝。

二.對伺服器網絡卡進行配置

伺服器配置的兩塊網絡卡,一塊用來設定靜態IP,用作NATeth1),一塊用來進行對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客戶端傳送主動發現初始包(PPPoEActiveDiscoveryInitiationPADI),以太頭中的目的地址是以太廣播地址FF:FF:FF:FF:FF:FFPPPOE頭中的CODE0x09SESSION_ID值必須為0,負載部分必須只包含一個Service-Name型別的TAG表示請求的服務型別,另外可以包含其他TAG,整個PPPOE包不能超過1484位元組;

Step2:PADO

伺服器端PPPoE程序在網路介面偵聽到PADI包後,傳送主動發現提議包(PPPoEActiveDiscoveryOffer,PADO),用來回應客戶機的PADI包,以太頭中的目的地址是客戶機的MAC地址,PPPOE頭中的CODE0x07SESSION_ID值必須為0,負載部分必須包含一個AC-Name型別的TAG,用來指示本AC的名稱,一個在PADI包中指定的Service-NameTAG,另外可以包含其他Service-NameTAG。如果AC不對該客戶機提供服務,AC就不迴應PADO包。

Step3:PADR

PPPoE客戶端收到PADO包後,在PADO包中選擇一個(可能有多個PPPoE伺服器,通常選取最快的一個)傳送主動發現請求包(PPPoEActiveDiscoveryRequestPADR),以太頭中的目的地址是所選取的PADO包的源以太頭地址(即PPPoE伺服器的MAC地址),PPPOE頭中的CODE0x19SESSION_ID值必須為0,負載部分必須只包含一個Service-Name型別的TAG表示請求的服務型別,另外可以包含其他TAG
Step4:PADS

MAC地址匹配的PPPoE伺服器收到PADR包後,傳送主動發現會話確認包(PPPoEActiveDiscoverySession-confirmation,PADS),將產生一個SEESSION_ID值用來標誌本次PPP會話,以PADR包方式傳送給客戶機。以太頭中的目的地址是客戶機的MAC地址,PPPOE頭中CODE0x65SESSION_ID值必須為所生成的那個SESSION_ID,負載部分必須只包含一個Service-Name型別的TAG表示該服務型別被PPPoE伺服器接受,另外可以包含其他TAG。如果PPPoE伺服器不接受PADR中的

Server-NamePADS中則包含一個Service-Name-Error型別的TAG,這時SESSION_ID設定為0

PPPSession階段:

當客戶端與伺服器端遠成發現階段之後,即進入會話階段,在PPP會話階段,PPP包被封裝在PPPOE以太幀中,以太包目的地址都是單一的,以太協議為0x8864PPPOE頭的CODE必須為0SESSION_ID必須一直為發現階段協商出的SEESION_ID值,PPPOE的負載是整個PPP包,PPP包前是兩位元組的PPP協議ID值。

Session階段,主機或伺服器任何一方都可發PADTPPPoEActiveDiscoveryTerminate)報文通知對方結束Session

PPPoE的身份驗證發生在會話(PPPSession)階段。可以這樣更解,rp-pppoe包負責Discovery及會話終止PADTppp包負責會話階段的資料傳輸。