openvpn 服務器和客戶端搭建和配置
1, 搭建環境:
電腦A : win7 64bit, 作為openvpn server
網上下載openvpn安裝包,直接安裝。
網口1, 有線網絡,可以訪問外網
網口2 ,無線網絡,只有局域網,沒有外網,和客戶端基於這個通信
電腦B : ubuntu 12.04 64bit , 作為openvpn client
從git下載最新的openvpn代碼,編譯安裝
網口1, 無線網絡,無外網。
2, 搭建服務器
2.1 參考網上的文章,通過在命令行創建 各個證書和私鑰。下面的名字不是固定,後面在客戶端和服務器的配置文件上都會用到。
文件名 | 需要者 Needed By | 說明 Purpose | 秘密 Secret |
ca.crt | 服務端和所有客戶端 server + all clients | 根證書 Root CA certificate | NO |
ca.key | 簽發私鑰的機器 key signing machine only | 根私鑰 Root CA key | YES |
dh{n}.pem | 服務器 server only | Diffie Hellman parameters | NO |
server.crt | 服務器 server only | 服務器證書 Server Certificate | NO |
server.key | 服務器 server only | 服務器私鑰 Server Key | YES |
client1.crt | client1 only | Clinet1的證書 Client1 Certificate | NO |
client1.key | client1 only | Clinet1的私鑰 Client1 Key | YES |
2.2 編輯服務器的配置文件server.ovpn:
port 1194 # 服務器的端口
proto udp #使用的協議
dev tap #創建的隧道類型,tap是2層協議, tun是3層協議,如果要做internet轉發需要用tap,原因還沒理解
ca ca.crt #依據上面生成的證書
cert server.crt
key server.key
dh dh1024.pem
server 192.168.55.0 255.255.255.0 #服務器和客戶端配置的虛擬網段
ifconfig-pool-persist ipp.txt #服務器給客戶端分配ip後,將ip保存到ipp.txt, 下次分配ip還是用這個
#tls-auth ta.key 0 # 0: 服務端, 1:客戶端 , 開啟TLS
keepalive 10 120 # 保活心跳時間,和超時時間
comp-lzo #開啟vpn 連接壓縮
client-to-client #允許客戶端和客戶端連接
persist-key
persist-tun #持久或選項可以盡量避免訪問在重啟時由於用戶權限降低而無法訪問某些資源
verb 3 #日誌文件等級
push "route 0.0.0.0 0.0.0.0" #向client推送路由,網關,dns信息,否則client端可能因為首選路由,網關,dns不對導致無法訪問服務器或網絡
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 221.5.88.88"
2.3 啟動服務器後,查看服務器的狀態串口,確認連接狀態,以及有沒有正確分配到虛擬網絡的ip
2.4 配置服務器端的nat,否則無法訪問外部網絡,只能訪問內網。
配置方法: 網絡和共享中心 -》 更新適配器設置, 找到能正常連接外網的連接,右鍵屬性查看 共享頁面裏面選中允許其他網絡用戶通過此計算機的internet 連接來連接,並在下面的裏面裏面選中生成的虛擬網絡接口
3, 搭建客戶端
3,1 將客戶端需要的證書文件拷貝到一個配置文件目錄
3,2 編輯client.conf文件, 基本配置和server一樣,
client # 說名是客戶端配置
proto udp
dev tap
remote 192.168.11.128 1194 #服務器的地址和端口
resolv-retry infinite #一直重連
nobind #不綁定指定端口
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
#tls-auth ta.key 1
comp-lzo
verb 3
#up ./home.up
script-security 2 #配置腳本執行權限
up update-resolv-conf.sh #配置up/down的時候執行的腳本,這個腳本可以在git上下載,但是腳本裏面的resolvconf命令的參數不對,需要簡單修改。
down update-resolv-conf.sh
4, 註意事項
4.1 配置文件裏面的設備要寫成tap, 否則和服務器上的內網都無法通信, 只能點對點通信
4.2 我的linux和window 是用了一個wifi路由器來連到同一個網絡的,(vpn就是基於這個網絡來搭建的)需要註意選用的路由器,有的路由器如果沒有連接外網,不會將一些數據包轉發,導致連接外網一直有問題
4.3 配置文件裏面要執行的腳本一定要帶 #!/bin/bash 的頭部,否則會無法執行
4.4 多網口的服務器,和客戶端通信的網絡不能設置網關--這個可能只針對我的環境
4.5 服務器要配置那些push命令,否則客戶端獲取到ip後,但是你的默認路由什麽的還是不對,無法通信
首次寫文章,哪裏不好請指正。
openvpn 服務器和客戶端搭建和配置