Openswan企業實戰之ipsec vpn加速ERP系統
公司ERP系統是放在IDC機房,租用的別人的雲服務器,因雲服務器供應商的限制,不能直接拉電路專線,又因服務器數量不夠,remoteapp方案也放棄了,只能通過軟件VPN方案來解決問題,之前搭建了一個openvpn,使用route模式,但是用戶反饋使用效果並不理想,每次反饋ERP系統保存比較慢,其他操作沒有問題,想過各種辦法去優化Openvpn,比如去掉認證,使用靜態密鑰方式,都沒能解決,其真正的原因應該是openvpn是在用戶態,內部經過多次加密和解密過程,性能自然不是最佳;後來直接改成橋接模式,速度快了不少,但是使用的是跟雲服務器供應商服務網絡,雲服務商不接受這種模式,因此,最終選擇了openswan來解決這個問題,openswan的netkey又稱為26sec,其實現是在內核實現,主要負責控制管理SA及密鑰,同時處理數據包的加密和解密工作,因此其性能更優越;
1、 目標
在防火墻內部,通過兩臺Linux系統,搭建ipsec vpn,連通辦公室和IDC機房的網絡,並解決辦公室人員訪問IDC機房的金蝶ERP系統,所出現的保存慢的問題;
2、 網絡拓撲圖
3、 環境說明
軟件環境:centos 7.3 openswan 2.6.50
序號 | 名稱 | 內網IP | 外網IP | 備註 |
1 | IDC機房防火墻 | 10.99.0.254/24 | 固定IP(略) | 需要開放UDP4500/500端口 |
2 | IDC機房VPN服務器 | 10.99.0.16/24 | 需要開放UDP4500/500端口 | |
3 | 辦公室防火墻 | 192.168.1.1/24 | 動態IP (略) | |
4 | 辦公是VPN服務器 | 192.168.1.252/24 |
註:
l vpn服務器安裝了centos系統,全部都是在防火墻後面,對於openswan來說,其仍然是路由到防火墻,再通過防火墻的NAT去訪問外網的,因此,對於服務器來說,並不需要開啟iptables的NAT功能,但是Iptables功能需要開啟,並開放UDP 4500/500 端口(如果開啟iptables的NAT功能也可以,但是經過多層NAT,這樣會嚴重影響VPN的性能);
l openswan目前網上系統的資料比較少,對於百度的搜索信息要註意甄別,多思考,即使部署成功了,也要回去反復斟酌,配置是否是最優的,推薦可以查看源碼包下面的openswan/docs目錄下的說明,加深理解;
l 本文案例是,IDC機房擁有固定IP,辦公室是動態IP,因此,對於防火墻來說,只需要開啟IDC機房這邊的4500/500端口,辦公室這邊無需開放端口;
l 對於DPD功能,當隧道空閑的時候(建立,但是在dpddelay=N1之內沒有流量),一端或兩端發送了hello消息(R_U_THERE)和另一端回復確認信息(R_U_THERE_ACK),如果沒有收到響應,直至dpdtimeout=N2的時間,仍然沒有流量或者收到R_U_THERE_ACK,那麽會認為對端死亡,刪除SA並從路由表中刪除相關聯的路由;建議開啟此功能,並且兩邊同時開啟和保持數據一致,如果只是開啟一端,另一端便於以默認參數開啟,這點很重要,網絡上的資料有點不對; tunnel模式,建議dpdaction設置為hold;transport模式,dpdaction設置為clear;
4、 準備工作
禁用重定向
sysctl -a | egrep"ipv4.*(accept|send)_redirects" | awk -F "=" ‘{print$1"= 0"}‘ >> /etc/sysctl.conf
開啟路由轉發
Vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 0
sysctl –p #生效
配置iptables防火墻
vi /etc/sysconfig/iptables 增加如下內容,開放UDP 4500和500端口
-A INPUT -p udp -m state --state NEW -m udp --dport500 -j ACCEPT -A INPUT -p udp -m state --state NEW -m udp --dport4500 -j ACCEPT
註:以上配置都需要在兩臺VPN服務器上 進行操作;
最後,開放IDC機房的外部硬件防火墻的 UDP 4500/500端口(即目的端口映射)
5、 安裝
yum install bison flex xmlto perl-podlators tar –zxvf openswan-2.6.50.tar.gz cd openswan-2.6.50 make programs make install
註: 這裏使用openswan的netkey,centos7.3的內核是3.10,本身已經支持了nat-T功能
使用ipsec verify命令 驗證openswan的安裝是否Ok
紅色方框處,不要在意,開啟Ipsec服務之後,就會顯示OK
6、 配置
Openswan有兩個主要的配置文件:
/etc/ipsec.conf 主要配置文件,settings和connections,
/etc/ipsec.secrets主要用來保存RSA Keys和preshared secrets (PSKs)
Openswan支持許多不同的安全認證方式,包括RSA keys、pre-shared keys或x.509證書方式,通常推薦使用RSA Keys,安全性高;但是這裏選擇使用pre-shared keys,簡單而且性能高;
IDC機房
VPN服務器/etc/ipsec.conf配置如下:
version 2 #版本 config setup #命名為setup,Ipsec服務啟動直接加載 nat_traversal=yes #開啟NAT-T穿透 virtual_private=%v4:192.168.1.0/24,%v4:10.99.0.0/24 #指定哪些子網通過VPN,如果不允許,在%前面加上!;%v4 表示為ipv4 protostack=netkey #使用netkey interfaces="%defaultroute" #ipsec vpn使用的虛擬接口和實接口,格式是"virtual=physicalvirtual=physical ...",這裏設置為默認路由出去的接口 oe=off #此選項已經被忽略。它用於確定是否啟用機會加密; plutostderrlog=/var/log/pluto.log #指定日誌保存路徑 plutodebug=all #記錄多少調試輸出,默認是none,這裏便於設置為all,便於追蹤,調試OK,可以設置為none; conn idc-to-office #設置connection,並命名為idc-to-office type=tunnel #隧道模式,支持host-to-host,host-to-network和network-to-network;如果設置transport,表示為host-to-host傳輸模式; authby=secret #配置安全網關如何認證,默認是rsa,這裏使用共享密鑰 auto=start #start是表示connection隨Ipsec服務器啟動而自動連接;add不會隨ipsec服務啟動而啟動,需要ipsec auto up idc-to-office啟動connection; dpddelay=15 #每15秒鐘檢測一次,默認是30秒 dpdtimeout=60 #閑置超時時間,這個時間內沒有流量,沒有響應,就表示對等實體已經死亡,並刪除SA,默認120秒; dpdaction=hold #eroute進入hold,等待對方的return信息;tunnel模式,推薦設置為hold;transport模式,推薦設置為clear; pfs=no #無論設置為yes,還是no,都會啟用; ike=aes128-sha1;modp1024 #第一階段算法參數 ikelifetime=86400s #第一階段生存時間 keyexchange=ike phase2=esp phase2alg=aes128-sha1;modp1024 #指定第二階段的算法參數; salifetime=3600s #第二階段生存時間 aggrmode=no #一般模式,設置yes,就是野蠻模式; left=10.99.0.16 #本機服務器提供對外(通常是指Internet)服務的接口,網上大多說是公網IP,這個說法對於服務器是直接對接Internet,並作為內網的網關的時候,是對的;但是,對於本例,在防火墻內部,就是不對的,其IP仍然是私網地址,所以,這點很重要,要認真區分; [email protected] #設置身份ID,如果是域名,使用@指定;如果用IP,直接使用IP地址接口,不需要@符號; leftsubnet=10.99.0.0/24 #表示本地的子網網絡,如果有多個網段就有leftsubnets leftnexthop=%defaultroute #默認路由 right=%any #對端公網IP,無固定IP或不確定IP,設置為%any,這裏必須設置為公網IP,跟left有些不同; rightsubnet=192.168.1.0/24 #對端本地的子網網絡 rightnexthop=%defaultroute #默認路由 註: 通常理解,left 表示本地網絡,right表示對端網絡;
/etc/ipsec.secrets配置文件內容如下
%any %any : PSK "a14RbmJhq464" #第一個%any表示外網IP,第二個%any表示對端外網IP,如果只有一個VPN通道的話,這裏可以都設置為%any; 如果有多個VPN通道,需要指定IP地址,每一行代表一個;
辦公室網絡
/etc/ipsec.conf配置文件如下:
version 2 #版本 config setup nat_traversal=yes #開啟nat-t 穿透 virtual_private=%v4:192.168.1.0/24,%v4:10.99.0.0/24 # protostack=netkey interfaces="%defaultroute" oe=off plutostderrlog=/var/log/pluto.log plutodebug=all #調試完畢,改為none connidc-to-office type=tunnel authby=secret auto=start #註意跟前面IDC機房的配置比較區別,前面是add,這裏設置為start pfs=no keyexchange=ike phase2=esp ike=aes128-sha1;modp1024 ikelifetime=86400s phase2alg=aes128-sha1;modp1024 salifetime=3600s aggrmode=no dpddelay=15 dpdtimeout=60 dpdaction=hold right=211.154.139.8 #註意與IDC機房的配置比較 rightsubnet=10.99.0.0/24 #註意與IDC機房的配置比較 [email protected] #註意與IDC機房的配置比較 rightnexthop=%defaultroute #註意與IDC機房的配置比較 left=192.168.1.252 #註意與IDC機房的配置比較 leftsubnet=192.168.1.0/24 #註意與IDC機房的配置比較 #[email protected] leftnexthop=%defaultroute #註意與IDC機房的配置比較
/etc/ipsec.secrets配置文件內容如下:
%any %any : PSK "a14RbmJhq464" #註意密鑰要跟IDC機房的一致
7、 啟動服務
/etc/init.d/ipsec start #啟動ipsec服務,先啟動IDC機房服務器,後啟動辦公室這邊的服務器;
8、 檢測vpn的tunnel狀態
/etc/init.d/ipsec status #檢測ipsec tunnel是否建立起來
結果如下:
表示VPN通道已經建立起來
測試是否能夠Ping通
本文出自 “IT步伐” 博客,請務必保留此出處http://tsykl2008.blog.51cto.com/3973591/1970141
Openswan企業實戰之ipsec vpn加速ERP系統