Open***是一個用於建立虛擬專用網絡(Virtual Private Network)加密通道的免費開源軟件。使用Open***能夠方便地在家庭、辦公場所、住宿酒店等不一樣網絡訪問場所之間搭建相似於局域網的專用網絡通道。linux
使用Open***配合特定的代理服務器,可用於訪問Youtube、FaceBook、Twitter等受限網站,也可用於突破公司的網絡限制。vim
Open***架構圖服務器
關閉selinux網絡
$ setenforce 0 $ sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
安裝EPEL擴展庫架構
$ yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安裝所需依賴軟件包app
$ yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig
$ yum -y install open*** easy-rsa #EPEL源
$ service open*** start $ chkconfig open*** on
修改vars文件tcp
$ cd /usr/share/easy-rsa/2.0/ $ vim vars #修改註冊信息,好比公司地址、公司名稱、部門名稱等。 export KEY_COUNTRY="CN" export KEY_PROVINCE="ChongQing" export KEY_CITY="ChongQing" export KEY_ORG="jinke" export KEY_EMAIL="jinke@qq.com" export KEY_OU="P2P_TECH"
初始化環境變量ide
$ source vars NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/easy-rsa/2.0/keys
清除keys目錄下全部與證書相關的文件優化
下面步驟生成的證書和密鑰都在/usr/share/easy-rsa/2.0/keys目錄裏 $ ./clean-all
生成服務器端CA證書根證書ca.crt和根密鑰ca.key,因爲在vars文件中作過缺省設置,在出現交互界面時,直接一路回車便可網站
$ ./build-ca
爲服務端生成證書和密鑰(一路按回車,直到提示須要輸入y/n時,輸入y再按回車,一共兩次)
$ ./build-key-server server
建立迪菲·赫爾曼(DH)密鑰,會生成dh2048.pem文件(生成過程比較慢,在此期間不要去中斷它)
$ ./build-dh
生成TLS私密文件ta.key(防DDos***、UDP淹沒等惡意***)
$ open*** --genkey --secret keys/ta.key
每個登錄的***客戶端須要有一個證書,每一個證書在同一時刻只能供一個客戶端鏈接,下面創建2份
爲客戶端生成證書和密鑰(一路按回車,直到提示須要輸入y/n時,輸入y再按回車,一共兩次) $ ./build-key client1 $ ./build-key client2
注意:進行證書製做工做時,仍舊須要進行初始化,但只須要進入easy-rsa目錄,運行source vars
就能夠了,不須要./clean-all 步驟,它會清除一切證書文件,這一點必定要注意!!!
查看keys目錄下生成的文件
$ ls keys/ 01.pem 02.pem 03.pem ca.crt ca.key client1.crt client1.csr client1.key client2.crt client2.csr client2.key dh2048.pem index.txt index.txt.attr index.txt.attr.old index.txt.old serial serial.old server.crt server.csr server.key ta.key
在Open***的配置目錄下新建一個keys目錄
$ mkdir /etc/open***/keys
將須要用到的Open***證書和密鑰複製一份到剛建立好的keys目錄中
$ cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/open***/keys/
複製一份服務器端配置文件模板server.conf到/etc/open***/
$ cp /usr/share/doc/open***-2.3.9/sample/sample-config-files/server.conf /etc/open***/
編輯server.conf配置文件
$ vim /etc/open***/server.conf #本機要偵聽使用的IP地址 local 192.168.1.201 #使用的端口,默認1194 port 1194 #改爲tcp,默認使用udp,若是使用HTTP Proxy,必須使用tcp協議 proto tcp #使用的設備可選tap和tun,tap是二層設備,支持鏈路層協議。 #tun是ip層的點對點協議,限制稍微多一些,建議使用tun,若是使用橋接的話,就必需要使用tap dev tun #路徑前面加keys,全路徑爲/etc/open***/keys/ca.crt #Open***使用的ROOT CA,使用build-ca生成的,用於驗證客戶是證書是否合法 ca keys/ca.crt #Server使用的證書文件 cert keys/server.crt #Server使用的證書對應的key,注意文件的權限,防止被盜 key keys/server.key # This file should be kept secret dh keys/dh2048.pem #註銷用戶須要增長 #crl-verify /usr/share/easy-rsa/2.0/keys/crl.pem #默認虛擬局域網網段,不要和實際的局域網衝突便可 server 10.8.0.0 255.255.255.0 #用於記錄某個Client得到的IP地址,相似於dhcpd.lease文件, #防止open***從新啓動後「忘記」Client曾經使用過的IP地址 ifconfig-pool-persist ipp.txt #經過*** Server往Client push路由,client經過pull指令得到Server push的全部選項並應用 #10.0.0.0/8是我這臺***服務器所在的內網的網段,讀者應該根據自身實際狀況進行修改 push "route 10.0.0.0 255.0.0.0" #配置客戶端dns push "dhcp-option DNS 114.114.114.114" push "dhcp-option DNS 8.8.4.4" #可讓客戶端之間相互訪問直接經過open***程序轉發,根據須要設置 #不用發送到tun或者tap設備後從新轉發,優化Client to Client的訪問效率 client-to-client #若是客戶端都使用相同的證書和密鑰鏈接***,必定要打開這個選項,不然每一個證書只容許一我的鏈接***,建議一人一個證書。 duplicate-cn #定義最大鏈接數 max-clients 10 #NAT後面使用***,若是***長時間不通訊,NAT Session可能會失效, #致使***鏈接丟失,爲防止之類事情的發生,keepalive提供一個相似於ping的機制, #下面表示每10秒經過***的Control通道ping對方,若是連續120秒沒法ping通, #認爲鏈接丟失,並從新啓動***,從新鏈接 #(對於mode server模式下的open***不會從新鏈接)。 keepalive 10 120 tls-auth keys/ta.key 0 # This file is secret #對數據進行壓縮,注意Server和Client一致 comp-lzo #經過keepalive檢測超時後,從新啓動***,不從新讀取keys,保留第一次使用的keys persist-key #經過keepalive檢測超時後,從新啓動***,一直保持tun或者tap設備是linkup的, #不然網絡鏈接會先linkdown而後linkup persist-tun #Open***的狀態日誌,默認爲/etc/open***/open***-status.log status open***-status.log #Open***的運行日誌,默認爲/etc/open***/open***.log,和log一致,每次從新啓動open***後保留原有的log信息,新信息追加到文件最後 log-append /var/log/open***/open***.log #至關於debug level verb 3
配置內核和防火牆
開啓路由轉發功能
$ sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf $ sysctl -p
配置防火牆
$ iptables -I INPUT -p tcp --dport 1194 -m comment --comment "open***" -j ACCEPT $ iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE $ service iptables save
複製一份client.conf模板命名爲client.o***
$ cp /usr/share/doc/open***-2.3.9/sample/sample-config-files/client.conf client.o***
編輯client.o***
$ vim client.o*** client dev tun #改成tcp proto tcp #Open***服務器的外網IP和端口 remote xxx.xxx.xxx.xxx 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt #client1的證書 cert client1.crt #client1的密鑰 key client1.key ns-cert-type server #去掉前面的註釋 tls-auth ta.key 1 comp-lzo verb 3
安裝客戶端
$ yum -y install open*** #EPEL源
配置客戶端
將Open***服務器上的client.o***
、ca.crt
、client1.crt
、client1.key
、ta.key
上傳到Linux客戶端/etc/open***/keys/
文件夾
鏈接Open***
$ open*** --daemon --config /etc/open***/keys/client.o***
下載並安裝客戶端
Open***版本:Open*** 2.3.3 Windows 64位
Open*** Windows 32位安裝文件: https://swupdate.open***.org/community/releases/open***-install-2.3.10-I601-i686.exe
Open*** Windows 64位安裝文件: https://swupdate.open***.org/community/releases/open***-install-2.3.10-I601-x86_64.exe
配置客戶端
將Open***服務器上的client.o***
、ca.crt
、client1.crt
、client1.key
、ta.key
上傳到Windows客戶端安裝目錄下的config文件夾(C:\Program Files\Open***\config
)
啓動Open*** GUI
在電腦右下角的open***圖標上右擊,選擇」Connect」。正常狀況下應該可以鏈接成功,分配正常的IP。
Tunnelblick: https://tunnelblick.net/
Open*** Connect: https://play.google.com/store/apps/details?id=net.open***.open***