OpvnVPN 中文全名:虛擬專用網絡。是一種利用公網設施建設私有專線網絡技術。對於一些大企業而言,往往在多個地區,多個分支機構,這些機構和總部之間的連接共享數據需要使用專線,如果去電信部門租用相關業務費用昂貴。
openvpn是基於GPL協議開源的vpn實現,openvpn可以使用密鑰,證書或賬戶進行身份驗證。我們采用證書驗證身份的方式來講解案例,openvpn使用openssl庫進行加密與證書的管理。open可以使用tcp和udp建立數據連接。軟件可以在linux,mac os ,windos下運行,是企業復雜網絡環境一個完美解決方案。
openvpn安裝
老規矩,安裝前先檢查依賴包。centos官方網站上提供了YUM源中所需的軟件,直接通過yum方式安裝,對於openvpn主軟件包,我們可以去openvpn的官方下載(官方網站:www.openvpn.net 國內可能無法直接訪問到openvpn的官方網站,我們可以通過其他方式下載 比如:跳牆)本案例中采用證書方式進行驗證,easy-rsa軟件包的作用是提供一系列的腳本,用於生成相關的密鑰和文件,安裝該軟件需要將腳本與目錄復制到openvpn軟件路徑中。
[root@vpnserver ~]# yum -y install lzo lzo-devel openssl openssl-devel gcc pam-devel
[root@vpnserver ~]# tar -xzf openvpn-2.3.1.tar.gz -c /usr/src
[root@vpnserver ~]# ./configure - -prefix=/usr/local/openvpn
[root@vpnserver ~]# make && make install
[root@vpnserver ~]# rpm -r /usr/share/doc/easy-rsa/ /usr/local/openvpn/
修改vars文件,該文件保存生成證書所需的默認信息參數,比如公司名,email等。
[root@vpnserver ~]# vim /usr/local/openvpn/easy-rsa/vars
..............
export KEY_COUNTRY="CN" #國家名稱
export KEY_PROVINCE="guangdong" #省份
export KEY_CITY="meizhou" #城市
export KET_ORG="aisky.cc" #組織名稱
export KEY_EMAIL="[email protected]" #郵箱
export KEY_CN="vpnserver.aisky.cc" #備注名稱
export KEY_NAME="server" #備注字串
export KEY_OU="BLOG" #部門名稱
....................
[root@vpnserver ~]# source ./vars #執行該腳本,讀取信的信息參數
[root@vpnserver ~]# ./clean-all #清空現有的所有證書和密鑰
[root@vpnserver ~]# ./build-ca #創建新的ca證書
............
這裡用.......代替創建ca證書時輸出的信息,創建ca證書時會把國家,地區等信息寫入,如果不需要修改直接按回車鍵就可以。
build-key-server腳本用於創建vpn的私密文件,腳本會提示是否使用ca對密鑰進行簽名生成對應的證書,使用vpnserver.key
腳本生成私鑰文件,vpnserver.csr生成證書請求文件 vpnserver.crt生成證書文件,除了創建服務器所需的密鑰外,還需要使用同樣的命令為客戶端生成密鑰和證書。
[root@vpnserver ~]# ./build-key-server vpnserver
..........
..........
[root@vpnserver ~]# ./build-dh #創建Diff Hellman參數。
我們把創建好的密鑰和這些數據拷貝到openvpn的軟件根目錄下,並把openvpn軟件提供的主配置文件模板復制到/usr/local/openvpn目錄下,修改文件名為server.conf
[root@vpnserver ~]# cd /usr/local/openvpn/easy-ra-sa/keys
[root@vpnserver ~]# cp ./{ca.crt,vpnserver.crt,vpnserver.key,dh****.pem} /usr/local/openvpn/
[root@vpnserver ~]# cp /usr/src/openvpn-2.3.1/sample-config-file/ server.conf /usr/local/openvpn
[root@vpnserver ~]# vim /usr/local/openvpn/server.conf
.....
port 1194 #設置端口
proto udp #設置連接協議
dev tun #創建模擬三層VPN
ca /usr/local/openvpn/ca.crt #調用ca證書
cert /usr/local/openvpn/vonserver.crt #調用服務器證書
key /usr/local/openvpn/vpnserver.key #調用服務器私鑰文件
dh /usr/local/openvpn/dh****.pem #調用DIFFIE HELLMAN文件
server 10.8.0.0 255.255.255.0 # 設置客戶端IP獲取范圍
ifconfig-pool-persist ipp.txt #設置客戶端虛擬IP記錄
push "route 124.126.150.211 " #設置客戶端相關網段
push "dhcp-option DNS 202.106.0.20" #設置客戶端獲取DNS信息
修改完後配置文件,我們使用openvpn啟動服務器進程 -- config選項使用指定的配置文件啟動服務 --daemon選線代表作為守護進程啟動服務。
開啟路由轉發功能
[root@vpnserver ~]# /usr/local/openvpn/sbin/openvpn - -config /user/local/openvpn/server.conf --daemon
[root@vpnserver ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@vpnserver ~]# sysctl -p
[root@vpnserver ~]# iptables -i input -p udp --dport 1194 -jACCEPT
[root@vpnserver ~]# iptable -t nat -i POSTROUTING -s 192.168.0.0/24 -j snat --to--source 124.126.150.211
[root@vpnserver ~]# service iptable save
到此openvpn服務端安裝告一段落。