1)報FlushIpNetTable failed on interface錯誤
應對:以管理員身份運行OpenV-P-N
2)報Warning: route gateway is not reachable on any active network adapters錯誤
應對:以管理員身份運行cmd,執行:
netsh int ip reset logfile.txt
netsh winsock reset catalog
而後重啓機器
3)報ROUTE: route addition failed using CreateIpForwardEntry: 至少有一個參數不正確
應對:配置文件中增長:
route-method exe
route-delay 2node
Server使用的配置文件server.conflinux
#申明本機使用的IP地址,也能夠不說明 ;local a.b.c.d #申明使用的端口,默認1194 port 1194 #申明使用的協議,默認使用UDP,若是使用HTTP proxy,必須使用TCP協議 ;proto tcp proto udp #申明使用的設備可選tap和tun,tap是二層設備,支持鏈路層協議。 #tun是ip層的點對點協議,限制稍微多一些,本人習慣使用TAP設備 dev tap ;dev tun #OpenV-P-N使用的ROOT CA,使用build-ca生成的,用於驗證客戶是證書是否合法 ca ca.crt #Server使用的證書文件 cert server.crt #Server使用的證書對應的key,注意文件的權限,防止被盜 key server.key # This file should be kept secret #CRL文件的申明,被吊銷的證書鏈,這些證書將沒法登陸 crl-verify v-p-n-crl.pem #上面提到的生成的Diffie-Hellman文件 dh dh1024.pem #這是一條命令的合集,若是你是OpenV-P-N的老用戶,就知道這條命令的來由 #這條命令等效於: # mode server #OpenV-P-N工做在Server模式,能夠支持多client同時動態接入 # tls-server #使用TLS加密傳輸,本端爲Server,Client端爲tls-client # # if dev tun: #若是使用tun設備,等效於如下配置 # ifconfig 10.8.0.1 10.8.0.2 #設置本地tun設備的地址 # ifconfig-pool 10.8.0.4 10.8.0.251 #說明OpenV-P-N使用的地址池(用於分配給客戶),分別是起始地址、結束地址 # route 10.8.0.0 255.255.255.0 #增長一條靜態路由,省略下一跳地址,下一跳爲對端地址,這裏是: 10.8.0.2 # if client-to-client: #若是使用client-to-client這個選項 # push 「route 10.8.0.0 255.255.255.0″ #把這條路由發送給客戶端,客戶鏈接成功後自動加入路由表,省略了下一跳地址: 10.8.0.1 # else # push 「route 10.8.0.1″ #不然發送本條路由,這是一個主機路由,省略了子網掩碼和下一跳地址,分別爲: 255.255.255.255 10.8.0.1 # # if dev tap: #若是使用tap設備,則等效於如下命令 # ifconfig 10.8.0.1 255.255.255.0 #配置tap設備的地址 # ifconfig-pool 10.8.0.2 10.8.0.254 255.255.255.0 #客戶端使用的地址池,分別是起始地址、結束地址、子網掩碼 # push 「route-gateway 10.8.0.1″ #把環境變量route-gateway傳遞給客戶機 # server 10.8.0.0 255.255.255.0 #等效於以上命令 #用於記錄某個Client得到的IP地址,相似於dhcpd.lease文件, #防止OpenV-P-N從新啓動後「忘記」Client曾經使用過的IP地址 ifconfig-pool-persist ipp.txt #Bridge狀態下相似DHCPD的配置,爲客戶分配地址,因爲這裏工做在路由模式,因此不使用 ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 #經過OpenV-P-N Server往Client push路由,client經過pull指令得到Server push的全部選項並應用 ;push 「route 192.168.10.0 255.255.255.0″ ;push 「route 192.168.20.0 255.255.255.0″ #OpenV-P-N啓動後,在OpenV-P-N Server上增長的路由,OpenV-P-N中止後自動刪除 ;route 10.9.0.0 255.255.255.252 #Run script or shell command cmd to validate client #virtual addresses or routes. 具體查看manual ;learn-address ./script #其餘的一些須要PUSH給Client的選項 # #使Client的默認網關指向OpenV-P-N,讓Client的全部Traffic都經過OpenV-P-N走 ;push 「redirect-gateway」 #DHCP的一些選項,具體查看Manual ;push 「dhcp-option DNS 10.8.0.1″ ;push 「dhcp-option WINS 10.8.0.1″ #若是可讓OpenV-P-N Client之間相互訪問直接經過OpenV-P-N程序轉發, #不用發送到tun或者tap設備後從新轉發,優化Client to Client的訪問效率 client-to-client #若是Client使用的CA的Common Name有重複了,或者說客戶都使用相同的CA #和keys鏈接OpenV-P-N,必定要打開這個選項,不然只容許一我的鏈接OpenV-P-N ;duplicate-cn #NAT後面使用OpenV-P-N,若是OpenV-P-N長時間不通訊,NAT Session可能會失效, #致使OpenV-P-N鏈接丟失,爲防止之類事情的發生,keepalive提供一個相似於ping的機制, #下面表示每10秒經過OpenV-P-N的Control通道ping對方,若是連續120秒沒法ping通, #認爲鏈接丟失,並從新啓動OpenV-P-N,從新鏈接 #(對於mode server模式下的OpenV-P-N不會從新鏈接)。 keepalive 10 120 #上面提到的HMAC防火牆,防止DOS攻擊,對於全部的控制信息,都使用HMAC signature, #沒有HMAC signature的控制信息不予處理,注意server端後面的數字確定使用0,client使用1 tls-auth ta.key 0 # This file is secret #對數據進行壓縮,注意Server和Client一致 comp-lzo #定義最大鏈接數 ;max-clients 100 #定義運行OpenV-P-N的用戶 user nobody group nobody #經過keepalive檢測超時後,從新啓動OpenV-P-N,不從新讀取keys,保留第一次使用的keys persist-key #經過keepalive檢測超時後,從新啓動OpenV-P-N,一直保持tun或者tap設備是linkup的, #不然網絡鏈接會先linkdown而後linkup persist-tun #按期把OpenV-P-Nn的一些狀態信息寫到文件中,以便本身寫程序計費或者進行其餘操做 status OpenV-P-N-status.log #記錄日誌,每次從新啓動OpenV-P-N後刪除原有的log信息 log /var/log/OpenV-P-N.log #和log一致,每次從新啓動OpenV-P-N後保留原有的log信息,新信息追加到文件最後 ;log-append OpenV-P-N.log #至關於debug level,具體查看manual verb 3
把server.conf文件保存到/etc/OpenV-P-N目錄中,並把使用easy-rsa下的腳本什成的key都複製到/etc/OpenV-P-N目錄下,命令以下:
# cd /etc/OpenV-P-N
# cp easy-rsa/keys/ca.crt .
# cp easy-rsa/keys/server.crt .
# cp easy-rsa/keys/server.key .
# cp easy-rsa/keys/dh1024.pem .
# cp easy-rsa/keys/ta.key .
# cp easy-rsa/keys/v-p-ncrl.pem .shell
建立OpenV-P-N啓動腳本,能夠在源代碼目錄中找到,在sample-scripts目錄下的open-v-p-n.init文件,將其複製到/etc/init.d/目錄中,更名爲OpenV-P-N
而後運行:
# chkconfig –add OpenV-P-N
# chkconfig OpenV-P-N on
當即啓動OpenV-P-N
# /etc/init.d/OpenV-P-N start服務器
接下來配置客戶端的配置文件client.conf:
Linux或Unix下使用擴展名爲.conf Windows下使用的是.ov-p-n,並把須要使用的keys複製到配置文件所在目錄ca.crt elm.crt elm.key ta.key網絡
# 申明咱們是一個client,配置從server端pull過來,如IP地址,路由信息之類「Server使用push指令push過來的」 client #指定接口的類型,嚴格和Server端一致 dev tap ;dev tun # Windows needs the TAP-Win32 adapter name # from the Network Connections panel # if you have more than one. On XP SP2, # you may need to disable the firewall # for the TAP adapter. ;dev-node MyTap # 使用的協議,與Server嚴格一致 ;proto tcp proto udp #設置Server的IP地址和端口,若是有多臺機器作負載均衡,能夠屢次出現remote關鍵字 remote 61.1.1.2 1194 ;remote my-server-2 1194 # 隨機選擇一個Server鏈接,不然按照順序從上到下依次鏈接 ;remote-random # 始終從新解析Server的IP地址(若是remote後面跟的是域名), # 保證Server IP地址是動態的使用DDNS動態更新DNS後,Client在自動從新鏈接時從新解析Server的IP地址 # 這樣無需人爲從新啓動,便可從新接入OpenV-P-N resolv-retry infinite # 在本機不邦定任何端口監聽incoming數據,Client無需此操做,除非一對一的OpenV-P-N有必要 nobind # 運行OpenV-P-N用戶的身份,舊版本在win下須要把這兩行註釋掉,新版本無需此操做 user nobody group nobody #在Client端增長路由,使得全部訪問內網的流量都通過OpenV-P-N出去 #固然也能夠在Server的配置文件裏頭設置,Server配置裏頭使用的命令是 # push 「route 192.168.0.0 255.255.255.0″ route 192.168.0.0 255.255.0.0 # 和Server配置上的功能同樣若是使用了chroot或者su功能,最好打開下面2個選項,防止從新啓動後找不到keys文件,或者nobody用戶沒有權限啓動tun設備 persist-key persist-tun # 若是你使用HTTP代理鏈接OpenV-P-N Server,把Proxy的IP地址和端口寫到下面 # 若是代理須要驗證,使用http-proxy server port [authfile] [auth-method] # 其中authfile是一個2行的文本文件,用戶名和密碼各佔一行,auth-method能夠省略,詳細信息查看Manual ;http-proxy-retry # retry on connection failures ;http-proxy [proxy server] [proxy port #] # 對於無線設備使用OpenV-P-N的配置,看看就明白了 # Wireless networks often produce a lot # of duplicate packets. Set this flag # to silence duplicate packet warnings. ;mute-replay-warnings # Root CA 文件的文件名,用於驗證Server CA證書合法性,經過easy-rsa/build-ca生成的ca.crt,和Server配置裏的ca.crt是同一個文件 ca ca.crt # easy-rsa/build-key生成的key pair文件,上面生成key部分中有提到,不一樣客戶使用不一樣的keys修改如下兩行配置並使用他們的keys便可。 cert elm.crt key elm.key # Server使用build-key-server腳本什成的,在x509 v3擴展中加入了ns-cert-type選項 # 防止OpenV-P-N client使用他們的keys + DNS hack欺騙OpenV-P-Nclient鏈接他們假冒的OpenV-P-NServer # 由於他們的CA裏沒有這個擴展 ns-cert-type server # 和Server配置裏一致,ta.key也一致,注意最後參數使用的是1 tls-auth ta.key 1 # 壓縮選項,和Server嚴格一致 comp-lzo # Set log file verbosity. verb 4
OpenV-P-N服務器添加下發路由項目等參數:app
高級選項中的內容: push "route 192.168.21.0 255.255.255.0";mute 10;comp-lzo; 負載均衡
內網客戶端若需和OpenV-P-N客戶端通信,須要手動添加路由。less
例如:在 /etc/sysconfig/static-routes 文件中增長以下內容:dom
any net 192.168.21.80/48 gw 192.168.21.6tcp
在線掩碼計算工具: http://tool.chinaz.com/Tools/subnetmask
在linux下設置永久路由的方法:
1.在/etc/rc.local裏添加
方法:
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.2.254
route add –net 180.200.0.0 netmask 255.255.0.0 gw 10.200.6.201 dev eth0 metric 1
route add:命令關鍵字,表示增長路由,若要刪除路由,則爲route del;
-host/-net:表示路由目標是主機仍是網段;
netmask:表示路由目標爲網段時纔會使用到,表示路由目標網段的子網掩碼;
gw:命令關鍵字,後面跟下一跳網關;
dev:命令關鍵字,後面跟具體設備名,表示路由是從該設備出去。
metric:爲路由指定所需越點數的整數值(範圍是 1 ~ 9999),它用來在路由表裏的多個路由中選擇與轉發包中的目標地址最爲匹配的路由。所選的路由具備最少的躍點數。躍點數可以反映躍點的數量、路徑的速度、路徑可靠性、路徑吞吐量以及管理屬性。
2.在/etc/sysconfig/network裏添加到末尾
方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev
3./etc/sysconfig/static-routes :
any net 192.168.3.0/24 gw 192.168.3.254
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129
若是在rc.local中添加路由會形成NFS(網絡文件系統,是FreeBSD支持的文件系統中的一種,它容許網絡中的計算機之間經過TCP/IP網絡共享資源)沒法自動掛載問題,因此使用static-routes的方法是最好的。不管重啓系統和service network restart 都會生效
如下是解決NFS問題的描述:
按照linux啓動的順序,rc.local裏面的內容是在linux全部服務都啓動完畢,最後才被執行的,也就是說,這裏面的內容是在netfs以後才被執行的,那也就是說在netfs啓動的時候,服務器上的靜態路由是沒有被添加的,因此netfs掛載不能成功。 並且,若是你重啓了網絡服務器,那麼路由就失效了,這個時候你不得不從新加載這個文件了。
static-routes文件又是什麼呢,這個是network腳本執行時調用的一個文件,這個文件的放置在/etc/sysconfig目錄下,在network腳本中的位置是:
# Add non interface-specific static-routes.
if [ -f /etc/sysconfig/static-routes ]; then
grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
/sbin/route add -$args
done
fi
從這段腳本能夠看到,這個就是添加靜態路由的方法,static-routes的寫法是
any net 192.168.0.0/16 gw 網關ip
這樣的話,在啓動network腳本的時候路由就自動添加上了,又由於network是在netfs前面啓動的,天然在掛載nfs的時候就正常了。
這樣看來,若是須要添加靜態路由,使用static-routes文件要比使用rc.local好,並且當改變了網絡配置,須要重啓network腳本的 時候,相應的靜態路由是能夠自動添加上的,但這時若是使用rc.local的話,在重啓network服務的時候,本來添加好的靜態路由就消失了。
=================== End