外部用戶透過路由器從open***服務器映射出的1194端口,鏈接×××服務器,從而訪問公司內部服務。vim
http://down.51cto.com/data/1142891bash
這裏我已經有將open***軟件進行打包(包含了open***-2.3.3.tar.gz服務器安裝包 open*** 32/64位客戶端 lzo-2.0.6.tar.gz依賴包 easy-rsa證書製做工具)服務器
1.時間校對網絡
開始沒有對時,致使後來沒法聯入×××app
yum -y install unzip pam-devel ntpdate openssl openssl-devel #unzip用於解壓軟件 #pam-devel是安裝open***必要的依賴包 #ntpdate是網絡校時工具
ntpdate time.nist.gov echo "/usr/sbin/ntpdate time.nist.gov" >> /etc/rc.local echo "* */2 * * * /usr/sbin/ntpdate time.nist.gov" >> /etc/crontab
2.lzo的安裝dom
unzip open***-2.3.3.zip cd open***-2.3.3 tar zxvf lzo-2.06.tar.gz cd lzo-2.06 ./configure --prefix=/usr make && make install /sbin/ldconfig cd ..
3.open***的安裝ssh
mkdir -p /data/open***/conf #用於存放配置文件 mkdir -p /data/open***/log #用於存放open***日誌 mkdir -p /data/open***/easy-rsa #用於存放密鑰生成工具及密鑰 tar zxvf open***-2.3.3.tar.gz cd open***-2.3.3 ./configure --prefix=/data/open*** make && make install cp sample/sample-config-files/server.conf /data/open***/conf/ #拷貝實例配置文件 cd ..
4.easy-rsa的解壓tcp
unzip easy-rsa.zip cd easy-rsa/2.0/ cp -rf * /data/open***/easy-rsa/ cd /data/open***/easy-rsa/ chmod +x *
5.修改vars文件
ide
vim vars export KEY_SIZE=2048 export CA_EXPIRE=3650 export KEY_EXPIRE=365 export KEY_COUNTRY="CN" export KEY_PROVINCE="GD" export KEY_CITY="ShenZhen" 城市隨便填一個便可 export KEY_ORG="Example INC" 組織單位 export KEY_EMAIL="ca@example.com" 郵箱地址能夠隨便填寫 export KEY_OU="Manager" 組織容器能夠隨便填寫 export KEY_NAME="×××Service" 名稱能夠隨便填寫
source vars #使之生效
6.生成證書工具
./clean-all #初始化 ./build-ca #建立根證書,一路回車便可 Generating a 2048 bit RSA private key ........+++ .+++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [CN]: State or Province Name (full name) [GD]: Locality Name (eg, city) [ShenZhen]: Organization Name (eg, company) [Example INC]: Organizational Unit Name (eg, section) [Manager]: Common Name (eg, your name or your server's hostname) [Example INC CA]: Name [×××Service]: Email Address [ca@example.com]:
建立服務器端密鑰
./build-key-server server Country Name (2 letter code) [CN]: #回車 State or Province Name (full name) [GD]: #回車 Locality Name (eg, city) [ShenZhen]: #回車 Organization Name (eg, company) [Example INC]: #回車 Organizational Unit Name (eg, section) [Manager]: #回車 Common Name (eg, your name or your server's hostname) [server]: #回車 Name [×××Service]: #回車 Email Address [ca@example.com]: #回車 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: #回車 An optional company name []: #回車 Using configuration from /data/open***/easy-rsa/openssl-1.0.0.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'CN' stateOrProvinceName :PRINTABLE:'GD' localityName :PRINTABLE:'ShenZhen' organizationName :PRINTABLE:'Example INC' organizationalUnitName:PRINTABLE:'Manager' commonName :PRINTABLE:'server' name :PRINTABLE:'×××Service' emailAddress :IA5STRING:'ca@example.com' Certificate is to be certified until May 5 02:35:08 2015 GMT (365 days) Sign the certificate? [y/n]:y #輸入y,回車 1 out of 1 certificate requests certified, commit? [y/n]y #輸入y,回車 Write out database with 1 new entries Data Base Updated
建立用戶
./build-key client #建立client用戶 #方法和建立服務器密鑰是同樣的
建立Diffie-Hellman文件
./build-dh
7.配置open***
#本機要偵聽使用的IP地址 local 192.168.1.201 #使用的端口,默認1194 port 1194 #使用的協議,默認使用UDP,若是使用HTTP proxy,必須使用TCP協議 proto udp #使用的設備可選tap和tun,tap是二層設備,支持鏈路層協議。 #tun是ip層的點對點協議,限制稍微多一些,建議使用tun,若是使用橋接的話,就必需要使用tap dev tun #Open×××使用的ROOT CA,使用build-ca生成的,用於驗證客戶是證書是否合法 ca /data/open***/easy-rsa/keys/ca.crt #Server使用的證書文件 cert /data/open***/easy-rsa/keys/server.crt #Server使用的證書對應的key,注意文件的權限,防止被盜 key /data/open***/easy-rsa/keys/server.key # This file should be kept secret #上面提到的生成的Diffie-Hellman文件 dh /data/open***/easy-rsa/keys/dh2048.pem #防止註銷用戶登陸 #crl-verify /data/open***/easy-rsa/keys/crl.pem #客戶端使用的地址、子網掩碼 server 10.8.0.0 255.255.255.0 #用於記錄某個Client得到的IP地址,相似於dhcpd.lease文件, #防止open***從新啓動後「忘記」Client曾經使用過的IP地址 ifconfig-pool-persist /data/open***/log/ipp.txt #DHCP的DNS選項 push 「dhcp-option DNS 114.114.114.114" push 「dhcp-option DNS 8.8.4.4" #經過××× Server往Client push路由,client經過pull指令得到Server push的全部選項並應用 push "route 192.168.100.0 255.255.255.0" #若是可讓××× Client之間相互訪問直接經過open***程序轉發, #不用發送到tun或者tap設備後從新轉發,優化Client to Client的訪問效率 client-to-client #若是Client使用的CA的Common Name有重複了,或者說客戶都使用相同的CA #和keys鏈接×××,必定要打開這個選項,不然只容許一我的鏈接×××,建議一人一個證書 duplicate-cn #定義最大鏈接數 max-clients 10 #NAT後面使用×××,若是×××長時間不通訊,NAT Session可能會失效, #致使×××鏈接丟失,爲防止之類事情的發生,keepalive提供一個相似於ping的機制, #下面表示每10秒經過×××的Control通道ping對方,若是連續120秒沒法ping通, #認爲鏈接丟失,並從新啓動×××,從新鏈接 #(對於mode server模式下的open***不會從新鏈接)。 keepalive 10 120 #對數據進行壓縮,注意Server和Client一致 comp-lzo #經過keepalive檢測超時後,從新啓動×××,不從新讀取keys,保留第一次使用的keys persist-key #經過keepalive檢測超時後,從新啓動×××,一直保持tun或者tap設備是linkup的, #不然網絡鏈接會先linkdown而後linkup persist-tun #按期把open***的一些狀態信息寫到文件中,以便本身寫程序計費或者進行其它操做 status /data/open***/log/open***-status.log #和log一致,每次從新啓動open***後保留原有的log信息,新信息追加到文件最後 log-append /data/open***/log/open***.log #至關於debug level,具體查看manual verb 3
8.啓動open***服務
/data/open***/sbin/open*** --config /data/open***/conf/server.conf &
查看是否啓動成功
[root@×××Server easy-rsa]# netstat -ntlup Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 810/sshd tcp 0 0 :::22 :::* LISTEN 810/sshd udp 0 0 0.0.0.0:1194 0.0.0.0:* 16470/open***
能夠看到1194端口已經啓動,說明open***啓動成功
9.註銷證書
同事離職了,須要將證書進行註銷
#註銷帳戶test /data/open***/easy-rsa/revoke-full test Using configuration from /data/open***/easy-rsa/openssl-1.0.0.cnf Revoking Certificate 03. Data Base Updated Using configuration from /data/open***/easy-rsa/openssl-1.0.0.cnf lushare.crt: C = CN, ST = GD, L = ShenZhen, O = Example INC, OU = Manager, CN = test, name = ×××Service, emailAddress = ca@example.com error 23 at 0 depth lookup:certificate revoked #error 23說明證書已經註銷
這個時候仍是能夠利用此證書登陸服務器的,在/data/open***/conf/server.conf下增長一行
crl-verify /data/open***/easy-rsa/keys/crl.pem
再重啓下open***服務便可
killall open*** /data/open***/sbin/open*** --config /data/open***/conf/server.conf &
這個時候open***下的test帳戶已經不能登陸服務器了
10.修改/etc/sysctl.conf
vim /etc/sysctl.conf 將下面值修改成1,開啓Linux ip跳轉 net.ipv4.ip_forward = 1 #保存後執行 sysctl -p
11.防火牆修改
iptables -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p udp --dport 1194 -j ACCEPT #對IP進行轉發 iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE iptables -t nat -A POSTROUTING -o eth1 -s 10.8.0.0/24 -j MASQUERADE service iptables save service iptables restart 或者上面的也能夠改爲 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 192.168.1.0/24 -o eth0 -j SNAT --to-source 192.168.1.10
12.客戶端安裝配置
裏面有一個32位的安裝客戶端,也有一個64位的,按需安裝便可
,安裝完成後,將C:\Program Files\Open×××\sample-config(我這裏安裝在C:\Program Files\Open×××)目錄下的client.o***
拷貝到C:\Program Files\Open×××\config
修改client.o***
client dev tun #設備類型tun、tap根據服務器來設置 proto udp #所使用的協議有udp、tcp根據服務器來設置 remote 192.168.100.201 1194 #主服務器 #remote 250.250.250.250 1194 #備用服務器 #remote-random #開啓服務器的輪詢,若是設置了多臺服務器的話 resolv-retry infinite nobind ;user nobody ;group nobody persist-key persist-tun ca ca.crt #ca證書是從服務器上下載來的 cert client.crt #生成的客戶端證書 key client.key #服務器上生成的密碼 ns-cert-type server comp-lzo #壓縮類型 verb 3
注意:若是是win7/win8的話須要使用管理員權限運行,不然是沒法增長路由的
若是公司使用的是ADSL動態IP上網的話,若是要提供服務的話可使用花生殼(不推薦,至關不穩定),建議本身申請域名使用DNSPOD進行動態解析,設置詳情能夠查看
http://fengwan.blog.51cto.com/508652/1404534