open***高級應用之SSL ***互聯互通

由於國家GW防火牆對***的管控,不能直接通過國內與香港建立***,如果反過來,通過open***從香港主動連接國內,就可以實現,親測,速度和穩定性非常OK;

1、 Open***優勢

1. 配置靈活,可以應付各種複雜網絡環境,比如點對點,或者網對網;

2. 實用性非常強,尤其是在當下國家GW干擾***的大環境下,open***可以非常穩定打通國內外網絡,實現互聯互通,而且效果非常明顯,非常穩定;

3. 成本價格低,是性價比非常高的***方案,其性能並不亞於硬件設備,只需要一臺穩定的PC電腦,或者雲主機上部署,尤其適合於中小企業;

4. 支持移動辦公,也可以使用於手機等移動終端設備;

2、 網絡拓撲圖

clip_image002[8]

3、 實驗目的

通過Open***來實現172.16.20.0/24網絡與服務器網絡B(10.99.0.0/24)的網絡互聯,可用於解決國外網絡延遲問題。

4、 環境說明

準備兩臺服務器,這裏分別是兩臺雲主機,網絡在供應商哪裏是經過優化的,到大陸非常穩定,延遲,見圖,即深圳***服務器和香港***服務器;

深圳***服務器作爲***服務器,香港***服務器作爲深圳***服務器的客戶端;而客戶端網絡A所在的網絡的PC機作爲香港***服務器的客戶端;客戶端網絡A撥入香港***服務器,香港***服務器以客戶端的身份再撥入深圳***服務器,從而打通了客戶端網絡A的pc機訪問深圳***服務器所在的服務器網絡B,即 172.16.20.0/24訪問10.99.0.0/24

深圳***服務器

eth0接口IP:10.99.0.12(此直連物理網絡,非***虛擬網絡) ***虛擬IP:172.16.10.0/24 外網IP(略)

香港***服務器

eth0接口IP:10.0.0.5 ***虛擬IP: 172.16.20.0/24 外網IP(略)

撥入深圳***服務器的客戶端Common Name是xgserver

注: 深圳/香港***服務器 都是 雲主機服務器;

對比拓撲圖和IP地址信息,得出最終的目的是要實現

172.16.20.0/24 網絡與10.99.0.0/24 互聯互通;

也許你會奇怪,爲什麼不是客戶端網絡A與服務器網絡B的互聯互通? 其實這裏關係並不大, 172.16.20.0/24與10.99.0.0/24 能通,AB網絡的互通就不難了,關鍵是我們要理解其中的邏輯;

5、 軟件安裝

yum install gcc* openssl-devel net-tools lzo-devel pam-devel –y
mkdir /usr/local/open***
tar –zxvf open***-2.4.2.tar.gz
cd open***-2.4.2
./configure –prefix=/usr/local/open***
Make
Make install

6、 配置easyrsa

pen***-2.3.8及以上版本,不包含easy-rsa,需要單獨下載:

git clone https://github.com/Open***/easy-rsa
mkdir /etc/open***/server
cp –r easy-rsa /etc/open***/server
cd /etc/open***/server/easy-rsa/easyrsa3
cp vars.example vars
vi vars     #編輯vars,定位到如下配置位置,修改如下
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "GUANGDONG"
set_var EASYRSA_REQ_CITY "SHENZHEN"
set_var EASYRSA_REQ_ORG "HUANAN"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "mycompany"

保存,退出

7、 創建服務器證書及key

cp –R /so ftware/easy-rsa /etc/open***/server #拷貝easy-rsa目錄到此目錄
cd /etc/open***/server/easy-rsa/easyrsa3 #定位到目錄,此目錄
./easyrsa init-pki #初始化Pki
./easyrsa build-ca #創建根證書

………….

Enter PEM pass phrase: #輸入根證書密碼,用於後續證書創建

Verifying - Enter PEM pass phrase: #重複輸入,確認密碼

…………..

./easyrsa gen-req server nopass #創建服務端書
./easyrsa sign server server #簽約服務器端證書,提示輸入密碼,先輸入前面的根證書密碼,第二個密碼爲服務器密碼;
./easyrsa gen-dh #創建Diffie-Hellman,確保key穿越不安全網絡

8、 創建客戶端證書

mkdir /etc/open***/client #創建客戶端目錄,用於存放客戶端證書和easy-rsa
cp –r /software/easy-esa /etc/open***/client
cd /etc/open***/client/easy-rsa/easyrsa3
./easyrsa init-pki #初始化
./easyrsa gen-req sgserver 注:後面提示的密碼,設置之後必須記住,配置windows/linux客戶端連接的時候,需要用到;
cd /etc/open***/server/easy-rsa/easyrsa3 #定位到服務器的easy-rsa目錄
./easyrsa import-req /etc/open***/client/easy-rsa/easyrsa3/pki/reqs/xgserver.req xgserver #此req文件,是上圖中倒數第二行的目錄,導入並簽約證書
./easyrsa sign client xgserver #提示輸入根證書的密碼,即最開始創建根證書時設置的密碼

9、 服務器和客戶端生成的文件

服務器端文件:

/etc/open***/server/easy-rsa/easyrsa3/pki/ca.crt
/etc/open***/server/easy-rsa/easyrsa3/pki/dh.pem
/etc/open***/server/easy-rsa/easyrsa3/pki/issued/server.crt
/etc/open***/server/easy-rsa/easyrsa3/pki/issued/xgserver.crt
/etc/open***/server/easy-rsa/easyrsa3/pki/private/ca.key
/etc/open***/server/easy-rsa/easyrsa3/pki/private/server.key
/etc/open***/server/easy-rsa/easyrsa3/pki/reqs/server.req
/etc/open***/server/easy-rsa/easyrsa3/pki/reqs/xgserver.req

客戶端文件:

/etc/open***/client/easy-rsa/easyrsa3/pki/private/xgserver.key
/etc/open***/client/easy-rsa/easyrsa3/pki/reqs/xgserver.req

10、 複製文件

拷貝服務器密鑰及證書等到open***目錄

cp /etc/open***/server/easy-rsa/easyrsa3/pki/ca.crt /etc/open***/server
cp /etc/open***/server/easy-rsa/easyrsa3/pki/dh.pem /etc/open***/server
cp /etc/open***/server/easy-rsa/easyrsa3/pki/issued/server.crt /etc/open***/server
cp /etc/open***/server/easy-rsa/easyrsa3/pki/private/server.key /etc/open***/server

拷貝客戶端密鑰及證書等到client目錄

/etc/open***/client/easy-rsa/easyrsa3/pki/private/xgserver.key
/etc/open***/server/easy-rsa/easyrsa3/pki/ca.crt
/etc/open***/server/easy-rsa/easyrsa3/pki/issued/xgserver.crt

客戶端文件通常需要拷貝到客戶端,比如windows

注: 以上所有配置,可以深圳和香港***服務器,基本一樣,只是要注意客戶端Common Name要保持不一樣,以免混淆。

11、 服務器配置

深圳服務器與香港服務器配置上有些區別,

進到open***的解壓目錄:

cd open***-2.4.2 /sample/sample-config-files
cp server.conf /etc/open*** #兩臺服務器都需要複製

深圳***服務器配置:

vi server.conf #修改服務器端配置文件

management 127.0.0.1 1196 #管理接口
port 1195 #監聽端口
proto udp #使用UDP封裝協議
dev tun #tun設備
ca /etc/open***/server/ca.crt #指定根證書
cert /etc/open***/server/server.crt #指定服務器證書
key /etc/open***/server/server.key #指定服務器密鑰
dh /etc/open***/server/dh.pem #DH
server 172.16.10.0 255.255.255.0 #***客戶端IP
ifconfig-pool-persist ipp.txt
push "route 10.99.0.0 255.255.255.0" #推送路由給客戶端
client-config-dir /etc/open***/ccd #指定定製化客戶端的目錄,用於控制客戶端的權限
route 172.16.20.0 255.255.255.0 #在本機open***服務器上添加系統路由
client-to-client #允許客戶端互訪,默認只能客戶端訪問***服務器
keepalive 10 120
cipher AES-128-CBC #加密協議
comp-lzo
persist-key
persist-tun
status open***-status.log
log open***.log
log-append open***.log
verb 3

配置ccd,控制xgserver客戶端配置

mkdir /etc/open***/ccd
vi xgserver #文件名必須跟客戶端的Common Name相同,前文說過,這個客戶端是安裝在香港***服務器上,用於撥入深圳***服務器的,而連通香港和深圳網絡;

添加如下內容:

ifconfig-push 172.16.10.250 172.16.10.249 #推送給客戶端的IP地址;
iroute 172.16.20.0 255.255.255.0 #添加open***的路由,這裏操作系統路由不同

注: 且看route 172.16.20.0 255.255.255.0 和 iroute 172.16.20.0 255.255.255.0,這兩者之間有什麼區別呢,爲什麼要同時配置呢?

答: 這兩個參數非常重要,是***兩端的網絡互聯的關鍵;route和iroute參數,在這裏分別控制着不同的路由,route是控制系統路由的,即給操作系統添加路由;iroute是控制系統路由之外的Open***內部路由,其本質是告訴open***通過對等方創建一條內部open***路由到達對端網絡,每個客戶端所在的網絡並不相同,所以,這是每個客戶端的配置;這就是open***的網對網的靈活之處,維護和定位每個客戶端所在子網以及所連接的子網,可以任意控制客戶端所在的子網訪問或者不能互訪,隨意控制虛擬網絡的終點和起點;

如何查看open***的內部路由呢?

在服務器上,打開Open***的管理端口,即management控制的參數;

telnet 127.0.0.1 1196

進入之後,再輸入status,看如下:

clip_image004[8]

香港***服務器配置:

local 10.0.0.5
management 127.0.0.1 1196
port 1195
proto udp
dev tun
ca /etc/open***/server/ca.crt
cert /etc/open***/server/server.crt
key /etc/open***/server/server.key
dh /etc/open***/server/dh.pem
server 172.16.20.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.99.0.0 255.255.255.0"
push "route 172.16.10.0 255.255.255.0"
client-to-client
keepalive 10 120
cipher AES-128-CBC
comp-lzo
persist-key
persist-tun
status open***-status.log
log open***.log
log-append open***.log
verb 3

12、 開啓路由轉發

vim /etc/sysctl.conf
net.ipv4.ip_forward = 0 改成 net.ipv4.ip_forward = 1

13、 iptables配置

/sbin/iptables -t nat -I POSTROUTING -s 172.16.20.0/255.255.255.0 -o ens33 -j MASQUERADE #對於來源爲***虛擬IP訪問配置未指定的網絡時,通過物理網口eth0的nat轉發出去,通常是公網網絡
iptables -I FORWARD 1 -j ACCEPT #默認轉發是禁止的,允許轉發;這條很重要,網上太多資料都沒有這一條,不是本機的網絡,要允許防火牆轉發;

注:配置了以上策略,要記得保存iptables-save

14、 啓動open***服務

深圳***服務器:

/usr/local/open***/sbin/open*** --config /etc/open***/server/server.conf &

香港***服務器:

/usr/local/open***/sbin/open*** --config /etc/open***/server/server.conf &

啓動客戶端(linux系統,在香港***服務器上)

Linux下,客戶端的安裝方法,跟服務器端安裝方法,不過,客戶端不需要配置easy-rsa;

mkdir /etc/open***/szconnection
cp /software/open***-2.4.2/sample/sample-config-files/client.conf /etc/open***/szconncection/ #從open***源碼包中,拷貝客戶端配置文件;

把xgserver這個客戶端的證書密鑰 以及根證書拷貝這個目錄(具體文件,請參照 10、 複製文件的客戶端證書和密鑰所提到的三個文件,通過一些方法(比如scp)拷貝/etc/open***/szconncection/目錄),最終目錄如下:

clip_image006[8]

配置文件內容如下:

client
dev tun
proto udp
remote 211.154.139.8 1094
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/open***/szconnection/ca.crt
cert /etc/open***/szconnection/xgserver.crt
key /etc/open***/szconnection/xgserver.key
remote-cert-tls server
cipher AES-256-CBC
comp-lzo
verb 3

保存

啓動

/usr/local/open***/sbin/open*** --config /etc/open***/szconnection/client.conf &

注: 這裏啓動 通常需要輸入密碼,linux無法保存此密碼,下面提供了一個腳本可以保存密碼,供參考;

腳本內容:

#!/usr/bin/expect
set timeout 30
spawn /usr/local/open***/sbin/open*** --config /etc/open***/szconnection/client.conf
expect "Password:" { send "WIN2net\r" }
expect eof

注: 需要先安裝expect

15、 客戶端安裝

客戶端的安裝,非常簡單,可以自行百度,也可以參考其他博客;

16、 測試

從客戶端網絡A中,任意一臺PC安裝***客戶端,ping服務器網絡B網段,在服務器網絡B中,有一臺windows服務器,其IP是10.99.0.10;

先在windows服務器,添加路由:

route add –p 172.16.20.0 mask 255.255.255.0 10.99.0.12

然後從客戶端網絡A中,ping 10.99.0.10

clip_image008[8]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章