【轉】將公司內網與雲服務器內網打通


現在越來越多的互聯網公司選擇和使用雲服務商的產品,方便便捷的同時也給運維工作增加了不小的挑戰。辦公網和雲服務兩個局域網(or任意兩個不同局域網),相互隔離。但是在日常運維、研發過程中,需要在辦公網訪問雲服務網絡。如果都通過公網ip繞,既不方便,也不安全,但是拉專線到機房成本又非常高,這里我給大家推薦通過現有資源(雲服務器)來實現這個目標。

 

這里有3種方案,一種是通過OpenVPN,一種是IPsecVPN,這兩種方法都比較安全,這里不在贅述孰優孰劣。如果公司是固定公網IP的話其實也可以通過建立GRE隧道來實現,但是可能大部分公司都不太滿足要求。


OpenVPN 
簡述 

OpenVPN 是一個高級的開源 VPN 解決方案,由 “OpenVPN technologies” 支持,並且已經成為開源網絡領域里的事實標准。OpenVPN 使用成熟的 SSL/TLS 加密協議。


架構 
如何將公司內網與雲服務器內網打通
OpenVPN架構圖 
OpenVPN服務器配置 

系統版本 Centos 6.5,配置要求不限。


安裝VPN服務 

我這邊用yum安裝,當然你也可以自己編譯安裝(從這個頁面下載:http://openvpn.net/index.php/download.html)


# yum install -y openvpn easy-rsa 
初始化VPN服務端 
復制配置文件 
# cp /usr/share/doc/openvpn-2.3.14/sample/sample-config-files/server.conf /etc/openvpn/ 
# cp -r /usr/share/easy-rsa/2.0/* /etc/openvpn/ 
注:openvpn-2.3.14需要改為你安裝的OpenVPN版本 
修改配置文件並修改權限 
# cd /etc/openvpn/ 
# vi vars 
將 "export KEY_SIZE=” 這行,根據情況把1024改成2048或者4096 
# chmod +x vars 
做ssl配置文件軟鏈 
ln -s openssl-1.0.0.cnf openssl.cnf 
證書配置 
生成證書 
# source ./vars 
注意:如果執行 ./clean-all, 會清除/etc/openvpn/keys下所有key文件. 
清除舊key文件 
# ./clean-all 
生成服務端CA證書 
# ./build-ca 
命令行提示內容可以根據具體情況填寫,也可以不填寫,一路回車. 
生成服務器證書 
# ./build-key-server openvpn.example.com 
生成服務器端密鑰證書, 后面這個openvpn.example.com就是服務器名,可以自定義. 

生成DH驗證文件 
# ./build-dh 
生成diffie hellman參數,用於增強openvpn安全性(生成需要漫長等待),讓服務器飛一會。 
生成客戶端Key證書 
# ./build-key client1 
# ./build-key client2 
# ./build-key client3 
(名字任意,建議寫成你要發給的人的姓名,方便管理) 
注:這里與生成服務端證書配置類似,中間一步提示輸入服務端密碼,其他按照提示填寫或一路回車即可。 
生成ta.key 文件 
# openvpn --genkey --secret /etc/openvpn/keys/ta.key 
修改配置文件 
# vi /etc/openvpn/server.conf 
# 設置監聽IP,默認是監聽所有IP 
;local a.b.c.d 
# 設置監聽端口,必須要對應的在防火牆里面打開 
port 1194 
# 設置用TCP還是UDP協議? 
;proto tcp 
proto udp 
# 設置創建tun的路由IP通道,還是創建tap的以太網通道,由於路由IP容易控制,所以推薦使用tunnel; 
# 但如果如IPX等必須使用第二層才能通過的通訊,則可以用tap方式,tap也就是以太網橋接 
;dev tap 
dev tun 
# 這里是重點,必須指定SSL/TLS root certificate (ca), 
# certificate(cert), and private key (key) 
# ca文件是服務端和客戶端都必須使用的,但不需要ca.key 
# 服務端和客戶端指定各自的.crt和.key 
# 請注意路徑,可以使用以配置文件開始為根的相對路徑, 
# 也可以使用絕對路徑 
# 請小心存放.key密鑰文件 
ca keys/ca.crt 
cert keys/openvpn.example.com.crt 
key keys/openvpn.example.com.key 
# 指定Diffie hellman parameters. 
(默認是2048,如果生成ca的時候修改過dh參數“export KEY_SIZE”則改為對應的數字) 
dh keys/dh2048.pem 
# 配置VPN使用的網段,OpenVPN會自動提供基於該網段的DHCP服務,但不能和任何一方的局域網段重復,保證唯一 
server 10.20.0.0 255.255.255.0 
# 維持一個客戶端和virtual IP的對應表,以方便客戶端重新連接可以獲得同樣的IP 
ifconfig-pool-persist ipp.txt 
# 為客戶端創建對應的路由,以另其通達公司網內部服務器 
# 但記住,公司網內部服務器也需要有可用路由返回到客戶端 
;push "route 192.168.20.0 255.255.255.0" 
push "route 10.X.0.0 255.255.0.0" (X按照機房網段修改) 
# 若客戶端希望所有的流量都通過VPN傳輸,則可以使用該語句 
# 其會自動改變客戶端的網關為VPN服務器,推薦關閉 
# 一旦設置,請小心服務端的DHCP設置問題 
# push "redirect-gateway def1 bypass-dhcp" 
# 用OpenVPN的DHCP功能為客戶端提供指定的DNS、WINS等 
#push "dhcp-option DNS 208.67.222.222" 
#push "dhcp-option DNS 208.67.220.220" 
# 默認客戶端之間是不能直接通訊的,除非把下面的語句注釋掉 
client-to-client 
# 下面是一些對安全性增強的措施 
# For extra security beyond that provided by SSL/TLS, create an "HMAC firewall" 
# to help block DoS attacks and UDP port flooding. 

# Generate with: 
# openvpn --genkey --secret ta.key 

# The server and each client must have a copy of this key. 
# The second parameter should be 0 on the server and 1 on the clients. 
# tls-auth ta.key 0 # This file is secret 
(這句要注釋掉) 
# 使用lzo壓縮的通訊,服務端和客戶端都必須配置 
comp-lzo 
# 輸出短日志,每分鍾刷新一次,以顯示當前的客戶端 
status /var/log/openvpn/openvpn-status.log 
# 缺省日志會記錄在系統日志中,但也可以導向到其他地方 
# 建議調試的使用先不要設置,調試完成后再定義 
log /var/log/openvpn/openvpn.log 
log-append /var/log/openvpn/openvpn.log 
# 設置日志的級別 

# 0 is silent, except for fatal errors 
# 4 is reasonable for general usage 
# 5 and 6 can help to debug connection problems 
# 9 is extremely verbose 
verb 3 
創建日志目錄 
# mkdir -p /var/log/openvpn/ 
啟動OpenVPN服務 
啟動服務 
# service openvpn start 

如果遭遇啟動失敗的情況,可以在配置文件中加上一行log-append openvpn.log
再嘗試啟動,然后到/var/log/openvpn/檢查openvpn.log文件來查看錯誤發生原因。


設置開機自啟動 
# chkconfig openvpn on 
開啟路由轉發功能 
+ 開啟路由轉發功能 
# vim /etc/sysctl.conf 
找到net.ipv4.ip_forward 把0改成1 
# sysctl -p 

+設置IPtables


做DNAT,保障數據可以正常到達同內網其他主機 
# iptables -t nat -A POSTROUTING -s X.X.0.0/24 -o eth0 -j MASQUERADE 
(X按照機房網段修改) 
# service iptables save 
公司服務器配置 
安裝客戶端 
# yum install openvpn -y 
將服務器端生成的key(ca.crt,client.crt,client.key,ta.key)下載到 /etc/openvpn/config 
# cd /etc/openvpn/config 
# vi client.ovpn 
client 
dev tun 
proto udp 
remote xxx.xxx.xxx.xxx 1194 
ca ca.crt 
cert xxx.crt 
key xxx.key 
#tls-auth ta.key 0 (這句要注釋掉) 
comp-lzo 
user nobody 
group nobody 
persist-key 
persist-tun 
啟動服務 
openvpn --daemon --config client.ovpn 

這個時候這台服務器已經和雲環境所有的服務器內網打通了~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM