在CentOS/Redhat 5.4上使用openswan搭建資料中心之間的VPN

來源:互聯網
上載者:User

最近由於主要資料中心的流量過大,為了分流和成本,在國外購買了幾個外掛式主控件。這樣就需要在2個資料中心之間進行
資料的同步,包括mysql,mongodb,以及反向 Proxy等。通過在使用IPSec建立VPN從而將2個子網串連在一起是
最合適的方案。

在最初曾經考慮過使用OpenVPN,但是由於我們的應用涉及到較大的資料轉送,OpenVPN的效能相對於IPSec的方案還是差,
我們也無法通過為openvpn部署硬體加速。出於成本考慮,最後選擇純軟的vpn。

首先嘗試使用CentOS內建的IPSec進行配置,不過很快失敗。RedHat的文檔描述的很不清楚,此外,配置比較繁瑣,
按照其說明配置也無法連通,實在沒有耐心,於是改用openswan來部署。

在部署openswan之前,先要簡單畫出2個子網的拓撲圖,只要分出“左”《-》“右” 即可:

A(192.168.8.x/211.x.x.x) +————+ B(192.168.9.x/174.xx.xx.xx)

按照,A為left 節點,B 為 right節電。192.168.8.x和 192.168.9.x分別為2個網路的網段。
在2個網段分別選擇一個主機作為網關,這樣分別設定這個2個網關就可以了。
實際為:
gate_a(192.168.8.70/211.x.x.x) , gate_b(192.168.9.1/174.x.x.x)

這2個host都需要有2個網卡,分別是連結內網和公網,記住上面的內網和公網ip。

下面開始安裝:(gate_a)

1. 安裝openswan
gate_a.nightsailer.com> yum install ipsec-tools
gate_a.nightsailer.com> yum install openswan

注意:下面這步很關鍵,CentOS-5.4有個bug,安裝openswan時自動建立cert db並不正確,所以首先需要
重新建立,否則下一步產生key的時候就會報錯。

gate_a.nightsailer.com>certutil -N -d /etc/ipsec.d

2. 現在,為gate_a產生密鑰:
gate_a.nightsailer.com>ipsec newhostkey –configdir /etc/ipsec.d/ –output /etc/ipsec.d/keys.secrets

3.顯示輸出gate_a 作為left的公開金鑰:
gate_a.nightsailer.com>ipsec showhostkey –left
ipsec showhostkey nss directory showhostkey: /etc/ipsec.d
# rsakey Axxxx
leftrsasigkey=0sA………

將eftrsasigkey=0sA….. 這行輸出記下,後面備用

4. 修改/etc/ip_sec.conf

# /etc/ipsec.conf – Openswan IPsec configuration file
#
# Manual: ipsec.conf.5
#
# Please place your own config files in /etc/ipsec.d/ ending in .conf

version 2.0 # conforms to second version of ipsec.conf specification

# basic configuration
config setup
# Debug-logging controls: “none” for (almost) none, “all” for lots.
# klipsdebug=none
# plutodebug=”control parsing”
# For Red Hat Enterprise Linux and Fedora, leave protostack=netkey
protostack=netkey
nat_traversal=yes
virtual_private=
oe=off
# Enable this if you see “failed to find any available worker”
nhelpers=0

#You may put your configuration (.conf) file in the “/etc/ipsec.d/” and uncomment this.
include /etc/ipsec.d/*.conf

5. 現在為這個vpn單獨建立一個conf檔案,放到/etc/ipsec.d/nightsailer.com_vpn.conf

conn nightsailer_vpn
#左節點的公網ip(gate_a)
left=211.x.x.x
#左節點的內網網段
leftsubnet=192.168.8.0/24
#左節點的網關的內網ip(可選)
leftsourceip=192.168.8.70
#左節點的id,可以是ip,也可以是網域名稱:
# leftid=@gate_a.chinavisual.com
# 建議最好用ip,網域名稱需要反向解析,dns沒配好很容易出問題
leftid=211.x.x.x
# 上一步顯示的gate_a作為left的公開金鑰
leftrsasigkey=0sAQO…
leftnexthop=%defaultroute
#以下參數含義和上面的一樣
right=174.x.x.x
rightsubnet=192.168.9.0/24
rightsourceip=192.168.9.1
rightid=174.x.x.x
rightrsasigkey=0sAQOp….
rightnexthop=%defaultroute
#是否在ipsec啟動時自動啟用這個連結
#auto = add ( 若這個選項,則需要手動up vpn連結)
auto=start

現在,登入到gate_b,重複上面的步驟1-5。

注意,第3步略有不同,因為gate_b是right節點,所以要顯示它的right 密鑰:
gate_b.nightsailer.com>ipsec showhostkey –right
ipsec showhostkey nss directory showhostkey: /etc/ipsec.d
# rsakey Axxxx
rightrsasigkey=0sA………

將rightrsasigkey=0sA….. 這行輸出更新/etc/ipsec.d/nightsailer.com_vpn.conf(包括gate_a上的)

現在分別啟動ipsec
gate_a.nightsailer.com>/etc/init.d/ipsec start
gate_b.nightsailer.com>/etc/init.d/ipsec start

好了,現在在gate_a和gate_b上相互ping,就可以ping通了。

網關通了,那麼還需要再各自子網添加一個路由:
A網段添加:
route add -net 192.168.9.0 netmask 255.255.255.0 gw 192.168.8.70 eth1
#添加靜態路由
在 /etc/sysconfig/network-scripts/route-eth1 追加:
192.168.9.0/24 via 192.168.8.70 dev eth1

B網段添加:
route add -net 192.168.8.0 netmask 255.255.255.0 gw 192.168.9.1 eth1
在 /etc/sysconfig/network-scripts/route-eth1 追加:
192.168.8.0/24 via 192.168.9.1 dev eth1

一切就大功告成了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.