1. 程式人生 > >Openswan企業實戰之ipsec vpn加速ERP系統

Openswan企業實戰之ipsec vpn加速ERP系統

openswan ipsec vpn

公司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、 檢測vpntunnel狀態

/etc/init.d/ipsec status #檢測ipsec tunnel是否建立起來

結果如下:

技術分享

表示VPN通道已經建立起來

測試是否能夠Ping通

技術分享


本文出自 “IT步伐” 博客,請務必保留此出處http://tsykl2008.blog.51cto.com/3973591/1970141

Openswan企業實戰之ipsec vpn加速ERP系統