本文由秀依林楓提供友情贊助,首發于爛泥行天下
在上一篇文章《爛泥:Ubuntu 14.04搭建OpenVPN服務器》中,我們主要講解了openvpn的搭建與使用,這篇文章我們來詳細介紹下有關openvpn的相關配置文件。
openvpn的配置文件主要有三個:vars、server.conf、client.conf,下面我們對這三個配置文件進行一一的詳解。
一、vars配置文件
vars配置文件的主要內容如下:
cat vars |grep -vE "^#|^$"
KEY_DIR定義key生成的目錄。
KEY_SIZE定義生成私鑰的大小,一般為1024或2048,默認為2048位。這個就是我們在執行build-dh命令生成dh2048文件的依據。
CA_EXPIRE定義CA證書的有效期,默認是3650天,即10年。
KEY_EXPIRE定義密鑰的有效期,默認是3650天,即10年。
KEY_COUNTRY定義所在的國家。
KEY_PROVINCE定義所在的省份。
KEY_CITY定義所在的城市。
KEY_ORG定義所在的組織。
KEY_EMAIL定義郵箱地址。
KEY_OU定義所在的單位。
KEY_NAME定義openvpn服務器的名稱。
以上就是vars配置文件的全部內容,有關vars配置文件的使用,我們也可以系統的默認配置。
二、server.conf服務器端配置文件
服務器端配置文件server.conf,是這三個配置文件中最重要的一個,也是所有對openvpn客戶端推送的信息,都是通過這個文件進行配置的。
grep -vE "^#|^$" server.conf
;local a.b.c.d
定義openvpn監聽的ip地址,如果是服務器單網卡的也可以不注明,但是服務器是多網卡的建議注明。
port 1194
定義openvpn監聽的的端口,默認為1194端口。
proto tcp
;proto udp
定義openvpn使用的協議,默認使用UDP。如果是生產環境的話,建議使用TCP協議。
dev tun
;dev tap
定義openvpn運行時使用哪一種模式,openvpn有兩種運行模式一種是tap模式,一種是tun模式。
tap模式也就是橋接模式,通過軟件在系統中模擬出一個tap設備,該設備是一個二層設備,同時支持鏈路層協議。
tun模式也就是路由模式,通過軟件在系統中模擬出一個tun路由,tun是ip層的點對點協議。
具體使用哪一種模式,需要根據自己的業務進行定義。
ca ca.crt
定義openvpn使用的CA證書文件,該文件通過build-ca命令生成,CA證書主要用于驗證客戶證書的合法性。
cert vpnilanni.crt
定義openvpn服務器端使用的證書文件。
key vpnilanni.key
定義openvpn服務器端使用的秘鑰文件,該文件必須嚴格控制其安全性。
dh dh2048.pem
定義Diffie hellman文件。
server 10.8.0.0 255.255.255.0
定義openvpn在使用tun路由模式時,分配給client端分配的IP地址段。
ifconfig-pool-persist ipp.txt
定義客戶端和虛擬ip地址之間的關系。特別是在openvpn重啟時,再次連接的客戶端將依然被分配和斷開之前的IP地址。
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
定義openvpn在使用tap橋接模式時,分配給客戶端的IP地址段。
;push "route 192.168.10.0 255.255.255.0"
向客戶端推送的路由信息,假如客戶端的IP地址為10.8.0.2,要訪問192.168.10.0網段的話,使用這條命令就可以了。
;client-config-dir ccd
這條命令可以指定客戶端IP地址。
使用方法是在/etc/openvpn/創建ccd目錄,然后創建在ccd目錄下創建以客戶端命名的文件。比如要設置客戶端 ilanni為10.8.0.100這個IP地址,只要在 /etc/openvpn/ccd/ilanni文件中包含如下行即可:
ifconfig-push 10.8.0.200 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
這條命令可以重定向客戶端的網關,在進行FQ時會使用到。
;push "dhcp-option DNS 208.67.222.222"
向客戶端推送的DNS信息。
假如客戶端的IP地址為10.8.0.2,要訪問192.168.10.0網段的話,使用這條命令就可以了。如果有網段的話,可以多次出現push route關鍵字。同時還要配合iptables一起使用。
client-to-client
這條命令可以使客戶端之間能相互訪問,默認設置下客戶端間是不能相互訪問的。
duplicate-cn
定義openvpn一個證書在同一時刻是否允許多個客戶端接入,默認沒有啟用。
keepalive 10 120
定義活動連接保時期限
comp-lzo
啟用允許數據壓縮,客戶端配置文件也需要有這項。
;max-clients 100
定義最大客戶端并發連接數量
;user nobody
;group nogroup
定義openvpn運行時使用的用戶及用戶組。
persist-key
通過keepalive檢測超時后,重新啟動VPN,不重新讀取keys,保留第一次使用的keys。
persist-tun
通過keepalive檢測超時后,重新啟動VPN,一直保持tun或者tap設備是linkup的。否則網絡連接,會先linkdown然后再linkup。
status openvpn-status.log
把openvpn的一些狀態信息寫到文件中,比如客戶端獲得的IP地址。
log openvpn.log
記錄日志,每次重新啟動openvpn后刪除原有的log信息。也可以自定義log的位置。默認是在/etc/openvpn/目錄下。
;log-append openvpn.log
記錄日志,每次重新啟動openvpn后追加原有的log信息。
verb 3
設置日志記錄冗長級別。
;mute 20
重復日志記錄限額
以上就是openvpn服務器端server.conf配置文件的內容。
三、client.conf客戶端配置文件
openvpn客戶端的配置文件client.conf比較簡單,如下:
grep -vE "^#|^;|^$" client.ovpn
client
定義這是一個client,配置從server端pull拉取過來,如IP地址,路由信息之類,Server使用push指令推送過來。
dev tun
定義openvpn運行的模式,這個地方需要嚴格和Server端保持一致。
proto tcp
定義openvpn使用的協議,這個地方需要嚴格和Server端保持一致。
remote 192.168.1.8 1194
設置Server的IP地址和端口,這個地方需要嚴格和Server端保持一致。
如果有多臺機器做負載均衡,可以多次出現remote關鍵字。
;remote-random
隨機選擇一個Server連接,否則按照順序從上到下依次連接。該選項默認不啟用。
resolv-retry infinite
始終重新解析Server的IP地址(如果remote后面跟的是域名),保證Server IP地址是動態的使用DDNS動態更新DNS后,Client在自動重新連接時重新解析Server的IP地址。這樣無需人為重新啟動,即可重新接入VPN。
nobind
定義在本機不邦定任何端口監聽incoming數據。
persist-key
persist-tun
ca ca.crt
定義CA證書的文件名,用于驗證Server CA證書合法性,該文件一定要與服務器端ca.crt是同一個文件。
cert laptop.crt
定義客戶端的證書文件。
key laptop.key
定義客戶端的密鑰文件。
ns-cert-type server
Server使用build-key-server腳本生成的,在x509 v3擴展中加入了ns-cert-type選項。防止client使用他們的keys + DNS hack欺騙vpn client連接他們假冒的VPN Server,因為他們的CA里沒有這個擴展。
comp-lzo
啟用允許數據壓縮,這個地方需要嚴格和Server端保持一致。
verb 3
設置日志記錄冗長級別。
新聞熱點
疑難解答