基于Linux的 Open×××网络之网络架构应用实例
基于Linux的?Open×××網絡之網絡架構應用實例
Open×××?概述
???????Open×××?是一個開源的加密隧道構建工具,基于?OpenSSL?的?SSL/TLS?協議,可以在?Internet中實現點對點的?SSL?×××?安全連接。使用?Open×××?的好處是安全、易用和穩定,且認證方式靈活,具備實現?SSL?×××?解決方案的完整特性。Open×××?可以應用于?Linux、Unix、Mac?OS?以及Windows?等各種操作系統平臺。
???????Open×××?提供兩種類型的虛擬網絡接口:TUN?和?TAP,分別用于建立?IP?隧道、以太網橋接。在?Linux?中使用這兩種虛擬設備,需要對應的內核模塊支持。RHEL5?系統默認已編譯好?tun?模塊,直接使用即可。
???????Open×××?的?官?方?站?點?是?http://open***.net?,?目?前?發?布?的?最?新?測?試?版?本?為Open×××-2.1_rc13,穩定版為Open×××-2.0.9。
???????Open×××使用OpenSSL庫加密數據與控制信息:它使用了OpenSSL的加密以及驗證功能,意味著,它能夠使用任何OpenSSL支持的算法。它提供了可選的數據包HMAC功能以提高連接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。
???????Open×××提供了多種身份驗證方式,用以確認參與連接雙方的身份,包括:預享私鑰,×××在vlan中的應用第三方證書以及用戶名/密碼組合。預享密鑰最為簡單,但同時它只能用于建立點對點的×××;基于PKI的第三方證書提供了最完善的功能,但是需要額外的精力去維護一個PKI證書體系。Open×××2.0后引入了用戶名/口令組合的身份驗證方式,它可以省略客戶端證書,但是仍有一份服務器證書需要被用作加密。
本章案例中,需要下載使用的相關軟件包參考如下:
最新穩定版源碼包:http://open***.net/release/open***-2.0.9.tar.gz
Windows?安裝包:
http://open***.se/files/install_packages/open***-2.0.9-gui-1.0.3-install.exe
LZO工具包:http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
?
1.?案例需求分析
???????本案例主要基于RHEL5?和Windows?XP系統環境,跨越不安全的Internet網絡,為異地的兩個局域網及遠程網管工作站建立安全的SSL?×××連接(如圖8.2所示)。
???????其中,北京總部和上海分公司的網關服務器均使用?RHEL5?系統,需要分別配置?Open×××,用于連接兩個異地的局域網?LAN1、LAN2。此外,位于?Internet?中的網管工作站使用?Windows?XP系統,需要隨時通過?×××?安全隧道訪問總部的局域網?LAN1?和上海分公司的局域網?LAN2。
基于?Linux?的?Open×××?網絡
Open×××?遠程虛擬專用網絡架構
?
基于上述需求,可以將北京總部的網關服務器?GW1?配置為?×××?Server?模式,上海的網關服務器GW2和Internet網?管工作站PC1均使用×××?Client模式。分別建立兩條點對點
(Point-to-Point)的SSL?×××安全隧道——“GW1?<---->?GW2”、“GW1?<---->?PC1”即可。
由于Internet?網絡的細節不是本案例的重點,因此GW1、GW2的公網IP地址分別使用
173.74.75.76和173.74.75.77來模擬。其他網絡接口地址設置如下:
GW1、GW2?的內網接口?IP?地址分別為?192.168.1.1、192.168.2.1。
??GW1?<---->?GW2?隧道:分別使用虛擬?IP?地址?10.8.0.1/30、10.8.0.2/30。
??GW1?<---->?PC1?隧道:分別使用虛擬?IP?地址?10.9.0.1/30、10.9.0.2/30。
另外,兩地局域網的客戶機需要正確設置好?IP?地址、默認網關等參數:
??LAN1?的主機使用?192.168.1.0/24?網段,默認網關設為?192.168.1.1。
??LAN2?的主機使用?192.168.2.0/24?網段,默認網關設為?192.168.2.1。
2.?配置?GW1?<---->?GW2?隧道連接
本小節主要闡述如何創建第?1?條?SSL?×××?隧道,用于連接?GW1、GW2?兩臺服務器,以便實現北京、上海兩地局域網(LAN1、LAN2)的安全互聯。
主要實現過程如下:
第一步、配置主服務器(GW1)——北京
A.?配置?Internet?連接及?SNAT、路由轉發
1)?配置?IP?地址
eth0?接口(173.74.75.76/24)用于連接?Internet,eth1?接口(192.168.1.1/24)用于連
接局域網(配置過程略)
2)?開啟路由及?SNAT?轉換
[root@gw1?~]#?vim?/opt/gw1_nat.sh
sysctl?-w?net.ipv4.ip_forward=1
/sbin/iptables?-t?nat?-I?POSTROUTING?-o?eth0?-j?SNAT?--to-source?173.74.75.76
[root@gw1?~]#?chmod?a+x?/opt/gw1_nat.sh
[root@gw1?~]#?echo?"/opt/gw1_nat.sh"?>>?/etc/rc.local
[root@gw1?~]#?/opt/gw1_nat.sh
net.ipv4.ip_forward?=?1
[root@gw1?~]#?sysctl?–p
B.?安裝?Open×××?服務
[root@gw1?soft_dir]#?tar?zxvf?lzo-2.03.tar.gz
[root@gw1?soft_dir]#?cd?lzo-2.03
[root@gw1?lzo-2.03]#?./configure?&&?make?&&?make?install
[root@gw1?lzo-2.03]#?cd?../
[root@gw1?soft_dir]#?tar?zxvf?open***-2.0.9.tar.gz
[root@gw1?open***-2.0.9]#?./configure?&&?make?&&?make?install
[root@gw1?~]#?cd?/soft_dir/
[root@gw1?soft_dir]#?cp?-p?open***-2.0.9/sample-scripts/open***.init?/etc/init.d/open***
[root@gw1?soft_dir]#?chmod?+x?/etc/init.d/open***
[root@gw1?soft_dir]#?chkconfig?--add?open***
[root@gw1?soft_dir]#?chkconfig?--level?2345?open***?on
C.?創建證書和密鑰文件
證書和密鑰文件主要用于點對點客戶端的認證,以便增強安全性。為了降低密鑰創建過程的復雜性,可以充分利用?Open×××?源碼包提供的?easy-rsa/目錄,該目錄中包含一系列簡單易用的腳本工具(參考“open***-2.0.9/easy-rsa/README”文件)。
3)?配置變量環境
修改?easy-rsa/vars?文件,根據實際情況適當修改預定義變量,或保持默認。在后續
創建相關文件的過程中,將會直接讀取這些變量的內容。其中“KEY_DIR”變量的值決定了
新創建的密鑰等文件的存放位置。
[root@gw1?~]#?cd?/soft_dir/open***-2.0.9/easy-rsa/
[root@gw1?easy-rsa]#?vim?vars
export?D=`pwd` export?KEY_CONFIG=$D/openssl.cnf export?KEY_DIR=$D/keys echo?NOTE:?when?you?run?./clean-all,?I?will?be?doing?a?rm?-rf?on?$KEY_DIR export?KEY_SIZE=1024 export?KEY_COUNTRY=CN?//粗體部分根據具體應用情況進行修改 export?KEY_PROVINCE=BeiJing export?KEY_CITY=BeiJing export?KEY_ORG="BENET.Inc" export?KEY_EMAIL="***adm@benet.com" |
?
[root@gw1?easy-rsa]#?source?vars?//執行?vars?文件中的代碼
NOTE:?when?you?run?./clean-all,?I?will?be?doing?a?rm?-rf?on?/soft_dir/open***-2.0.9/easy-rsa/keys
[root@gw1?easy-rsa]#?./clean-all?//預先清除$KEY_DIR?目錄
4)?創建?CA?證書
執行“./build-ca”腳本建立?CA?證書文件,根據腳本提示設置好國家代碼、省份、城市、
公司名等信息,如通用識別名稱“Common?Name”項可以設置為?GW1?的?FQDN?名稱。
后續創建的密鑰文件需要依據該?CA?文件。
[root@gw1?easy-rsa]#?./build-ca
Generating?a?1024?bit?RSA?private?key .....++++++ ..............................++++++ writing?new?private?key?to?'ca.key' ----- You?are?about?to?be?asked?to?enter?information?that?will?be?incorporated into?your?certificate?request. What?you?are?about?to?enter?is?what?is?called?a?Distinguished?Name?or?a?DN. There?are?quite?a?few?fields?but?you?can?leave?some?blank For?some?fields?there?will?be?a?default?value, If?you?enter?'.',?the?field?will?be?left?blank. ----- Country?Name?(2?letter?code)?[CN]: State?or?Province?Name?(full?name)?[BeiJing]: Locality?Name?(eg,?city)?[BISHKEK]: Organization?Name?(eg,?company)?[BENET.Inc]: Organizational?Unit?Name?(eg,?section)?[]: Common?Name?(eg,?your?name?or?your?server's?hostname)?[]:gw1.benet.com Email?Address?[***adm@benet.com]: |
?
5)?創建?dh(Diffie-Hellman)密鑰算法文件
執行“./build-dh”腳本即可建立?dh?文件
[root@gw1?easy-rsa]#?./build-dh
Generating?DH?parameters,?1024?bit?long?safe?prime,?generator?2
This?is?going?to?take?a?long?time
..........................................................................+.................................+................................................................+...................+.........................................+..+................................................................+.....................................................................................+........+.............+..............................+.......................................................................................+..........+.........................+.......................................................................................+.................+..............................+........+..............................+.........................................................................................................................................................+....................+......+.............+.........................................................+......+.......+.........................+.........................................................................................+.........................................+............................+............................+..........................................+.............................++*++*++*
6)?創建?GW1?主服務器端密鑰
執行“./build-key-server”腳本可以建立×××?服務端密鑰文件,根據提示設置好Common?Name(gw1.benet.com),最后依次按“y”鍵簽署(Sign)及提交(Commit)。
[root@gw1?easy-rsa]#?./build-key-server?gw1 Generating?a?1024?bit?RSA?private?key .............................++++++ ....................................++++++ writing?new?private?key?to?'gw1.key' ----- You?are?about?to?be?asked?to?enter?information?that?will?be?incorporated into?your?certificate?request. What?you?are?about?to?enter?is?what?is?called?a?Distinguished?Name?or?a?DN. There?are?quite?a?few?fields?but?you?can?leave?some?blank For?some?fields?there?will?be?a?default?value, If?you?enter?'.',?the?field?will?be?left?blank. ----- Country?Name?(2?letter?code)?[CN]: State?or?Province?Name?(full?name)?[BeiJing]: Locality?Name?(eg,?city)?[BISHKEK]: Organization?Name?(eg,?company)?[BENET.Inc]: Organizational?Unit?Name?(eg,?section)?[]: Common?Name?(eg,?your?name?or?your?server's?hostname)?[]:gw1.benet.com Email?Address?[***adm@benet.com]: Please?enter?the?following?'extra'?attributes to?be?sent?with?your?certificate?request A?challenge?password?[]: An?optional?company?name?[]: Using?configuration?from?/soft_dir/open***-2.0.9/easy-rsa/openssl.cnf Check?that?the?request?matches?the?signature Signature?ok The?Subject's?Distinguished?Name?is?as?follows countryName?:PRINTABLE:'CN' stateOrProvinceName?:PRINTABLE:'BeiJing' localityName?:PRINTABLE:'BISHKEK' organizationName?:PRINTABLE:'BENET.Inc' commonName?:PRINTABLE:'gw1.benet.com' emailAddress?:IA5STRING:'***adm@benet.com' Certificate?is?to?be?certified?until?Jul?12?02:42:17?2020?GMT?(3650?days) Sign?the?certificate??[y/n]:y 1?out?of?1?certificate?requests?certified,?commit??[y/n]y Write?out?database?with?1?new?entries Data?Base?Updated |
?
7)?創建?GW2?對端服務器密鑰
執行“./build-key”腳本可以建立?×××?客戶端密鑰文件,同樣根據提示設置好?Common?Name(gw2.benet.com),最后依次按“y”簽署(Sign)及提交(Commit)。
[root@gw1?easy-rsa]#?./build-key?gw2 Generating?a?1024?bit?RSA?private?key ...................++++++ ..++++++ writing?new?private?key?to?'gw2.key' ----- You?are?about?to?be?asked?to?enter?information?that?will?be?incorporated into?your?certificate?request. What?you?are?about?to?enter?is?what?is?called?a?Distinguished?Name?or?a?DN. There?are?quite?a?few?fields?but?you?can?leave?some?blank For?some?fields?there?will?be?a?default?value, If?you?enter?'.',?the?field?will?be?left?blank. ----- Country?Name?(2?letter?code)?[CN]: State?or?Province?Name?(full?name)?[BeiJing]: Locality?Name?(eg,?city)?[BISHKEK]: Organization?Name?(eg,?company)?[BENET.Inc]: Organizational?Unit?Name?(eg,?section)?[]: Common?Name?(eg,?your?name?or?your?server's?hostname)?[]:gw2.benet.com Email?Address?[***adm@benet.com]: Please?enter?the?following?'extra'?attributes to?be?sent?with?your?certificate?request A?challenge?password?[]: An?optional?company?name?[]: Using?configuration?from?/soft_dir/open***-2.0.9/easy-rsa/openssl.cnf Check?that?the?request?matches?the?signature Signature?ok The?Subject's?Distinguished?Name?is?as?follows countryName?:PRINTABLE:'CN' stateOrProvinceName?:PRINTABLE:'BeiJing' localityName?:PRINTABLE:'BISHKEK' organizationName?:PRINTABLE:'BENET.Inc' commonName?:PRINTABLE:'gw2.benet.com' emailAddress?:IA5STRING:'***adm@benet.com' Certificate?is?to?be?certified?until?Jul?12?02:44:30?2020?GMT?(3650?days) Sign?the?certificate??[y/n]:y 1?out?of?1?certificate?requests?certified,?commit??[y/n]y Write?out?database?with?1?new?entries Data?Base?Updated |
?
注意:
使用“./build-key”腳本創建密鑰時,不同的客戶端對應的“Common?Name”不能相同。
8)?生成?tls-auth?密鑰
tls-auth?密鑰可以為點對點的?×××?連接提供了進一步的安全驗證,如果選擇使用這一方式,服務器端和客戶端都必須擁有該密鑰文件。
open***?命令跟上“--genkey?--secret”選項可以用于建立?ta?密鑰文件。
[root@gw1?easy-rsa]#?open***?--genkey?--secret?keys/ta.key
9)?最后將上述文件所在的?keys/文件夾轉移至/etc/open***/目錄
[root@gw1?easy-rsa]#?mkdir?-p?/etc/open***/
[root@gw1?easy-rsa]#?mv?keys/?/etc/open***/
D.?創建主服務器配置文件
在服務器配置文件中指定使用?Server?模式,監聽默認的?UDP?1194?端口。虛擬接口采用tun0設備??梢詤⒖紀pen***?源碼目錄中的配置范例(open***-2.0.9/sample-config-files/server.conf)
[root@gw1?~]#?vim?/etc/open***/gw1_tun0.conf
local?173.74.75.76?//指定監聽服務的?IP?地址 port?1194?//為第?1?條隧道開啟默認的?1194?端口 proto?udp dev?tun?//使用?SSL?Tune?的?×××?隧道模式 ca?keys/ca.crt cert?keys/gw1.crt key?keys/gw1.key dh?keys/dh1024.pem server?10.8.0.0?255.255.255.0?//使用服務器模式,并指定?×××?虛擬網絡地址 ifconfig-pool-persist?ipp.txt push?"route?192.168.1.0?255.255.255.0"?//為?GW2?添加到?LAN1?網段的路由 push?"route?10.9.0.0?255.255.255.0"?//為?GW2?添加到?PC1?的路由 push?"dhcp-options?DNS?210.22.84.3"?//為客戶端設置?DNS?服務器地址 route?192.168.2.0?255.255.255.0?//為?GW1?添加到?LAN2?網段的路由 client-config-dir?ccd?//允許讀取?ccd/目錄下的客戶端配置文件 keepalive?10?120 tls-auth?keys/ta.key?0?//指定?tls-auth?密鑰 cipher?BF-CBC?//加密算法與客戶端要保持一致 comp-lzo max-clients?100?//允許的最大并發?×××?連接數 user?nobody group?nobody persist-key persist-tun status?open***-status.log log-append?open***.log verb?3 mute?20 |
?
E.?建立用于?GW2?的?ccd?配置文件
[root@gw1?~]#?mkdir?-p?/etc/open***/ccd
[root@gw1?~]#?cd?/etc/open***/ccd/?//為對端服務器?GW2?創建獨立的配置文件
[root@gw1?ccd]#?vim?gw2.benet.com
iroute?192.168.2.0?255.255.255.0?//聲明?GW2?后端的?LAN2?子網絡 ifconfig-push?10.8.0.2?10.8.0.1?//指定?GW2?的本地地址(tun0)、對端地址(P-t-P) |
?
F.?啟動?Open×××?服務
[root@gw1?~]#?service?open***?start
正在啟動?open***:?[確定]
[root@gw1?~]#?netstat?-anp?|?grep?open***
udp?0?0?173.74.75.76:1194?0.0.0.0:*?11220/open***
?
第二步、配置對端服務器(GW2)——上海
1.?配置?Internet?連接及?SNAT、路由轉發
1)?配置?IP?地址
eth0?接口(173.74.75.77/24)用于連接?Internet,eth1?接口(192.168.2.1/24)用于連
接局域網(配置過程略)
2)?開啟路由及?SNAT?轉換
[root@gw2?~]#?vim?/opt/gw2_nat.sh
sysctl?-w?net.ipv4.ip_forward=1 /sbin/iptables?-t?nat?-I?POSTROUTING?-o?eth0?-j?SNAT?--to-source?173.74.75.77 |
?
[root@gw2?~]#?chmod?a+x?/opt/gw2_nat.sh
[root@gw2?~]#?echo?"/opt/gw2_nat.sh"?>>?/etc/rc.local
[root@gw2?~]#?/opt/gw2_nat.sh
net.ipv4.ip_forward?=?1
2.?安裝?Open×××?服務
[root@gw1?soft_dir]#?tar?zxvf?lzo-2.03.tar.gz
[root@gw1?soft_dir]#?cd?lzo-2.03
[root@gw1?lzo-2.03]#?./configure?&&?make?&&?make?install
[root@gw1?lzo-2.03]#?cd?../
[root@gw1?soft_dir]#?tar?zxvf?open***-2.0.9.tar.gz
[root@gw1?soft_dir]#?cd?open***-2.0.9
[root@gw1?open***-2.0.9]#?./configure?&&?make?&&?make?install
[root@gw1?~]#?cd?/soft_dir/
[root@gw1?soft_dir]#?cp?-p?open***-2.0.9/sample-scripts/open***.init?/etc/init.d/open***
[root@gw1?soft_dir]#?chmod?+x?/etc/init.d/open***
[root@gw1?soft_dir]#?chkconfig?--add?open***
[root@gw1?soft_dir]#?chkconfig?--level?2345?open***?on
3.?下載證書和密鑰文件
下載在?GW1?主服務器端創建的?ca.crt、ta.key、gw2.key、gw2.crt?文件,使用?FTP、SCP、Email?等任何方式均可。
——?在服務器?GW1?上:
[root@gw1?~]#?cd?/etc/open***/keys/ [root@gw1?keys]#?tar?jcvf?/var/ftp/send_to_gw2.tar.bz2?ca.crt?ta.key?gw2.key?gw2.crt ca.crt ta.key gw2.key gw2.crt [root@gw1?keys]#?service?vsftpd?start 為?vsftpd?啟動?vsftpd:?[確定] |
?
——?在服務器?GW2?上:
[root@gw2?~]#?wget?ftp://173.74.75.76/send_to_gw2.tar.bz2 --2010-07-15?11:17:08--?ftp://173.74.75.76/send_to_gw2.tar.bz2 =>?`send_to_gw2.tar.bz2' Connecting?to?173.74.75.76:21...?已連接。 正在以?anonymous?登錄?...?登錄成功! ==>?SYST?...?完成。?==>?PWD?...?完成。 ==>?TYPE?I?...?完成。?==>?不需要?CWD。 ==>?SIZE?send_to_gw2.tar.bz2?...?4025 ==>?PASV?...?完成。?==>?RETR?send_to_gw2.tar.bz2?...?完成。 長度:4025?(3.9K) 100%[======================================>]?4,025?--.-K/s?in?0s 2010-07-15?11:17:09?(116?MB/s)?-?`send_to_gw2.tar.bz2'?saved?[4025] [root@gw2?~]#?ls anaconda-ks.cfg?Desktop?install.log?install.log.syslog?send_to_gw2.tar.bz2 |
?
將下載后的文件釋放保存到?open***?配置目錄
[root@gw2?~]#?mkdir?-p?/etc/open***/keys/ [root@gw2?~]#?tar?jxvf?send_to_gw2.tar.bz2?-C?/etc/open***/keys/ |
?
4.?創建客戶端配置文件
在客戶端配置文件中指定使用?Client?模式,以及遠程?×××?服務器的地址和端口??梢詤⒖?open***?源碼目錄中的配置范例(open***-2.0.9/sample-config-files/client.conf)
[root@gw2?~]#?vim?/etc/open***/gw2.conf client?//使用客戶端模式 dev?tun proto?udp remote?173.74.75.76?1194?//點對點主服務器的地址、端口 resolv-retry?infinite nobind user?nobody group?nobody persist-key persist-tun ca?keys/ca.crt cert?keys/gw2.crt key?keys/gw2.key ns-cert-type?server tls-auth?keys/ta.key?1 cipher?BF-CBC?//需和?GW1?服務器端保持一致 comp-lzo verb?3 mute?20 |
?
5.?啟動?Open×××?服務
使用安裝時建立的服務腳本啟動?open***?服務
[root@gw2?~]#?service?open***?start 正在啟動?open***:?[確定] [root@gw2?~]#?netstat?-anp?|?grep?open*** udp?0?0?0.0.0.0:39449?0.0.0.0:*?27004/open*** unix?2?[?]?DGRAM?65137?27004/open*** |
?
第三步、驗證?SSL?×××?連接
1.?GW1?服務器的?×××?接口狀態
5)?GW1?主服務器?tun0?接口的?IP?地址為?10.8.0.1,點對點對端地址為?10.8.0.2
[root@gw1?keys]#?ifconfig?tun0 tun0?Link?encap:UNSPEC?HWaddr?00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet?addr:10.8.0.1?P-t-P:10.8.0.2?Mask:255.255.255.255 UP?POINTOPOINT?RUNNING?NOARP?MULTICAST?MTU:1500?Metric:1 RX?packets:0?errors:0?dropped:0?overruns:0?frame:0 TX?packets:0?errors:0?dropped:0?overruns:0?carrier:0 collisions:0?txqueuelen:100 RX?bytes:0?(0.0?b)?TX?bytes:0?(0.0?b) |
?
6)?路由表中應有通過?GW2?訪問?LAN2?網段的路由記錄
[root@gw1?~]#?route?-n Kernel?IP?routing?table Destination?Gateway?Genmask?Flags?Metric?Ref?Use?Iface 10.8.0.2?0.0.0.0?255.255.255.255?UH?0?0?0?tun0 192.168.2.0?10.8.0.2?255.255.255.0?UG?0?0?0?tun0 10.8.0.0?10.8.0.2?255.255.255.0?UG?0?0?0?tun0 192.168.1.0?0.0.0.0?255.255.255.0?U?0?0?0?eth1 173.74.75.0?0.0.0.0?255.255.255.0?U?0?0?0?eth0 169.254.0.0?0.0.0.0?255.255.0.0?U?0?0?0?eth1 |
?
2.?GW2?服務器的?×××?接口狀態
1)?GW2?服務器?tun0?接口的?IP?地址為?10.8.0.2,點對點對端地址為?10.8.0.1
[root@gw2?~]#?ifconfig?tun0 tun0?Link?encap:UNSPEC?HWaddr?00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet?addr:10.8.0.2?P-t-P:10.8.0.1?Mask:255.255.255.255 UP?POINTOPOINT?RUNNING?NOARP?MULTICAST?MTU:1500?Metric:1 RX?packets:0?errors:0?dropped:0?overruns:0?frame:0 TX?packets:0?errors:0?dropped:0?overruns:0?carrier:0 collisions:0?txqueuelen:100 RX?bytes:0?(0.0?b)?TX?bytes:0?(0.0?b) |
?
2)?路由表中應有通過?GW1?訪問?LAN1?網段的路由記錄
[root@gw2?~]#?route?-n Kernel?IP?routing?table Destination?Gateway?Genmask?Flags?Metric?Ref?Use?Iface 10.8.0.1?0.0.0.0?255.255.255.255?UH?0?0?0?tun0 192.168.2.0?0.0.0.0?255.255.255.0?U?0?0?0?eth1 192.168.1.0?10.8.0.1?255.255.255.0?UG?0?0?0?tun0 173.74.75.0?0.0.0.0?255.255.255.0?U?0?0?0?eth0 10.9.0.0?10.8.0.1?255.255.255.0?UG?0?0?0?tun0 169.254.0.0?0.0.0.0?255.255.0.0?U?0?0?0?eth1 |
?
3.?測試?SSL?×××?隧道連接
[root@gw1?~]#?ping?10.8.0.2?-c?2 PING?10.8.0.2?(10.8.0.2)?56(84)?bytes?of?data. 64?bytes?from?10.8.0.2:?icmp_seq=1?ttl=64?time=17.5?ms 64?bytes?from?10.8.0.2:?icmp_seq=2?ttl=64?time=0.613?ms ---?10.8.0.2?ping?statistics?--- 2?packets?transmitted,?2?received,?0%?packet?loss,?time?1188ms rtt?min/avg/max/mdev?=?0.613/9.101/17.590/8.489?ms |
?
圖?測試?LAN1、LAN2?中主機之間的互聯
配置“GW1?<---->?PC1”隧道連接
本小節主要描述如何創建第?2?條?SSL?×××?隧道,用于在?GW1、PC1?之間建立點到點的安全連接,以便?Windows?XP?客戶端能夠從?Internet?中安全的接入總部的?×××?網絡,進一步訪問兩地的局域網絡。
第一步、配置主服務器(GW1)——北京
1.?創建?PC1?用戶端密鑰
在?GW1?服務器上為?PC1?網管機建立單獨的密鑰文件,注意?Common?Name?不要和其他密鑰重復。生成的密鑰文件必需放置到/etc/open***/keys/目錄中(可以直接調整?KEY_DIR?變量)。
[root@gw1?~]#?cd?/soft_dir/open***-2.0.9/easy-rsa/ [root@gw1?easy-rsa]#?source?vars NOTE:?when?you?run?./clean-all,?I?will?be?doing?a?rm?-rf?on?/soft_dir/open***-2.0.9/easy-rsa/keys [root@gw1?easy-rsa]#?export?KEY_DIR=/etc/open***/keys/ [root@gw1?easy-rsa]#?./build-key?client-pc1 Generating?a?1024?bit?RSA?private?key .........++++++ ...............++++++ writing?new?private?key?to?'client-pc1.key' ----- You?are?about?to?be?asked?to?enter?information?that?will?be?incorporated into?your?certificate?request. What?you?are?about?to?enter?is?what?is?called?a?Distinguished?Name?or?a?DN. There?are?quite?a?few?fields?but?you?can?leave?some?blank For?some?fields?there?will?be?a?default?value, If?you?enter?'.',?the?field?will?be?left?blank. ----- Country?Name?(2?letter?code)?[CN]: State?or?Province?Name?(full?name)?[BeiJing]: Locality?Name?(eg,?city)?[BISHKEK]: Organization?Name?(eg,?company)?[BENET.Inc]: Organizational?Unit?Name?(eg,?section)?[]: Common?Name?(eg,?your?name?or?your?server's?hostname)?[]:client-pc1.benet.com Email?Address?[***adm@benet.com]: Please?enter?the?following?'extra'?attributes to?be?sent?with?your?certificate?request A?challenge?password?[]: An?optional?company?name?[]: Using?configuration?from?/soft_dir/open***-2.0.9/easy-rsa/openssl.cnf Check?that?the?request?matches?the?signature Signature?ok The?Subject's?Distinguished?Name?is?as?follows countryName?:PRINTABLE:'CN' stateOrProvinceName?:PRINTABLE:'BeiJing' localityName?:PRINTABLE:'BISHKEK' organizationName?:PRINTABLE:'BENET.Inc' commonName?:PRINTABLE:'client-pc1.benet.com' emailAddress?:IA5STRING:'***adm@benet.com' Certificate?is?to?be?certified?until?Jul?12?06:10:23?2020?GMT?(3650?days) Sign?the?certificate??[y/n]:y 1?out?of?1?certificate?requests?certified,?commit??[y/n]y Write?out?database?with?1?new?entries Data?Base?Updated |
?
2.?創建第?2?個服務配置文件
該配置文件用于建立“GW1?<---->?PC1”隧道連接,將使用?tun1?設備、監聽?UDP?1195?端口。
[root@gw1?~]#?vim?/etc/open***/gw1_tun1.conf local?173.74.75.76 port?1195?//為第?2?條隧道開啟新的?1195?端口監聽服務 proto?udp dev?tun ca?keys/ca.crt cert?keys/gw1.crt key?keys/gw1.key dh?keys/dh1024.pem server?10.9.0.0?255.255.255.0?//設置第?2?條隧道的虛擬網絡地址 ifconfig-pool-persist?ipp.txt push?"route?192.168.1.0?255.255.255.0"?//為?PC1?添加到?LAN1?的路由 push?"route?192.168.2.0?255.255.255.0"?//為?PC1?添加到?LAN2?的路由 push?"route?10.8.0.0?255.255.255.0"?//為?PC1?添加到?GW2?的路由 push?"dhcp-options?DNS?202.106.0.20" client-to-client client-config-dir?ccd keepalive?10?120 tls-auth?keys/ta.key?0 cipher?BF-CBC comp-lzo max-clients?10 user?nobody group?nobody persist-key persist-tun status?open***-status-2.log?//啟用新的日志文件 log-append?open***-2.log verb?3 mute?20 |
?
3.?建立用于?PC1?的?ccd?配置文件
[root@gw1?~]#?vim?/etc/open***/ccd/client-pc1.benet.com ifconfig-push?10.9.0.2?10.9.0.1 |
?
4.?重新啟動?Open×××?服務
重啟?open***?服務后應在?1194、1195?端口分別監聽服務。
[root@gw1?~]#?service?open***?restart 正在關閉open***:?[確定] 正在啟動?open***:?[確定] [root@gw1?~]#?netstat?-anp?|?grep?open*** udp?0?0?173.74.75.76:1194?0.0.0.0:*?11793/open*** udp?0?0?173.74.75.76:1195?0.0.0.0:*?11810/open*** |
?
第二步、配置?Windows?XP?客戶機(PC1)——上海
1.?配置?IP?地址及?Internet?連接(略)
2.?安裝?Open×××-GUI?客戶端工具
雙擊下載的?open***-2.0.9-gui-1.0.3-install.exe文件,按照向?導提示安裝?即可。若只?作?為Open×××客戶端使用,安裝時可以不勾選定制組件列表中的“Open×××?Service”(如圖所示)。
3.?下載證書和密鑰文件
下載在GW1主服務器端創建的ca.crt、ta.key、client-pc1.key、client-pc1.crt?文件。
將下載的密鑰等相關文件復制到Open×××配置文件目錄下(默認為C:\ProgramFiles\Open×××\config\)。注意保留好備份。
4.?創建?PC1?用戶端配置文件
使用?Windwos?XP?系統自帶的記事本工具創建客戶端配置文件?client-pc1.o***,文件內容可以參考范例(C:\Program?Files\Open×××\sample-config\client.o***)。
Microsoft?Windows?[版本?5.2.3790] (C)?版權所有?1985-2003?Microsoft?Corp. C:\Documents?and?Settings\Administrator>?notepad?client-pc1.o*** client dev?tun proto?udp remote?173.74.75.76?1195 resolv-retry?infinite nobind persist-key persist-tun ca?ca.crt cert?client-pc1.crt key?client-pc1.key ns-cert-type?server tls-auth?ta.key?1 cipher?BF-CBC comp-lzo verb?3 mute?20 |
?
將建好的配置文件保存到C:\Program?Files\Open×××\config\文件夾下(如圖所示)。
client-pc1.o***?文件存放位置
5.?建立?Open×××?連接
方法一:在?Windows?XP?任務欄右側(系統托盤區)的?Open×××-GUI?圖標上點擊右鍵,
選擇“Connect”,即可使用創建好的配置文件建立?×××?連接
方法二:在創建好的?client-pc1.o***?文件上點擊右鍵,選擇“Start?Open×××?on?this?config
file”即可?!么朔椒梢圆榭唇⑦B接的過程信息,適合用于調試/排錯。
第三步、驗證?SSL?×××?連接
1.?GW1?服務器的?×××?接口狀態
GW1?主服務器將會新增接口?tun1,IP?地址為?10.9.0.1,點對點對端地址為?10.9.0.2
[root@gw1?~]#?ifconfig?tun1 tun1?Link?encap:UNSPEC?HWaddr?00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet?addr:10.9.0.1?P-t-P:10.9.0.2?Mask:255.255.255.255 UP?POINTOPOINT?RUNNING?NOARP?MULTICAST?MTU:1500?Metric:1 RX?packets:0?errors:0?dropped:0?overruns:0?frame:0 TX?packets:17?errors:0?dropped:0?overruns:0?carrier:0 collisions:0?txqueuelen:100 RX?bytes:0?(0.0?b)?TX?bytes:840?(840.0?b) |
?
2.?Windows?XP?客戶機?PC1?的?×××?接口狀態
使用?Open×××-GUI?連接成功以后,系統將會增加一個“TAP-Win32?Adapter?V8”的本地連接,用戶可以通過“開始?--->?設置?--->?網絡連接”進行查看。
客戶機?PC1?的?×××?接口地址
3.?測試?PC1?與?GW1、GW2?之間的連接
1)?連接GW1(如圖所示)
PC1?到?GW1?的?ping?測試
2)?連接GW2,使用ping測試(如圖所示)
PC1?到?GW2?的?ping?測試
4.?測試?PC1?與?LAN1?中主機之間的連接
連接LAN1?中的主機,使用ping測試(如圖1示)、tracert路由追蹤(如圖2示)。
圖1?PC1?到?LAN1?中主機的?ping?測試
圖2?PC1?到?LAN1?中主機的?tracert?路由追蹤
5.?測試?PC1?與?LAN2?中主機之間的連接
連接LAN2?中的主機,使用ping測試(如圖?8.10所示)、tracert路由追蹤(如圖所示)。
PC1?到?LAN2?中主機的?ping?測試
PC1?到?LAN2?中主機的?tracert?路由追蹤
?
附:詳細的PDF完整技術文檔下載:http://down.51cto.com/data/102973
本文出自?“賈蕓斐”?博客,請務必保留此出處http://jiayf.blog.51cto.com/1659430/349847
?
轉載于:https://blog.51cto.com/ljl2013/1352347
總結
以上是生活随笔為你收集整理的基于Linux的 Open×××网络之网络架构应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到前男友告诉我他要结婚了是什么意思
- 下一篇: 基于KVM的虚拟化研究及应用