open***-實戰一

Open V P N 的lan-to—lan 模式實戰

基礎概念介紹

1.  Open  ××× 概述
Open   ×××  (全稱Virtual Private Network)虛擬專用網絡,是依靠ISAP和其他的NSP,在公共網絡中建立專用的數據通信網絡的技術。 

2.  隧道協議
PPTP:點對點隧道協議(PPTP)是由微軟和3Com 等公司組成的PPTP論壇開發的一種點對點隧道協議,基於撥號使用的PPP協議
L2TP:第2層隧道協議(L2TP)是IETF基於L2F(cisco的第二層轉發協議)開發的PPTP後續版本,可以創建不同的隧道。支持驗證
IPSec:IP安全協議(IPSec:IP Security)實際上是一套協議包而不是一個獨立的協議,IPSec隧道模式隧道是封裝,
SSL ×××,SSL 協議提供了數據私密性、端點驗證、信息完整性等特性,協商一種加密算法和密碼鑰匙。

3.  Open××× 介紹
open***是一個開源軟件,Open×××允許參與建立×××單點使用預設的私鑰,第三方證書,或者用戶名/密碼來進行身份驗證。它大量使用OpenSSL加密庫,以及SSLv3/TLSv1 協。C/S架構
4.  選擇×××建議 
        1.  硬件產品   負載均衡設備
        2.  Open××× 功能強大、穩定可靠
5.  Open××× 開源產品
    Open××× 支持平臺  win  linux  BSD  MAC 
6.  Open××× 是通過公開密鑰(非對稱密鑰,加密解密使用不同的key)對數據進行加密。
    驗證支持第三方的證書,以及用戶名/密碼 
7.  Open××× 通信原理
    所有的通信基於一個單一的IP端口1194,默認使用UDP協議,同時TCP也被支持,Open××× 連接能通過大多數代理服務器,

實踐部署

1.  雙網卡,eth1  外網
        eth0  內網
2.  時鐘同步  ntpdate pool.ntp.org
3.  Open××× 安裝涉及到2個軟件
    open*** 依賴包 openssl openssl-devel    lzo-devel lzo pam pam-devel  automake pkgconfig libtool  

INSTALL:
git clone https://github.com/Open×××/open***
cd open***
git branch -a
git checkout -b 2.2 remotes/origin/release/2.2
git checkout master
autoreconf -i -v –f
./configure --prefix=/usr/local/open***
make
make install 
6.     使用easy-rsa 生成服務端證書
cd /tmp/tool/
git clone https://github.com/Open×××/easy-rsa.git
cd easy-rsa/
git branch -a
git checkout 2.x -b remotes/origin/release/2.x
cd easy-rsa/2.0/
cp vars vars.bak
vim  vars 
     sed -i 's/export KEY_COUNTRY="US"/export KEY_COUNTRY="CN"/g' vars
     sed -i 's/export KEY_PROVINCE="CA"/export KEY_PROVINCE=" BJ "/g' vars
     sed -i 's/export KEY_CITY="SanFrancisco"/export KEY_CITY="BJ"/g' vars
     sed -i 's/export KEY_ORG="Fort-Funston"/export KEY_ORG="LNGTOP"/g' vars
sed -i 's/export [email protected]/ export [email protected]/g' vars
     sed -i 's/export KEY_CN=changeme/export KEY_CN=***server/g' vars
     sed -i 's/export KEY_NAME=changeme/export KEY_NAME=server/g' vars
         sed -i 's/export KEY_OU=changeme/export KEY_OU=Network Center/g' vars
初始化參數
source ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/open***/easy-rsa/easy-rsa/2.0/keys
./clean-all   
##清除keys目錄下所有與證書相關的文件
./build-ca 
## 生成根證書ca.crt和根密鑰ca.key
./build-key-server open***   
## 爲服務器端生成證書和密鑰
./build-dh   
## 會生成dh2048.pem 文件
7.  生成***客戶端證書和密鑰
./easy-rsa/easy-rsa/2.0/build-key xing                                                          
## 每一個登錄的××× 客戶端需要證書,每一個客戶端同一時刻只能供一個客戶端連接,需要多個客戶端連接一個證書需要修改配置文件。不建議這樣去做。                                                                                                   
8.  修改open*** 配置文件
mkdir   /etc/open*** 
cp /tmp/tool/open***/sample/sample-config-files/server.conf /etc/open***/
# server.conf open***的主配置文件,啓動的時候需要加載這個文件
cp /tmp/tool/open***/sample/sample-config-files/client.conf  /etc/open***/

clinet撥號時使用的配置文件
cp /tmp/tool/easy-rsa/easy-rsa/2.0/keys   /etc/open***/
# 將生成的keys 目錄拷貝到/etc/open*** 目錄下

Open××× 配置文件
vim /etc/open***/server.conf
將配置文件cp 並且過濾之後修改之後的配置文件如下
cat /etc/open***/server.conf 
port 1194
proto tcp
dev tun
ca /etc/open***/keys/ca.crt
cert /etc/open***/keys/open***.crt
key  /etc/open***/keys/open***.key
dh /etc/open***/keys/dh2048.pem
server 10.50.50.0 255.255.255.0
push "route 192.168.200.0 255.255.255.0"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/open***-status.log
verb 3
client-to-client
duplicate-cn
log /var/log/open***.log

9. 啓動open*** 
/usr/local/open***/sbin/open*** --config /etc/open***/server.conf --daemon

[root@localhost ~]# lsof -i:1194
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
open*** 2334 root    6u  IPv4  19729      0t0  TCP *:open*** (LISTEN)

6.  客戶端測試
Windows 客戶端測試: 
需要下載和服務器端一直的客戶端版本軟件
https://open***.net/index.php/download/community-downloads.html
查看服務器端open*** 版本號,下載對應的客戶端軟件

open***-實戰一

Windows 下安裝好的open***客戶端軟件
 ![](http://i2.51cto.com/images/blog/201811/20/29bfe5a5e1609d96ac0fa16c4fd0a39e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

  需要從服務器端下載客戶端生成的證書文件包括根證書ca.crt 客戶端證書xing.crt  xing.key client.conf 文件,其實客戶端安裝位置也有一個客戶端模板文件,在客戶端安裝路徑下的Open×××\sample-config 目錄下。 
 Open*** 安裝目錄 
 ![](http://i2.51cto.com/images/blog/201811/20/a8ffe1567c419e4ab82f112be17277db.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

 在config 目錄創建一個test 目錄去測試 
 ![](http://i2.51cto.com/images/blog/201811/20/0278713435db3478ca1249079a72386c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

test 目錄下包括從服務器端下載下來客戶端需要的證書文件如下:

open***-實戰一

客戶端配置如下
client
dev tun
proto tcp
remote 192.168.8.102  1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert xing.crt
key xing.key
comp-lzo
verb 3
ns-cert-type server
redirect-gateway  
keepalive 20 60
mute 20
route-method exe
route-delay 2

服務器端ip地址如下

open***-實戰一

撥號成功而且open***客戶端顯示爲綠色,就說明***撥號已經成功了!

open***-實戰一

7.  外網撥號設置
   但是我需要外網能撥號,需要將私有地址的ip端口映射到公網上去,需要在路由器上做一下端口映射。 
  將本機的私有ip以及端口映射到公網。 
 虛擬機的ip地址是 192.168.1.52  將192.168.1.52的1194 端口映射到外網  
 需要開啓路由轉發功能,iptables 需要寫一下規則(這個規則可以再撥通***之後再寫)
vim  /etc/sysctl.conf   
  net.ipv4.ip_forward = 1
sysctl -p
cat /proc/sys/net/ipv4/ip_forward   
iptables -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
客戶端需要修改爲外網ip。即可撥號 
[root@localhost ~]# curl http://ipinfo.io    獲取出口的ip地址 
{
  "ip": "118.186.6.146",
  "hostname": "No Hostname",
  "city": "Beijing",
  "region": "Beijing Shi",
  "country": "CN",
  "loc": "39.9289,116.3883",
  "org": "AS23724 IDC, China Telecommunications Corporation"
}  
 telnet 測試 
 telnet 118.186.6.146  1194 

open***-實戰一

修改配置文件去連接
client
dev tun
proto tcp
remote 118.186.6.146  1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert xing.crt
key xing.key
comp-lzo
verb 3
ns-cert-type server
redirect-gateway  
keepalive 20 60
mute 20
route-method exe
route-delay 2

獲取到的open*** 撥號日誌
Tue May 03 10:48:50 2016 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
Tue May 03 10:48:50 2016 [open***] Peer Connection Initiated with [AF_INET]118.186.6.146:1194
Tue May 03 10:48:51 2016 MANAGEMENT: >STATE:1462243731,GET_CONFIG,,,
Tue May 03 10:48:52 2016 SENT CONTROL [open***]: 'PUSH_REQUEST' (status=1)
Tue May 03 10:48:53 2016 PUSH: Received control message: 'PUSH_REPLY,route 192.168.1.10 255.255.255.0,dhcp-option DNS 223.5.5.5,route 10.50.50.0 255.255.255.0,topology net30,ping 10,ping-restart 120,peer-id 0,ifconfig 10.50.50.6 10.50.50.5'
Tue May 03 10:48:53 2016 OPTIONS IMPORT: timers and/or timeouts modified
Tue May 03 10:48:53 2016 OPTIONS IMPORT: --ifconfig/up options modified
Tue May 03 10:48:53 2016 OPTIONS IMPORT: route options modified
Tue May 03 10:48:53 2016 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Tue May 03 10:48:53 2016 OPTIONS IMPORT: peer-id set
Tue May 03 10:48:53 2016 OPTIONS IMPORT: adjusting link_mtu to 1547
Tue May 03 10:48:53 2016 ROUTE_GATEWAY 192.168.1.1/255.255.255.0 I=12 HWADDR=28:d2:44:c7:a5:c9
Tue May 03 10:48:53 2016 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Tue May 03 10:48:53 2016 MANAGEMENT: >STATE:1462243733,ASSIGN_IP,,10.50.50.6,
Tue May 03 10:48:53 2016 open_tun, tt->ipv6=0
Tue May 03 10:48:53 2016 TAP-WIN32 device [本地連接 2] opened: \\.\Global\{8D3815E5-559B-4BF4-86B7-BA0104382578}.tap
Tue May 03 10:48:53 2016 TAP-Windows Driver Version 9.9 
Tue May 03 10:48:53 2016 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.50.50.6/255.255.255.252 on interface {8D3815E5-559B-4BF4-86B7-BA0104382578} [DHCP-serv: 10.50.50.5, lease-time: 31536000]
Tue May 03 10:48:53 2016 Successful ARP Flush on interface [23] {8D3815E5-559B-4BF4-86B7-BA0104382578}
Tue May 03 10:48:55 2016 TEST ROUTES: 3/3 succeeded len=2 ret=1 a=0 u/d=up
Tue May 03 10:48:55 2016 C:\windows\system32\route.exe ADD 118.186.6.146 MASK 255.255.255.255 192.168.1.1
Tue May 03 10:48:55 2016 env_block: add PATH=C:\windows\System32;C:\windows;C:\windows\System32\Wbem
Tue May 03 10:48:55 2016 C:\windows\system32\route.exe DELETE 0.0.0.0 MASK 0.0.0.0 192.168.1.1
Tue May 03 10:48:55 2016 env_block: add PATH=C:\windows\System32;C:\windows;C:\windows\System32\Wbem
Tue May 03 10:48:55 2016 C:\windows\system32\route.exe ADD 0.0.0.0 MASK 0.0.0.0 10.50.50.5
Tue May 03 10:48:55 2016 env_block: add PATH=C:\windows\System32;C:\windows;C:\windows\System32\Wbem
Tue May 03 10:48:55 2016 MANAGEMENT: >STATE:1462243735,ADD_ROUTES,,,
Tue May 03 10:48:55 2016 C:\windows\system32\route.exe ADD 192.168.1.10 MASK 255.255.255.0 10.50.50.5
Tue May 03 10:48:55 2016 env_block: add PATH=C:\windows\System32;C:\windows;C:\windows\System32\Wbem
Tue May 03 10:48:55 2016 C:\windows\system32\route.exe ADD 10.50.50.0 MASK 255.255.255.0 10.50.50.5
Tue May 03 10:48:55 2016 env_block: add PATH=C:\windows\System32;C:\windows;C:\windows\System32\Wbem
Tue May 03 10:48:55 2016 Initialization Sequence Completed
Tue May 03 10:48:55 2016 MANAGEMENT: >STATE:1462243735,CONNECTED,SUCCESS,10.50.50.6,118.186.6.146

但是*** 撥號成功之後不能連接外網,需要添加一條iptables 規則 
iptables -t nat -A POSTROUTING -s 10.50.50.0/24 -o eno16777728 -j MASQUERADE  
因爲*** 客戶端獲取的ip 是10.50.50.0 網段的,他要上網的話是通過 eno16777728 上網

open***-實戰一
open***-實戰一

或者添加一條到達對方路由
route  add -net 

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