爲了能從辦公室直接連進ECS(阿里雲服務器)進行調試,所以這幾天斷斷續續是研究開源***軟件pptp和open***,直到今天才成功.(這裏很鄙視阿里雲的客服和售後工程師,一會說能搭建***,一會說又不能,我就*了;同時也很鄙視阿里的路由表,弄的我蛋都碎光了)
吐槽到此爲止,接下來進入我們今天的正題:open***。
一)初識
Open*** 是一個基於 OpenSSL 庫的應用層 *** 實現。和傳統 *** 相比,它的優點是簡單易用。
Open***允許參與建立***的單點使用共享金鑰,電子證書,或者用戶名/密碼來進行身份驗證。它大量使用了OpenSSL加密庫中的SSLv3/TLSv1 協議函式庫。Open***能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X與Windows 2000/XP/Vista上運行,幷包含了許多安全性的功能。它並不是一個基於Web的***軟件,也不與IPsec及其他***軟件包兼容。
二)環境
***:CentOS release 6.5 (Final)
客戶端:win8(其他客戶端安裝方法,請見博文最後)
三)安裝
安裝基礎包
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 *
配置PKI
/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=”[email protected]“
這個自己根據情況改一下,不改也可以運行。其實不改vars這個文件,***也可以跑起來。
例如:
export KEY_COUNTRY=”CN” export KEY_PROVINCE=”SH” export KEY_CITY=”Shanghai” export KEY_ORG=”ucloud.cn” export KEY_EMAIL=”[email protected]“
注:在後面生成服務端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
Mac:
https://code.google.com/p/tunnelblick/
1.打開Tunnelblick
2.點擊左下角+
3.我有設置文件
4.Open***設置
5.打開私人設置文件夾
6.將key和新建的client.o***放到此目錄下