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