Open***是不同於PPTP、L2TP的另一種***軟件包,基於SSL的***。Open***使用需要客戶端支持。這裏系統爲CentOS6.2。
一、檢查Open***所需環境
Open***需要TUN設備支持,還需要iptables的nat模塊支持。
1、檢查TUN模塊:
modinfo tun
顯示如下:
如果報錯則不支持TUN設備。
2、在OpenVZ虛擬化的VPS上,需要管理員在母雞上打開TUN/TAP設備。
cat /dev/net/tun
如果返回:
cat: /dev/net/tun: File descriptor in bad state
VPS的TUN/TAP已經可以使用。
如果返回:
cat: /dev/net/tun: No such device
或者其它,說明TUN/TAP設備沒有被正確配置,需要與客服溝通開通TUN/TAP。
3、檢查OpenVZ的VPS上iptables是否支持:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
如果返回:
iptables: Unknown error 4294967295
說明支持。
二、編譯安裝Open***
1、安裝LZO
LZO是一種數據壓縮算法。
cd /tmp
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
make
make install
2、安裝Open***
cd /tmp
wget http://swupdate.open***.org/community/releases/open***-2.2.2.tar.gz
tar -zxvf open***-2.2.2.tar.gz
cd open***-2.2.2
./configure
此時提示:
configure: error: OpenSSL Crypto headers not found.
原來是openssl的開發包沒有安裝:
yum install openssl-devel
繼續安裝:
./configure
make
make install
mkdir /etc/open***
cp -R /tmp/open***-2.2.2/easy-rsa/ /etc/open***/ #複製生成證書的腳本
三、生成密鑰和證書
1、初始化PIK
cd /etc/open***/easy-rsa/2.0/
vim vars
設置最後的證書字段值:
export KEY_COUNTRY="CN"
export KEY_PROVINCE="SH"
export KEY_CITY="shanghai"
export KEY_ORG="xxxx"
export KEY_EMAIL="[email protected]"
export [email protected]
export KEY_CN=tom
export KEY_NAME=tom
export KEY_OU=tom
export PKCS11_MODULE_PATH=tom
export PKCS11_PIN=1234
使vars設置生效:
source ./vars
報錯:
No /etc/open***/easy-rsa/2.0/openssl.cnf file could be found
Further invocations will fail
將/etc/open***/easy-rsa/2.0目錄下的openssl-1.0.0.cnf改名爲openssl.cnf可解決:
cp openssl-1.0.0.cnf openssl-1.0.0.cnf.bak
mv openssl-1.0.0.cnf openssl.cnf
繼續運行腳本設置變量,並清理:
source ./vars
./clean-all
建立私鑰:
./build-ca
build-ca腳本用於生成一個1024位的RSA私鑰,由於前面已經設置過vars文件,直接按回車。
2、建立server key
./build-key-server server
前面幾個按回車,中間有extra屬性要填,最後按兩個y。
3、建立client key
./build-key client1
和建立server key基本相同,生成的每個客戶端證書名字要不同。一份客戶端證書對應一個客戶端。
4、生成Diffie Hellman參數
./build-dh
5、將keys下的所有文件下載到本地
可以用winscp等工具。
6、創建服務端配置文件
將源代碼解壓後目錄下的規範配置文件複製過來。
mkdir /etc/open***/easy-rsa/2.0/conf/
cp /tmp/open***-2.2.2/sample-config-files/server.conf /etc/open***/easy-rsa/2.0/conf/
編輯配置文件:
vim /etc/open***/easy-rsa/2.0/conf/server.conf
找到:
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
修改爲:
ca /etc/open***/easy-rsa/2.0/keys/ca.crt
cert /etc/open***/easy-rsa/2.0/keys/server.crt
key /etc/open***/easy-rsa/2.0/keys/server.key
dh /etc/open***/easy-rsa/2.0/keys/dh1024.pem
並將以下幾句前的分號去掉:
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
client-to-client
user nobody
group nobody
7、設置IP包轉發
vim /etc/sysctl.conf
將“net.ipv4.ip_forward”的值改爲1。
使sysctl.conf配置生效:
sysctl -p
8、添加iptables轉發
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
/etc/init.d/iptables save
/etc/init.d/iptables restart
PS:如果iptables save報錯
iptables: Saving firewall rules to /etc/sysconfig/iptables: /etc/init.d/iptables: line 268: restorecon: command not found
要安裝一個軟件包:
yum install policycoreutils
9、設置Open***開機自啓動
echo "/usr/local/sbin/open*** --config /etc/open***/easy-rsa/2.0/conf/server.conf &" >> /etc/rc.local
10、啓動Open***
/usr/local/sbin/open*** --config /etc/open***/easy-rsa/2.0/conf/server.conf
四、安裝Windows客戶端Open*** GUI For Windows
1、下載客戶端軟件並安裝
http://open***.se/files/install_packages/open***-2.0.9-gui-1.0.3-install.exe
2、配置客戶端
將下載下來的keys文件夾內的:
ca.crt
ca.key
client1.crt
client1.csr
client1.key
複製到客戶端安裝路徑config文件夾下。
例如:
C:\Program Files\Open***\config
將安裝路徑sample-config文件夾下的client.o***也複製到config文件夾內。
打開client.o***,找到:
remote my-server-1 1194
將my-server-1修改爲Open***服務端的ip地址。
找到:
cert client.crt
key client.key
修改爲客戶端證書的名字。
cert client1.crt
key client1.key
在最後加上:
redirect-gateway def1
使客戶端把Open***服務器IP設爲默認網關。
雙擊client.o***即可啓動open***,或者通過Open*** GUI的控制啓動***。
隨後到ip查詢的網站上查看自己的ip是否爲Open***服務器ip。
備註:
客戶端連接時報錯:
There are no TAP-Win32 adapters on this system. You should be able to create a TAP-Win32 adapter by going to Start -> All Programs -> Open*** -> Add a new TAP-Win32 virtual ethernet adapter.
需要安裝TAP-Win32 virtual ethernet adapter。