(1) ***的做用:
使用戶能夠不在公司內網中安全訪問內網資源,或者鏈接國外網絡.
linux
(2)原理:
vim
1.說到***就必須談到隧道技術(pptp、l2tp、ipip、pppoe(adsl撥號上網常常使用)),隧道技術就是將其餘數據包或者幀封裝到一個數據包或者幀中,在這些數據幀中添加路由頭部信息(如以太幀頭部、ppp幀頭部等)以便被封裝的數據在互聯網中傳遞,固然對客戶來講這些都是透明的。安全
2.***也使用了隧道技術(本文主要說pptp協議 ),數據包封裝過程:將用戶數據(ip數據包、ipx上數據報或者NetBEUI)封裝 在ppp幀中,ppp幀在進一步添加GRE報頭造成GRE報文(此爲 pptp協議),而後tcp/ip協議將GRE報文進行封裝既添加ip報頭,而後進行數據鏈路層的封裝,數據鏈路層封裝根據物理網絡而添添加鏈路層的報頭與報尾。如:以太網 則添加以太幀的報頭和報尾(目的/源mac 類型 數據 幀校驗序列)進行鏈路層封裝,若是ip數據包在點到點 wan上傳輸 則添加 ppp幀的報頭和報尾(0x7e 0xff 0x03 協議 信息部分 幀校驗碼 0x7e)。若是將上面ppp幀理解爲一個tcp/ip協議上層協議封裝數據,則上面pptp協議的封裝過程和通常的應用層數據封裝過程類似。
服務器
3.pptp的一些鏈接創建與ppp協議的一些身份驗證與協商等就不在這多說了 ,詳細過程資料一大堆。網絡
4.數據包經過網路通過各個路由最後到達***服務器,物理網卡接受以太幀後解幀後交給tcp/ip協議後解ip數據包與GRE報文而後將剩下的ppp幀發送給ppp0(***虛擬網卡)進行解密而後根據數據內容提交給上層協議進行處理。tcp
5.經過上面對數據封裝與解包過程當中咱們能夠感知到ppp幀中攜帶數據經過pptp搭建的隧道點對點的從***客戶端傳輸到了***服務器。就比如在互聯網中獨自創建了一個高鐵鐵路,數據包在這條鐵路中從起點(***客戶端)坐到了終點(***服務器),而後下車根據站內的指示牌(路由)尋找出口。(腦補畫面)。
ide
(3) ***的搭建:spa
redhat linux系統server
client:192.168.1.73
ip
server: 外: 192.168.1.92 內:172.25.45.1
***客戶端地址:172.25.254.100 ~ 172.25.254.200
***服務器開啓路由轉發: echo 「1」 > /proc/sys/net/ipv4/ip_forward
須要安裝ppp、pptp : 一個是對將要傳輸的數據封裝爲ppp幀,一個是將ppp幀添加GRE報頭封裝爲GRE報文,而後將該報文提交給tcp/ip協議進行下一步的封裝。
配置ppp和pptp的文件:
vim /etc/ppp/chap-secrets #這個就是ppp協議進行身份驗證的依據文件
***client pptpd ‘westos’* #第一行爲用戶名 第二行爲options.pptpd文件中name指定名字相同 第三行爲密碼 地四行指定客戶端ip地址 ‘*’表示 所有能夠接入
vim /etc/pptpd.conf #pptp服務的主配置文件
localip 192.168.1.92 #填寫***的外網地址
remoteip 172.25.254.100-200 #添加***客戶端地址池
這樣***的簡單配置就完成了 。
可是這樣配置的***仍是有一些不盡人意的地方,如:鏈接上***後客戶端沒法訪問外網,沒法訪問公司內網之類的問題。
(4)解決方法:
沒法訪問外網:
***客戶端 :
route add -net 172.25.45.0 netmask 255.255.255.0 pppo #添加目的網絡(***服務器內網網段)爲 172.25.45.0 ip數據包通過 pppo(虛擬網卡)出去
***服務器:
此時***服務器須要在nat表POSTROUTING鏈作一個snat,固然你須要安裝iptables(yum install iptables -y)。
iptables -t nat -A POSTROUTING -s 172.25.254.0/24 -j SDNT -to 192.168.1.92 #在iptables上將出包時候源地址爲***客戶端地址改變爲***外網ip
*********注: 以上兩步根據實際狀況添加
沒法訪問內網:
***服務器:
route add -net 172.25.254.0 netmask 255.255.255.0 gw 172.25.45.1 #在***內網主機中設置 目標網絡172.25.254.0 的網關爲172.25.45.1