爲了能從辦公室直接連進ECS(阿里雲服務器)進行調試,因此這幾天斷斷續續是研究開源×××軟件pptp和open***,直到今天才成功.(這裏很鄙視阿里雲的客服和售後工程師,一會說能搭建***,一會說又不能,我就*了;同時也很鄙視阿里的路由表,弄的我蛋都碎光了)
linux
吐槽到此爲止,接下來進入咱們今天的正題:open***。
ubuntu
一)初識
vim
Open××× 是一個基於 OpenSSL 庫的應用層 ××× 實現。和傳統 ××× 相比,它的優勢是簡單易用。windows
Open×××容許參與創建×××的單點使用共享金鑰,電子證書,或者用戶名/密碼來進行身份驗證。它大量使用了OpenSSL加密庫中的SSLv3/TLSv1 協議函式庫。Open×××能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X與Windows 2000/XP/Vista上運行,幷包含了許多安全性的功能。它並非一個基於Web的×××軟件,也不與IPsec及其餘×××軟件包兼容。安全
二)環境 bash
***:CentOS release 6.5 (Final) 服務器
客戶端:win8(其餘客戶端安裝方法,請見博文最後)
app
三)安裝dom
安裝基礎包tcp
yum install openssl-devel pam-devel gcc -y
wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz tar xvfz openssl-1.0.1g.tar.gz cd openssl-1.0.1g ./config --prefix=/usr/local make && make installs
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz tar zxvf lzo-2.06.tar.gz cd lzo-2.06 ./configure --prefix=/usr/local make && make install
2.安裝open***服務端
針對CentOS 5
rpm -ivh http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
針對CentOS 6
rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
安裝完rpmforge的repo以後,執行yum命令安裝Open×××
yum install -y open***
3.生成證書
使用easy-rsa腳本產生Open×××所需的CA證書、CA私鑰、服務端證書、服務端私鑰、客戶端證書、客戶端私鑰
先將easy-rsa腳本copy到/etc/open***,並添加可執行權限
cp -R /usr/share/doc/open***-*/easy-rsa /etc/open*** cd /etc/open***/easy-rsa/2.0 chmod +x *
/etc/open***/easy-rsa/2.0 vi /etc/open***/easy-rsa/2.0/vars
找到「export KEY_SIZE=」這行,根據狀況把1024改爲2048或者4096
再定位到最後面,會看到相似下面這樣的
export KEY_COUNTRY=」US」 export KEY_PROVINCE=」CA」 export KEY_CITY=」SanFrancisco」 export KEY_ORG=」Fort-Funston」 export KEY_EMAIL=」me@myhost.mydomain「
這個本身根據狀況改一下,不改也能夠運行。其實不改vars這個文件,***也能夠跑起來。
例如:
export KEY_COUNTRY=」CN」 export KEY_PROVINCE=」SH」 export KEY_CITY=」Shanghai」 export KEY_ORG=」ucloud.cn」 export KEY_EMAIL=」xxx@xxx.cn「
注:在後面生成服務端ca證書時,這裏的配置會做爲缺省配置。
而後使用easy-rsa的腳本產生證書
ln -s openssl-1.0.0.cnf openssl.cnf . vars ./clean-all ./build-ca server ./build-key-server server ./build-key client ./build-dh
4.配置服務端
vim /etc/open***/server.conf
local # 設置監聽端口,必需要對應的在防火牆裏面打開 port 1194 # 設置用TCP仍是UDP協議? ;proto tcp proto tcp # 設置建立tun的路由IP通道,仍是建立tap的以太網通道路由IP容易控制,因此推薦使用它; # 但若是如IPX等必須使用第二層才能經過的通信,則能夠用tap方式,tap也就是以太網橋接 ;dev tap dev tun # 這裏是重點,必須指定SSL/TLS root certificate (ca), # certificate(cert), and private key (key) # ca文件是服務端和客戶端都必須使用的,但不須要ca.key # 服務端和客戶端指定各自的.crt和.key # 請注意路徑,可使用以配置文件開始爲根的相對路徑, # 也可使用絕對路徑 # 請當心存放.key密鑰文件 # 指定Diffie hellman parameters. dh /etc/open***/easy-rsa/2.0/keys/dh1024.pem # 配置×××使用的網段,Open×××會自動提供基於該網段的DHCP服務,但不能和任何一方的局域網段重複,保證惟一 # 維持一個客戶端和virtual IP的對應表,以方便客戶端從新鏈接能夠得到一樣的IP #ifconfig-pool-persist ipp.txt # 爲客戶端建立對應的路由,以另其通達公司網內部服務器 # 但記住,公司網內部服務器也須要有可用路由返回到客戶端 ;push "route 192.168.20.0 255.255.255.0" #push "route 10.6.0.0 255.255.0.0" # 若客戶端但願全部的流量都經過×××傳輸,則可使用該語句 # 其會自動改變客戶端的網關爲×××服務器,推薦關閉 # 一旦設置,請當心服務端的DHCP設置問題 # 用Open×××的DHCP功能爲客戶端提供指定的DNS、WINS等 push "dhcp-option DNS 8.8.8.8" #push "dhcp-option WINS 10.8.0.1" # 默認客戶端之間是不能直接通信的,除非把下面的語句註釋掉 # 下面是一些對安全性加強的措施 # For extra security beyond that provided by SSL/TLS, create an "HMAC firewall" # to help block DoS attacks and UDP port flooding. # # Generate with: # open*** --genkey --secret ta.key # # The server and each client must have a copy of this key. # The second parameter should be 0 on the server and 1 on the clients. tls-auth ta.key 0 # This file is secret # 使用lzo壓縮的通信,服務端和客戶端都必須配置 # 輸出短日誌,每分鐘刷新一次,以顯示當前的客戶端 status /var/log/open***/open***-status.log # 缺省日誌會記錄在系統日誌中,但也能夠導向到其餘地方 # 建議調試的使用先不要設置,調試完成後再定義 log /var/log/open***.log #log-append /var/log/open***/open***.log # 設置日誌的級別 # # 0 is silent, except for fatal errors # 4 is reasonable for general usage # 5 and 6 can help to debug connection problems # 9 is extremely verbose
5.打開服務器路由轉發功能
vim /etc/sysctl.conf
修改如下內容
net.ipv4.ip_forward = 1
# 而後使內核參數生效:
sysctl -p
路由轉發 #iptables-t nat -A POSTROUTING -s 172.1.1.0/24 -o eth1 -j MASQUERADE #添加NAT 172.1.1.0/24是OPEN×××的地址 10.161.xxx.xxx是阿里ECS的內網地址(ifconfig eth0) iptables -tnat -A POSTROUTING -s 172.1.1.0/24 -j SNAT --to-source 10.161.XXX.XXX #保存iptables service iptables save
啓動open***
chkconfig open*** on
/etc/init.d/open*** start
四)open***客戶端配置
對於windows客戶端
客戶端安裝完成後,進入到安裝目錄,如D:\Program Files\Open×××。將Linux服務端使用easy-rsa產生的客戶端證書、私鑰和ca證書下載到本地。即須要下載到本地的文件以下:
/etc/open***/easy-rsa/2.0/keys/ca.crt #ca證書 /etc/open***/easy-rsa/2.0/keys/client.crt #客戶端證書 /etc/open***/easy-rsa/2.0/keys/client.key #客戶端私鑰
將這些文件下載到..\.\Open×××\config下。
編輯客戶端Open×××配置文件client.o***,內容以下:
client dev tun proto tcp remote 115.29.xxx.xxx 1194 #阿里雲的***外網ip和端口 resolv-retry infinite nobind persist-key persist-tun ca ca.crt #一系列證書位置 cert client.crt key client.key comp-lzo verb 3 ns-cert-type server ip-win32 dynamic 0 28800 #windows route-method exe route-delay 3
到這裏算是大工完成了,主要是iptables和路由表會比較蛋疼,測試和排錯的過程就不展現了。
下面給幾個其餘客服端的配置:
ubuntu:http://www.linuxidc.com/Linux/2013-06/86562.htm
https://code.google.com/p/tunnelblick/
1.打開Tunnelblick
2.點擊左下角+
3.我有設置文件
4.Open×××設置
5.打開私人設置文件夾
6.將key和新建的client.o***放到此目錄下