㈠ linux下ppp撥號過程中APN等參數是如何傳入
參考模型共分七層,自下而上分別是物理層、數據鏈路層、網路層、傳輸層、會話層、表示層和應用層。通常我們會依據協議所完成的功能將它與這七層進行對照,PPP協議就屬於數據鏈路層。
PPP協議主要包括三部分:LCP(Link Control Protocol)鏈路控制協議、NCP(Network Control Protocol)和PPP的擴展協議(如Multilink Protocol)。隨著網路技術的發展,網路帶寬不再是瓶頸,所以PPP擴展協議的應用越來越少,因此往往人們在敘述PPP協議時經常會忘記它的存在。而且大部分網路教材上會將PPP的認證作為PPP協議的一個主要部分,實際上這是一個錯誤概念的引導。PPP協議默認是不進行認證配置參數選項的協商,它只作為一個可選的參數,當點對點鏈路的兩端需要進行認證時才需配置。當然在實際應用中這個過程是不可忽略的,例如我們使用計算機上網時,需要通過PPP協議與NAS設備互連,在整個協議的協商過程中,我們需要輸入用戶名和密碼。因此當別人說PPP協議主要包括LCP、認證和NCP協議三個部分時,不要認為他的說法有誤,而只是不夠准確罷了。
LCP鏈路控制協議用來協商PPP協議的一些配置參數選項;處理不同大小的數據幀;檢測鏈路環路、一些鏈路的錯誤;終止一條鏈路。
NCP協議的數據報文是在網路層協議階段被交換的,在這個階段所需的一些配置參數選項協商完後,就可以進行網路層的通信,也即是在點對點的鏈路上可以開始傳送網路層的數據報文了,最常用的NCP協議為IPCP協議,主要是用來通信雙方的網路層地址。
1.3 PPP狀態轉移
1)發起
數據通信設備的兩端如果希望通過PPP協議建立點對點的通信,無論哪一端的設備都需要發送LCP數據報文來配置鏈路(測試鏈路)。
2)建立至可用
一旦LCP得配置參數選項協商完成後,通信的雙方就會根據LCP配置請求報文中所協商的認證配置參數選項來決定鏈路兩端設備所採用的認證方式。協議預設情況下雙方是不進行認證的,而直接進入到NCP配置參數選項的協商,直至所經歷的幾個配置過程全部完成後,點對點的雙方就可以開始通過已建立好的鏈路進行網路層數據報文的傳送了,整個鏈路就處於可用狀態。實際情況中,都會進行認證。
3)拆除
當任何一端受到LCP或NCP得鏈路關閉報文時(一般而言協議是不要求NCP有關閉鏈路的能力的,因此通常情況下關閉鏈路的數據報文是在LCP協商階段或應用程序會話階段發出的);物理層無法檢測到載波或管理人員對該鏈路進行關閉操作,都會將該條鏈路斷開,從而終止PPP會話。
2、PPP數據幀封裝格式
2.1 PPP數據幀封裝格式
PPP數據幀的封裝格式如下圖所示:
1) 每個PPP數據幀都是以一個標志位元組起始和結束的,該位元組填充0x7E(協議預設);
2) 緊接著起始標志位元組後面的是地址域,佔1個位元組,該位元組填充為0xFF(協議預設);
3) 地址域後是控制域,佔1個位元組,該位元組填充為0x03(協議預設);
4) 就PPP協議而言,最值得關注的應該是它的協議域和信息域。協議域用來區分PPP數據幀中信息域中所承載的報文的內容,佔2個位元組。協議域的內容必須依據ISO 3309的地址擴展機制所給出的規定。該機制規定協議域所填充的內容必須為奇數,也即是要求低位元組的最低位為「1」,高位元組的最低位為「0」。協議域的具體的取值如下表所示:
協議域類型
說明
ISO標准
0x0*** - 0x3***
信息域中承載的是網路層的數據報文
0x4*** - 0x7***
信息域中承載的是與NCP無關的低整流量
0x8*** - 0xb***
信息域中承載的是網路控制協議(NCP)的數據報文
0xc*** - 0xf***
信息域中承載的是鏈路控制協議(LCP)的數據報文
最典型的幾種
取值
0xc021
信息域中承載的是鏈路控制協議(LCP)的數據報文
0xc023
信息域中承載的是PAP協議的認證報文
0xc223
信息域中承載的是CHAP協議的認證報文
0x8021
信息域中承載的是網路控制協議(NCP)的數據報文
0x0021
信息域中承載的是IP數據報文
5) 信息域的最大程度不能超過1500位元組(包括填充域的內容)。1500位元組等於PPP協議中配置參數選項MRU(Maximum Receive Unit)的預設值。信息域如果不足1500位元組時可被填充,但不是必須得,如果填充則需通信雙方的兩端能辨認出有用和無用的信息方可正常通信。
6) CRC校驗域主要是對PPP數據幀傳輸的正確性進行檢測的。
2.2 LCP數據報文的封裝方式
2.2.1 LCP數據報文的封裝方式
LCP數據報文是在鏈路建立階段被交換的,它作為凈載荷被封裝在PPP數據幀的信息域中,此時PPP數據幀的協議域固定填充為0xC0 21,在整個鏈路建立階段的整個過程中信息域的內容是在變化的,它包括很多類型的報文,所以這些報文也要通過相應的欄位來區分,LCP數據報文的一般封裝方式如下圖所示:
1) 代碼域,佔1個位元組,主要用來標志LCP數據報文的類型。如下表所示:
2) 標識域,佔1個位元組,主要用來匹配請求和相應報文。一般而言在進入鏈路建立階段時,通信雙方無論哪一端都會連續的發送幾個配置請求報文(Config-Req報文),而這個幾個請求報文的數據域可能是完全一樣的,而僅僅是標識域不同罷了。當對端收到該配置報文後,無論使用哪種報文來回應對方,都必須要求回應報文中的ID要與接收報文中的ID一致。當通信設備收到回應後就可以將回應與發送時的進行比較來決定下一步的操作。
3) 長度域,佔2個位元組。長度域=(代碼域+標識域+長度域+數據域)。其所示位元組數之外的位元組將被當做填充位元組而忽略掉,而且該域內容不能超過MRU的值。
4) 數據域,主要填充一些配置參數選項。
2.2.2 LCP數據報文的分類
從上面可以看出,一共包括12種LCP數據報文,可以依據格報文的功能又將其具體細化為以下三類:
1)鏈路配置報文,主要用來建立和配置一條鏈路。包括Config-Request、Config-Ack、Config-Nak、Config-Reject四種報文;
2)鏈路終止報文,主要用來終止一條鏈路。包括Terminate-Request、Terminate-Ack兩種報文;
3)鏈路維護報文,主要 用來維護和調試鏈路。其餘所有的報文。
2.2.3 LCP鏈路配置報文
LCP鏈路配置報文與鏈路終止報文、鏈路維護報文有明顯區別,它主要是用來協商鏈路的配置參數選項的,因此這種報文的數據域還要攜帶許多被配置參數選項。配置參數選項的格式如下圖所示:
當通信雙方建立鏈路時,無論哪一方都需要發送Config-Request報文並攜帶每一端自己所希望協商的配置參數選項。下表為一些可選的配置參數選項:
類型值
參數選項
類型值
參數選項
0x00
Reserved
0x05
Magic-Number
0x01
Maximum-Recieve-Unit
0x06
CBCP
0x02
Async-Control-Character-Map
0x07
Protocol-Field-Compress
0x03
Authentication-Protocol
0x08
Address-and-Control-Field-Compress
0x04
Quality-Protocol
0x0D
Multilink-Protocol
配置參數選項的協商過程中,可能發生兩種情況:
1) 接收方無法識別發送方所發送的配置參數類型
接收方不識別類型域中填充的內容,這時接收方就會給發送方發送一個Config-Reject消息以告訴對方自己不支持它所發送的參數類型,此時Config-Reject報文中填充自己不支持的參數選項。發送方收到Config-Reject消息後就可以去掉那些不被接收方支持的配置參數,重新組包發送Config-Request報文給接收方,直到收到接收方發來的Config-Ack消息就算協商成功。
2)接收方識別發送方所發送的配置參數類型,但不認可其參數值
接收方識別發送方所發送的配置參數類型,但不認可其參數值,這時接收方就會給發送方發送一個Config-Nak消息,該報文中填充自己所能夠支持的參數值,發送方在受到Config-Nak消息後就可以從中獲得接收方所支持的參數值,重新組包發送Config-Request報文給接收方,直到收到接收方發來的Config-Ack消息就算協商成功。
2.3 認證協議
PPP協議提供了可選的認證配置參數選項,預設情況下點對點通信時的兩端是不進行認證的。認證方式是在LCP階段協商確認的,在LCP鏈路配置報文中,不可一次攜帶多種認證方式,必須二者擇其一(PAP/CHAP)。
PAP(Password Authentication Protocol密碼認證協議)認證時二次握手,直接在網路上傳送明文的用戶名和密碼,因此該協議安全性不高。
CHAP(Challenge Hand Authentication Protocol挑戰性握手認證協議)認證是三次握手,只在網路上傳送驗證方和被驗證方的主機名,並不傳送密碼,且由驗證方主動發起。因此相比之下CHAP比PAP更安全。
2.4 NCP協議
NCP協議的數據報文是在網路側協議階段被交換的,在這個階段所需的一些配置參數選項協商完成後,就可以進行網路層的通信。NCP協議主要包括IPCP、IPXCP等,最常見的就是IPCP協議。
IPCP控制協議主要是完成IP網路層協議通信所需配置參數選項的協商。IPCP 在運行的過程中,主要是完成點對點通信設備的兩端動態的協商IP地址。IPCP的數據報文同LCP的數據報文類似,只不過LCP協議是在鏈路建立階段協商配置參數選項,IPCP是在網路層協議階段協商配置參數選項。在實際的數據報文交換過程中IPCP數據報文僅涉及以下幾種:Config-Request、Config-Ack、Config-Nak和Config-Reject。
根據兩端設備的配置選項可將IPCP的協商過程分為「靜態」和「動態」。靜態、動態是相對的概念,兩者的區分是在於互連設備IP地址的獲取過程。
靜態協商,即不協商,點對點的通信設備兩端在PPP協商之前已配置好了IP地址,所以無須在網路層協議階段協商IP地址,而雙方唯一要做的就是告訴對方自身的IP地址,最理想的情況如下圖所示:
動態協商,即一端配置為動態獲取IP地址,另一端通過手動方式配置IP地址,且允許給對端分配IP地址,最理想的情況如下圖所示:
IPCP階段完成後,PPP鏈路即正常建立,可進行點對點通信。
㈡ linux下怎麼用腳本返回ppp0介面的IP地址
要是只是想區分兩個介面撥的PPPOE介面名的話。。。
可以指定linkname這是PPPD裡面的一個選項。。。
不同的乙太網口指定不同的linkname就可以了
撥號成功後會在/var/run/下面生成一個你設定的PPP-linkname的文件
比如PPP-1,裡面有對應的PPPOE介面名如PPP1
這樣就可以區分了。。。要是想定死為PPP0的話可能只有修改源代碼了。。。
㈢ 如何用Linux做PPPOE伺服器
Linux自身的網路設置
Linux做PPPOE伺服器,在操作上雖然也可以在圖形界面中是為網卡設置IP地址,但是真正實現網卡IP地址等信息的准確可靠,還是要在相應的文件中作設置,我們本次要設置兩塊網卡,編輯好的文件內容如下:
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# more ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="0.0.0.0"
DEVICE="lan"
HWADDR="00:0C:29:33:69:86"
ONBOOT="yes"
NETMASK="0.0.0.0"
[root@localhost network-scripts]# more ifcfg-eth1
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="10.70.10.11"
DEVICE="wan"
HWADDR="00:0C:29:33:69:90"
ONBOOT="yes"
NETMASK="255.255.0.0"
GATEWAY="10.70.0.1"
Linux做PPPOE伺服器的設置過程中,我們重點看一下ifcfg-eth1的配置文件,其中ONBOOT="yes"是必須的,可以保證系統啟動網卡自動連接到網路上,網關的信息是我們手工添加進出去,保證有網關可以正常的訪問外部網路,ifcfg-eth0文件中只要保證ONBOOT="yes"就可以了,當然象在routeros中一樣,我們將外網口的名字定義為wan,將內網口的名字定義為lan。
Linux做PPPOE伺服器設置
一)檢查本機有沒有安裝PPPOE服務
[root@localhost network-scripts]# rpm -q rp-pppoe
rp-pppoe-3.5-35
以上信息說明安裝了
二)配置必要的參數
為了使Linux中的配置過程比較好理解,我們以routeros下的配置過程作為參考。
1、了解pppoe-server-options
這個文件有點類似於ROUTERS下的profile文件,在這個文件中定義了使用哪種驗證方式:require-chap,為用戶分配的DNS伺服器地址是多少:
ms-dns 219.146.0.130
ms-dns 222.175.169.91
完整的pppoe-server-options文件如下所示
[root@localhost ppp]# more pppoe-server-options
# PPP options for the PPPoE server
# LIC: GPL
require-chap
login
lcp-echo-interval 10
lcp-echo-failure 2
ms-dns 219.146.0.130
ms-dns 222.175.169.91
2、添加用戶名和密碼
在相同的目錄下有一個chap-secrets文件,在這裡面可以添加用戶名和密碼
[root@localhost ppp]# more chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
abc * abc *
3、允許本地驗證
也就是修改options文件,將而來默認的lock改為local即可。
[root@localhost ppp]# more options
#lock
local
4、開啟PPPOE服務
[root@localhost ppp]# more pppstart
pppoe-server -I lan -L 192.168.0.1 -R 192.168.0.5 -N 10
像以前一樣,我將這條命令做成了一個腳本,這樣操作測試其中的參數比較方便,我簡單介紹一下Linux做PPPOE伺服器當中這條命令中的各個參數的意思。
I:指定響應PPPOE請求的埠,本例中是在lan口上。
L:PPPOE伺服器的IP地址,這是客戶端所填的PPPOE伺服器的地址。
R:這是分配給客戶端的地址池起始地址,本例中從192.168.0.5開始
N:地址池的IP地址遞增幾個,本例中添增10,也就是從192.168.0.5開始,到192.168.0.14結束。
做完以上的設置,我們再梳理一下routeros下建立PPPOE服務的步驟
1、添加一個地址池
2、添加一個profile文件
3、添加撥號用戶
4、啟動pppoe服務
對照一下,可以看出我們在Linux中將以上步驟都完成了,也就是說PPPOE服務准備好了,客戶端PPPOE撥號,順利的話就可以撥號成功了。當然現在客戶端還不能上網,設置Linux做PPPOE伺服器的這個時候,還沒有啟用NAT,我們用IPTABLES軟體來實現,寫一個這樣的腳本即可:
echo "1" >> /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o wan -j SNAT --to 10.70.10.23
第一行的作用是啟用IP轉發,第二行是啟動IPTABLES進行NAT轉換,下面是對各個參數的解釋
-t nat表示進行NAT轉化
-s 192.168.0.0/24表示源地址為192.168.0.0/24這個網段
-j SNAT --to 10.70.10.23表示將源地址都轉化成10.70.10.23這個外網地址
同樣的,我們可以對照routeros系統里NAT的設置來理解這條命令。啟動NAT以後,這台PPPOE伺服器就功能完整了,客戶端不僅可以撥通伺服器,撥通後還可以上網。
㈣ SIM9001模塊在嵌入式LINUX下怎麼用ppp進行撥號上網移植了很多腳本都是😓
無法識別sim卡,查看是什麼原因造成的並解決:1、查看手機卡槽或者sim卡有沒有損壞:可以插入其他手機卡嘗試,再將手機本身的sim卡放到其他手機上看看,如果是卡槽損壞,建議更換卡槽,如果是sim卡損壞,請前往營業廳更換sim卡。2、網路延遲造成的不讀sim卡:可以打開手機的飛行模式,五秒後再關閉,或者重啟一下手機。3、所處在地方信號不好無法搜尋到信號讀取sim卡,可以換個地方再搜尋。4、卡貼損壞或者手機已經升級:卡貼是需要對應著手機版本使用的,請更換卡貼。
㈤ 在linux下寫了一個撥號腳本,如何判斷腳本是否運行成功
open、close移動到循環里,每次 system ifconfig 之後再打開讀文件,讀完就關閉。
㈥ linux下gprs模塊ppp撥號上網成功後怎麼操作
GPRS有modem口和AT口
撥號用MODEM,發送AT用AT口。
如果只有一個口那就沒辦法了,只能斷開連接才能繼續AT,
㈦ 嵌入式linux ppp撥號上網時, 輸入pppd call cmnet 後無反應,ifconfig查看無ppp0,求高手指教
這樣得到的內容太模糊了,大家沒有辦法幫您。
建議你開兩個終端,然後一個終端執行
tail -f /va/log/message
一個終端執行
adsl-connet
得到message的日誌內容,才能分析解決的辦法
㈧ 如何設置Linux伺服器為PPP撥入伺服器
我按下面這個配置成功了,你可以試下:
一、安裝的前提條件
1.確保安裝了網卡並工作正常
使用命令
#ifconfig eth0
查看網卡狀態,然後關閉ifdown eth0,注意一定要關閉ifdown eth0
2.在系統中不要設置默認路由(網關),讓ADSL撥號後自動獲得
如果已經設置了默認路由,使用以下方法刪除:
在文件 /etc/sysconfig/network 中刪除 GATEWAY= 這一行,然後以root執行:
#/etc/rc.d/init.d/network restart
3.已經安裝了pppd軟體包
如果存在文件 /usr/sbin/pppd,則說明已經安裝了pppd;
如果未安裝,從RedHatLinux 6.2安裝光碟上安裝ppp-2.3.11-
4.i386.rpm這個軟體包
二、安裝PPPOE客戶端軟體
Linux下的PPPOE客戶端軟體比較多,而且大多使用GNU License,我們推薦使用rp-pppoe 這個軟體包。從http://www.roaringpenguin.com/pppoe/這個網站上,不僅可以下載
RedHat 62平台下的rp-pppoe的二進制軟體包,而且可以下載源代碼軟體包。
1.二進制軟體包的安裝:
A.下載二進制軟體包
http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2-1.i386.rpm
B.進行安裝
以root執行:
#rpm -Uvh rp-pppoe-3.2-1.i386.rpm
2.從源代碼進行安裝:
從源代碼進行安裝同樣適用於其它平台的Linux,但必須在Linux系統中安裝gcc編譯器。
A.下載源代碼軟體包
http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2.tar.gz
B.解壓縮
#tar xvfz rp-pppoe-3.2.tar.gz
#cd rp-pppoe-3.2
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,如果有響應,表示你已經大功告成了。
六、其它說明
1、RedHat Linux 7.1已經集成了rp-pppoe這個軟體包,只不過版本有些低,如果你不在意版本高低,可以直接進行三後面的步驟。
2、以後要拔號上網時,只要:
ifdown eth0
ifup ppp0
/usr/sbin/adsl-start
㈨ linux下的ppp的腳本怎樣編寫
說明:將以下腳本拷貝到vi中,保存,修改許可權執行,得到你想要的結果。
#!/bin/bash
cd /etc/named
cp honey.com.zone /tmp/honey.com.zone.bk
awk '/^@ IN NS nsl.honey.com./ {print "@ IN NS nsl.ashaur.com";next} \
/^www IN A 192.168.1.7/ {print "www IN A 192.168.1.6";next} \
{print}' honey.com.zone >/tmp/honey.com.zone.tmp
cp /tmp/honey.com.zone.tmp /etc/named/honey.com.zone
㈩ wireshark怎樣抓linux ppp拔號
你的系統鏡像中有的,你掛上,設置本地鏡像,然後用那些命令就可以安裝了,簡單點的話聯網,找不到的話增加其它鏡像源,然後用那些命令安裝,還得確定一點,你的