在外地想連回自己家裡的服務來工作向來有難處,經過幾天的資料搜尋 & 整理,以及思考下決定採用SSL VPN的方式來建造VPN連線。
只是比較不幸的是,安裝完畢之後Server & Client都連線正常,伺服器重開機之後就一切都變了,偶的小企鵝又開始跟偶裝不熟了……@@
環境如下──
Server:Linux Fedora 9(雙網卡)
Client:Windows 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
留言列表