CentOS 6.x搭建Open***实现双IDC互联
一、需求說明
1、網絡拓撲結構
2、環(huán)境說明
| 設備名稱 | IP地址信息 | 所屬機房 |
| ***server | 外網eth0 ?10.0.0.3 ? ? VMnet3 內網eth1 ?192.168.1.4 ?VMnet4 網關 機房默認網關 | 上海 |
| ***client | 外網eth0 ?10.0.0.4 ? ? VMnet3 內網eth1 ?172.16.1.4 ? VMnet5 網關?機房默認網關 | 北京 |
| client1 | eth0 192.168.1.5 ? ? ? VMnet4 網關 192.168.1.4 | 上海 |
| client2 | eth0 172.16.1.5 ? ? ? ?VMnet5 網關 172.16.1.4 | 北京 |
3、實現(xiàn)目標
1、實現(xiàn)上海IDC機房和北京IDC機房內網機器互聯(lián),即我們可以通過client1 ping通client2
2、實現(xiàn)192.168.1.5和172.16.1.5互通
? ?在實驗前,請把四臺虛擬機準備好,IP配置好,其中我設置的VMnet3、4、5都是僅主機模式,大家可以先把需要安裝的軟件安裝好在修改為僅主機,因為僅主機模式不能上互聯(lián)網,給電腦的VMnet4配置一個192.168.1.11,給VMnet5配置一個172.16.1.11,然后我們就可以通過連接四臺虛擬機了。
3、環(huán)境搭建好之后我們檢查一下聯(lián)通性,正常情況下六個IP互通情況如下
| 192.168.1.5 | 192.168.1.4 | 10.0.0.3 | 10.0.0.4 | 172.16.1.4 | 172.16.1.5 | |
| 192.168.1.5 | √ | √ | √ | 〤 | 〤 | 〤 |
| 192.168.1.4 | √ | √ | √ | √ | 〤 | 〤 |
| 10.0.0.3 | √ | √ | √ | √ | 〤 | 〤 |
| 10.0.0.4 | 〤 | 〤 | √ | √ | √ | √ |
| 172.16.1.4 | 〤 | 〤 | √ | √ | √ | √ |
| 172.16.1.5 | 〤 | 〤 | 〤 | √ | √ | √ |
這里可以使用tcpdump抓包查看過程?
4、把***Server、***Client的數(shù)據(jù)包轉發(fā)打開,不然數(shù)據(jù)傳輸不過去
# echo 1 > /proc/sys/net/ipv4/ip_forward?
這里可以使用tcpdump抓包查看過程?? ?
二、Open*** Server的安裝配置
1、Open***下載
? ? 通過官網下載最新版本的open***。http://open***.net/,有可能因為國家防火墻的原因,可能無法訪問,我這里提供的下載地址是https://swupdate.open***.org/community/releases/open***-2.3.7.tar.gz
2、Open*** Server安裝
? ? 我的系統(tǒng)環(huán)境是CentOS 6.3 32位最小化安裝,我的上一篇文章是使用的yum安裝,http://wangzan18.blog.51cto.com/8021085/1673778,使用的是epel倉庫,我還是推薦大家使用yum安裝,簡單方便,open***依賴一些軟件,openssl提供數(shù)據(jù)加密,lzo提供數(shù)據(jù)壓縮,我們都可以使用yum進行安裝,這里我的open***使用源碼編譯安裝,一些依賴的軟件包大家請?zhí)崆跋螺d好。
? ? 如果出現(xiàn)以上的內容,證明我們配置好了,下面我們就進行編譯安裝
make make?install tree?/usr/local/open***/? ? 安裝好的目錄結構大概如下,不同版本可能有所不同
? ? 下面我們添加open***的配置文件
mkdir?/etc/open*** cp?sample/sample-config-files/server.conf?/etc/open***/? ? 因為我們這個版本沒有提供密鑰生成更具,但是他給我們提供了默認的證書,在open***-2.3.7/sample/sample-keys目錄下面
3、我們這里現(xiàn)在密鑰生成工具
? ? 根據(jù)腳本的名字我們可以猜測到工具的功能,首先我們先修改一下vars這個文件,修改成我們相關的內容。
# vim vars
# source vars
# ./buile-ca
? ? 創(chuàng)建服務器證書
# ./build-key-server server
? ? 創(chuàng)建客戶端證書
#?./build-key client
? ? 創(chuàng)建Diffie Hellman參數(shù)
# ./build-dh
? ? 這一步需要的時間很長,大家可以把vars文件里面的export KEY_SIZE=2048 改為1024
生產的證書全部放在easy-rsa目錄下面的keys里面
4、Open*** Server的配置
? ? 我們查看一下配置文件的內容,具體每個參數(shù)的含義配置文件講解的很詳細,我這里不再陳述,為了看起來簡便,我這里把注釋刪掉,參數(shù)不是很多,我們對其修改成我們需要的,修改后我這里是這樣的。
grep?-vE?'^#|^;|^$'?/etc/open***/server.conf--client-config-dir /etc/open***/ccd/
? ? 通過該選項為存放客戶端定制的配置文件指定一個目錄,在一個***用戶通過客戶端驗證之后,Open***將會查找這個目錄,通過這些文件可以使用--ifconfig-push來指定一個固定的客戶端IP地址,也可以使用--iroute指定一個客戶端自己擁有的子網。
--push "route 192.168.1.0 255.255.255.0"
? ? 這項指令是把***Server后端的子網推送給***Client,要不Client不知道如何到達這個子網。
--route 172.16.1.0 255.255.255.0
? ? 這項指令是給***Server添加一條路由,要不***Server不知道如何到達172.16.1.0網段。
--server 10.8.0.0 255.255.255.0
? ? 這項指令是給***Client分配IP地址。
cat?/etc/open***/ccd/client--iroute 172.16.1.0 255.255.255.0
? ? 為特定的客戶端生產內部路由。
--ifconfig-push 10.8.0.4 10.8.0.5
? ? 這條指令就是給特定客戶端指定分配的IP的,可以不使用,除非客戶端比較多,你有必要進行區(qū)分。
? ? 到此服務端的配置告一段落
三、Open*** Client的安裝配置
1、客戶端的安裝
? ? 客戶端的安裝請安裝服務端的安裝,過程一樣
2、客戶端的配置
? ? 下面我把我的客戶端配置文件發(fā)送一下,首先我們需要把服務器端的證書文件拷貝過來。
# cat /etc/open***/client.conf
? ? 客戶端的配置比較簡單,這里不在進行講解。
四、服務的啟動及測試
1、首先我們先查看一下***服務端和客戶端的路由信息
***服務端
***客戶端
2、***服務端及客戶端的啟動
***服務端啟動
***客戶端啟動
/usr/local/open***/sbin/open***?/etc/open***/client.conf3、***服務端及客戶端的啟動后的路由信息
***服務端
? ? 我們可以看到增加了一個虛擬網卡,增加了幾條路由。
? ? Open***默認使用的net30模式,10.8.0.1是獲取的一個實際IP,接受ping,10.8.0.2是Open***內部的一個虛擬IP地址,它被用作末端路由,對于這個地址,Open***不會接受ping。
? ? 我們可以在啟動的時候增加一個參數(shù)--topology subnet讓Open***工作在subnet模式下,使用此模式要去掉前面的選項--ifconfig-push,不然客戶端會連接失敗,具體net30和subnet模式的區(qū)別,大家可以參考官網文檔(man open*** ,doc)或者參考本文附錄。
#?/usr/local/open***/sbin/open*** --config /etc/open***/server.conf --topology subnet
***客戶端
? ? 現(xiàn)在***服務端和客戶端都有到達對方后端子網的路由,我測試了一下,他們到對方后端子網的網絡都已經聯(lián)通了,我這里就不在貼圖了。
這里可以使用tcpdump抓包查看過程?
五、項目需求實現(xiàn)
1、我們在client1測試
? ? 結果顯示client1可以ping通client2。
2、在client2上面測試
? ? 我們可以看到client2和client1也是互通的,由此證明項目成功。
六、項目改進
1、不修改客戶機默認網關
? ? 我們知道,上面的環(huán)境是所有的客戶機網關都指向了***服務器,在很多環(huán)境場合是不允許我們修改內網客戶機的網關,數(shù)量少還可以,數(shù)量多的話那就是很大的工作,并且可能會影響服務的運行,而且所有的流量都經過***也是對***服務器很大的壓力。
? ? 假設所有的客戶機都是現(xiàn)有的默認網關,我們實現(xiàn)的目的就是他們到達對方子網的時候經過***服務器,而訪問外網還是使用自己默認的網關,其實很簡單,我們只需要在每個客戶機上面添加上到對方子網的路由。
2、如何添加路由
? ? 對于client1,我是這樣操作,我們刪掉現(xiàn)在的默認路由,可以不設定
route?del?default?gw?192.168.1.4ping?172.16.1.5 connect:?Network?is?unreachable? ? 這時候我們是無法ping通對方子網的,下面我們添加一條路由
route?add?-net?172.16.1.0/24?gw?192.168.1.4client2也是如此操作
route?del?default?gw?172.16.1.4 route?add?-net?192.168.1.0/24?gw?172.16.1.43、如何更加了解數(shù)據(jù)傳輸過程
? ? Linux提供一個數(shù)據(jù)抓包的命令tcpdump,如果過程中哪里有問題,數(shù)據(jù)就是傳輸不過去,我們可以通過抓包工具一步一步抓取,我這里簡單介紹一個例子,比如我們在client1 ping client2不通,我們首先在***server上面轉包看看數(shù)據(jù)吧流向,然后在***client上面抓取,然后在client2上面抓取,看看數(shù)據(jù)吧是否有回包,如果沒有回包很大可能的情況就是回包路由的問題。
七、附錄
? ? 在--topology mode選項中,mode有三種取值,即net30、subnet和p2p。
? ? 當運行在--dev tun模式下時,可以通過--topology mode選項來配置虛擬地址的拓撲結構。而對于--dev tap而言,該選項沒有任何意義,因為在--dev tap模式下,總是使用子網拓撲。
1、net30
? ?Open***默認的子網掩碼是/30,也就是255.255.225.252。在這樣的情況下,只有兩個地址可以使用,一個給服務端,一個給客戶端,這樣地址是很浪費的。
? ?在Open***的2.0版本中,Open***能通過虛擬一個TUN虛擬接口處理多個客戶端,要處理這種技術,可以把服務器上看到的PtP連接看作是一個操作系統(tǒng)和Open***之間的連接,而在Open***內部還需要為每一個客戶端創(chuàng)建另一個PtP。如何所有的O/S在TUN接口上真正的支持PtP連接,那么這將會是的Open***服務器僅使用一個IP地址,并且一個客戶端也使用一個IP地址。
2、subnet
? ?subnet通過配置TUN接口的本地IP地址和子網掩碼來使用一個子網,而不是點對點的拓撲結構,類似于使用--dev tap和以太網橋模式的拓撲結構。這種模式為每個客戶端分配單個IP地址。
3、p2p
? ?p2p模式使用點對點拓撲,僅適用于Windows系統(tǒng)下,現(xiàn)在已經不再贊成使用。
如有什么不同意見歡迎和我交流,謝謝!
總結
以上是生活随笔為你收集整理的CentOS 6.x搭建Open***实现双IDC互联的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中断处理与定时器
- 下一篇: 在空白处填充程序3