在外地想連回自己家裡的服務來工作向來有難處,經過幾天的資料搜尋 & 整理,以及思考下決定採用SSL VPN的方式來建造VPN連線。

  只是比較不幸的是,安裝完畢之後Server & Client都連線正常,伺服器重開機之後就一切都變了,偶的小企鵝又開始跟偶裝不熟了……@@

 

環境如下──

ServerLinux Fedora 9(雙網卡)

ClientWindows 7 & Windows XP

 

 

安裝與設定部份──

1. Server端步驟如下--

 a. 須先確認相關套件是否齊全:openvpn、lzo、lzo-devel、openssl、openssl-devel

  i. 注意:FC 9缺少lzo-devel的套件

  ii.若有缺少的部份可利用指令「yum」來下載安裝

 b. 將文件Copy到/etc/openvpn底下,路徑--

  i. 文件路徑:/usr/share/doc/openvpn-XXX/(路徑隨版本不同而有所更動)

  ii. 憑證路徑:/usr/share/openvpn/easy-ras/2.0/

 c. 自訂vars的資料--

  i. key的長度安全性可改為2048(安全性高)

  ii. CA的憑證天數請自訂(以天數計算)

  iii. 其他資料須自訂

 export KEY_COUNTRY="TW"

   export KEY_PROVINCE="Taiwan"

   export KEY_CITY="Tainai"

   export KEY_ORG="自行設定"

   export KEY_EMAIL="自行設定"

 d. 執行vars,並建立Root CA

  i. 指令:Source ./vars

  ii. 指令:./clean-all(只使用第一次,因為它會清空所有key

  iii. 指令:./build-ca

 e. 建立server憑證,指令:./build-key-server server(自訂)

 f. 建立user憑證

  i. 指令:./build-key client(名稱自訂)

  ii. 指令:./pkitool client(可自動建立憑證工具)

   1. 如果要一次製作多個client憑證,可下以下指令

    for (( i=1; i<=9; i=i+1 ));do ./pkitool user$i;done

 g. 建立D-H密鑰,指令:./build-dh(安全性愈高製作時間愈久)

 h. 修改設定檔,Copy server.conf到/etc/openvpn/底下,並建立ta.key,防止Dos 及 UDP port flooding 攻擊

   i. Server.conf設定

     port 1194

     proto tcp(建議採用)

     dev tap

     ca ca.crt

     cert server.crt

     key server.key

     dh dh2048.pem

     server 10.10.0.0 255.255.255.0(此為VPN使用網段,勿與內部網段相衝突)

     tls-auth ta.key 0

     comp-lzo

     persist-key

     persist-tun

     status openvpn-status.log

     log openvpn.log

     verb 3

   ii. 產生ta.key,指令:openvpn --genkey --secret ta.key

   iii. Key File的檔案位置設定可能會導致系統內建啟動的指令失效(因權限問題,無法讀取key file,可至/var/log/messages查看啟動失敗的原因)

   iv. 如果無法啟動成功,可利用下列指令來查看啟動的流程

     1. 指令:openvpn --config server.conf

     2. 有可能此指令可以啟動成功,但系統內建的啟動指令卻是失效的狀況

     3. 將key file(5個)和設定檔放在一起的話,則內建的啟動指令即可生效

      a. ca.crt

      b. ta.key

      c. dh2048.pem

      d. server.key

      e. server.crt

 i. 啟動成功的話,可下達以下指令來查看狀況--

  i. 指令:ifconfig,來查看VPN的網卡連線(tun or tap)

  ii. 指令:netstat -tulnp(可查看port 1194是否有傾聽)

 j. 設定防火牆(看個人需求)

  i. 有多個網卡務必啟用轉址功能:echo "1" > /proc/sys/net/ipv4/ip_forward

  ii. 讓vpn的虛擬網卡在server開放input/output

   1. iptables -A INPUT -i tun+ -j ACCEPT

   2. iptables -A OUTPUT -o tun+ -j ACCEPT

  iii. 開放server端的vpn與實體網路進出FORWARD

   1. iptables -A FORWARD -i eth0 -o tun+ -j ACCEPT

   2. iptables -A FORWARD -i tun+ -o eth0 -j ACCEPT

  iv. OPENVPN有內訂的firewall檔案,可copy至/etc/openvpn/下修改後使用

2. client端步驟如下--

  a. 下載client端使用的vpn連線軟體:http://openvpn.net/index.php/open-source/downloads.html

  b. 將設定檔Copy至c:\program\openvpn\config\裡(副檔名是ovpn)

   i. 設定與server端的設定幾乎相同

   ii. 填寫連線的IP或網址:remote XX.XX.XX.XX / 網址

   iii. 此引數須正確:tls-auth ta.key 1

   iiii.此設定可有可無:dev-node vpn(名稱自訂)

    V.Copy ca.crt ta.key client.crt client.key client.csr至此

  c. 軟體安裝成功後會在右下角的地方出現連線軟體,按右鍵選擇「connect」即會開始連線。

3. 注意事項:

  a. 第一次啟動openvpn不成功的話,可先利用openvpn --config的指令來嘗試啟動,假如啟動成功的話,後續再利內建的啟動指令應該就沒有問題了。

  b. 若要查看openvpn啟動的過程,可至/var/log/messages來查詢log。

  c. 無法正確啟動OPENVPN Server(例如載入憑證失敗或權限不足的問題),有可能是SELinux所造成,可關閉SELinux(但不建議,畢竟FC 9以上的SELinux有其相當的地位,隨意關閉會造成不當的後果)。

  d. 假如要開機即自動啟動的話,可下「setup」指令,選擇服務「openvpn」,則開機時會自動啟用openvpn服務。

  e. 如果VPN連線會時好時壞的話建議採用TCP連線

   i. proto tcp

  f. 如果要讓client連上後都走VPN線路的話,Server端設定檔開放此行即可

   i. push "redirect-gateway"

  g. 假如是雙網卡,且client一直無法取得IP的話情況,大部份是因為防火牆以及NAT的設定方式有問題,請確認設定務必正確。

  h. 多多查看Server & client的log,可以幫助釐清問題。

  i. 如是要利用「帳號 / 密碼」登入VPN的話,由於OpenVPN跟偶裝不熟,所以不會再做測試…@"@

  j. 官網連結:http://openvpn.net/

 

以下為參考網頁──

http://acman.bluenest.net/wordpress/archives/138

http://neo2124.pixnet.net/blog/post/34135317

http://blog.77run.com/OpenVPN-client-ovpn/

http://j796160836.pixnet.net/blog/post/25721059

 

碎碎唸:其實我本來想寫sharepoint 2010的,可是資料飛了~~~~可能要等我記得起來才有辦法寫吧......|||囧

舞 2011/07/15

arrow
arrow
    文章標籤
    openvpn;linux;Openvpn設定;
    全站熱搜

    舞暉羅 發表在 痞客邦 留言(6) 人氣()