CentOS 6.5 ipesc下Openswan實現雙IDC互聯

1、軟件說明
一、Openswan簡介   python

 Openswan是Linux下IPsec的最佳實現方式,其功能強大,最大程度地保證了數據傳輸中的安全性、完整性問題。   openswan支持2.0、2.二、2.4以及2.6內核,能夠運行在不一樣的系統平臺下,包括X8六、X86_6四、IA6四、MIPS以及ARM。   vim

 Openswan是開源項目FreeS/WAN中止開發後的後繼分支項目,其分裂爲兩個項目,Openswan與 Strongswan,Openswan由三個主要組件構成:配置工具(ipsec命令腳本)、Key管理工具(pluto)、內核組件(KLIPS/26sec)26sec使用2.6內核內建模塊Netkey,用來替代Openswan開發的KLIPS模塊,2.4及如下版本內核無Netkey模塊支持,只能使用KLIPS。若是你用的是2.6.9以上的內核,推薦使用26sec,能夠不用給內核打Nat-T補丁就可使用NAT,2.6.9如下版本內核的NETKEY存在Bug,推薦使用KLIPS。IPSec差很少是最老的×××標準了,她的依然很安全,固然是在配置好之後。言下之意,她的配置比較麻煩。本文下面將作說明。 
 由於FreeS/WAN已經在2004年三月中止開發,因此咱們使用她的後繼項目Openswan來作咱們的IPSec實驗。其相比FreeS/WAN有個好處,若是使用 26sec 的時候,Openswan不用打補丁,就能夠用nat。
二、Openswan的安裝  安全

  由於IPSec工做在網絡層,因此須要系統內核態的支持,上面說過,有兩個選擇,用自帶(26sec)的或用Openswan(KLIPS)的,爲了方便(如何打補丁和編譯內核不是本文討論的重點),本文使用CentOS源中編譯好的Openswan來進行實驗。# yum install openswan    若是你想從源碼安裝,到http://www.openswan.org/code  下載軟件包,而後按照包中的說明安裝。因爲咱們使用26sec,因此只要make programs;make install就能夠搞定。值得注意的是,如今的Openswan已經內建些個好用的補丁,好比x.509和NAT Traversal的支持,使用起來很是的方便。你也能夠用下面的命令來檢驗你的安裝。
# ipsec verify
三、Openswan的認證方式   
Openswan支持許多不一樣的認證方式,包括 :bash

RSA keys、   (RSA Signature比較簡單)網絡

pre-shared keys、dom

xauth或x.509證書方式。.tcp


四、Openswan的鏈接方式:
1)  Network-To-Network方式   本文重點是以此來完成企業需求的ide

   Network-To-Network方式是把兩個網絡鏈接成一個虛擬專用網絡。當鏈接創建後,每一個子網的主機均可透明地訪問遠程子網的主機。工具

要實現此種鏈接方式,要知足如下兩個條件:  測試

  I. 每一個子網各自擁有一臺安裝有OpenSWan的主機做爲其子網的出口網關或者路由; 

  II.每一個子網的IP段不能有疊加

(2)Road Warrior方式  

  當使用Network-To-Network方式時,做爲每一個子網網關的主機(openswan server)不能像子網內部主機那樣透明訪問遠程子網的主機,也就是說:若是你是一個使用LClient的移動用戶,常常出差或是在不一樣的地點辦公,你的LClient將不能用Network-To-Network方式與公司網絡進行鏈接。Road Warrior方式正是爲這種狀況而設計的,鏈接創建後,你的LClient就能夠鏈接到遠程的網絡了。(或者使用SSL ***的開源產品open***來實現出差時候,遠程撥號訪問的需求)

   更多詳情請參見OpenSWan項目主頁:http://www.openswan.org
5、本文將從如下幾點進行測試
net-to-net模型  **********
1)基於pre-shared keys認證方式(PSK)
2)基於RSA Signature認證方式(RSA數字簽名)
3)基於數字證書認證方式(x.509證書)
4)基於XAUTH認證方式(IPSec/Xauth PSK)
RoadWarrior
5)基於pre-shared keys認證方式(PSK)
6)基於RSA Signature認證方式(RSA數字簽名)
7)基於數字證書認證方式(x.509證書)
8)基於XAUTH認證方式(IPSec/Xauth PSK)


2、環境說明
一、網絡拓撲

wKiom1Yl8JOz67MCAAKDUnz1umI641.jpg


二、實驗目的


  本使用目的是爲了實現client1和client2兩個不一樣地區不一樣子網的互通。即不一樣機房,不一樣網段的內網機器通訊


三、實驗環境介紹 
設備名稱
IP地址信息
所屬機房

北京
***server1外網   eth0  192.168.2.48     
橋接內網         eth1  192.168.183.1     
VMnet1網關            192.168.2.1
上海
***server2
外網eth0  192.168.2.111     
橋接內網eth1  192.168.233.1     
VMnet2網關     192.168.2.1client1    


---北京
eth0      192.168.183.44   
VMnet網關      192.168.183.1     
說明,我使用的是網關路由模式,是client機器經過此網關來通訊



client2    ----上海
eth0       192.168.233.44   VMnet4
網關       192.168.233.1


     

我本地的網絡是192.168.2.0/24網段,爲了讓×××Server能夠上網,我這邊把×××Server的eht0設定到了192.168.2.0/24網段,而且網卡設定爲橋接,其餘的網絡安裝上面表格配置好,這樣咱們就能夠所有遠程操做了,把每一個主機的主機名修改好,這樣便於咱們觀察。


3、Openswan環境部署

一、開啓數據轉發
# vim /etc/sysctl.conf
 net.ipv4.ip_forward = 1
 net.ipv4.conf.default.rp_filter = 0
二、關閉icmp重定向# sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf
# sysctl -p
三、關閉SELinux# setenforce 0
四、安裝openswan    (兩臺***serve上面都是一樣操做
# yum install openswan lsof -y
# rpm -ql openswan      //查看安裝了那些文件。
# ipsec --version       //查看ipsec的版本
[root@***server1 etc]# ipsec --version  
Linux Openswan U2.6.32/K2.6.32-431.el6.x86_64 (netkey)
See `ipsec --copyright' for copyright information.
這裏並無加載任何的IPsec stack,當啓動IPsec後會自動加載系統自帶的netkey。
[root@***server1 etc]#service ipsec start
[root@***server1 etc]# ipsec verify    //對ipsec進行驗證(兩臺***serve上面都是一樣操做)


wKiom1Yl7gOT1ghkAAOZh-tL6AA604.jpg

#################

重要說明,若是前邊的步驟沒作安裝文檔完成,彙報一下錯誤,致使接下來的未知錯誤

[root@localhost ~]# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                            [OK]
Linux Openswan U2.6.32/K(no kernel code presently loaded)
Checking for IPsec support in kernel                          [FAILED]
 SAref kernel support                                  [N/A]
Checking that pluto is running                             [FAILED]
  whack: Pluto is not running (no "/var/run/pluto/pluto.ctl")
Two or more interfaces found, checking IP forwarding              [FAILED]
  whack: Pluto is not running (no "/var/run/pluto/pluto.ctl") 
Checking NAT and MASQUERADEing                              [OK]
Checking for 'ip' command                                 OK]
Checking /bin/sh is not /bin/dash                            [OK]
Checking for 'iptables' command                             [OK]
cat: /etc/ipsec.d/examples/no_oe.conf: No such file or directory
cat: /etc/ipsec.d/examples/no_oe.conf: No such file or directory
Opportunistic Encryption Support



因此, 確保ipsec verify的結果都是如圖所示方可繼續接下來的配置

wKioL1Yl7hrDWXByAAOWhIx7O5I113.jpg


咱們能夠看到openswan監聽在UDP的500和4500兩個端口,其中500是用來IKE密鑰交換協商,4500的NAT-T是nat穿透的


4、Openswan配置(network-to-network)
一、基於pre-shared keys認證方式(PSK)

在***server1()上面做以下修改,裏面的配置參數不少,你們能夠參照man ipsec.conf裏面的講解# vim /etc/ipsec.conf
[root@melin etc]# grep -Ev  '#|^$' ipsec.conf.psk 
config setup
     protostack=netkey
     nat_traversal=yes
     virtual_private=
     oe=off
conn net-to-net
     ike=aes256-sha2_256;modp2048
     phase2alg=aes256-sha2_256;modp2048
     authby=secret      
     type=tunnel
     left=192.168.2.48
     leftsubnet=192.168.183.0/24
     leftid=@test1 
     leftnexthop=%defaultroute
     right=192.168.2.111
     rightsubnet=192.168.233.0/24
     rightid=@test2
     rightnexthop=%defaultroute
     auto=add  /add表明只是添加,但並不會鏈接,若是爲start則表明着啓動自動鏈接.


wKioL1Yl8ajSoxIVAAH9_PQPwiI885.jpg



一樣在另外一臺***server2上面配置和***sever1同樣的配置文件

即: scp ipsec.conf 192.168.2.111:/etc/ (兩臺***serve上面的ipsec.conf配置文件是同樣的)

[root@***server1 etc]#  vim /etc/ipsec.secrets
192.168.2.48 %any 0.0.0.0 : PSK "123"
這個文件的格式爲:「Local Ip address」  「remote ip address」 : PSK 「your key」
在192.168.2.111(***server2)上面修改爲以下
[root@***server2 etc]# vim /etc/ipsec.secrets
192.168.2.111 %any 0.0.0.0 : PSK "123"
重啓兩個***服務
# service ipsec restart而後啓動一下咱們的con
# ipsec auto --up net-to-net  (此處因爲ipsec.conf中auto=add,因此須要手動添加)




wKioL1Yl83iwL_XcAALbo6-Euuw610.jpg

當咱們看到ipsec sa estabilished,就證實咱們鏈接成功了,也能夠從中看到一些加密方法,密鑰交換參數,咱們也能夠在配置文件裏面添加以下信息進行修改。(記得保持同步到***server2)


ike=aes256-sha2_256;modp2048
phase2alg=aes256-sha2_256;modp2048


而後在clinet1上面去ping對端子網的設備,能夠看到以下,可是×××Server是不能ping通對方子網的設備的。

client1上的操做:

route add  default gw  192.168.183.1

wKioL1Yl9EDQy0sJAAKIaGq3juY008.jpg



咱們能夠在任意×××Server網關上面抓包,查看數據信息

# tcpdump -i eth1 -nn

wKiom1Yl9NCC--7zAAINqFbGlGA311.jpg

# tcpdump -i eth0 -nn

wKiom1Yl9ISA5cxzAAScLUbnnR8771.jpg


其中ESP(Encapsulating Security Payload)就是加密數據。

echo request 

echo  reply

代表既能夠發送請求,也能夠收到迴應包


測試經過後,能夠把鏈接配置中 auto=add    

             更改成: auto=start 

這樣當Openswan啓動時就可自動進行鏈接。
到此咱們net-to-net基於psk模式的×××就搭建成功了。


########################################################################################

2、基於RSA Signature認證方式(RSA數字簽名)


注:由於我是接着上面的實驗進行操做,一直有問題沒法解決,後來從新安裝了一下,安裝下面的流程一次就成功了。
openswan的安裝方式同本文剛開始安裝同樣,下面咱們主要講解配置的不一樣。

下面提到的L-Server指的是192.168.2..48(×××Server1),
R-Server指的是192.168.2.111(×××Server2)。
在L-Server上面進行以下操做生成一個新的RSA密鑰對
# ipsec newhostkey --output /etc/ipsec.secrets(能夠先不操做)由於這個生成過程太過緩慢,咱們使用下面方面進行加速生成
# rm -rf /dev/random# ln -s /dev/urandom /dev/random
# ipsec newhostkey --output /etc/ipsec.secrets

在R-Server上面執行一遍
# rm -rf /dev/random# ln -s /dev/urandom /dev/random
# ipsec newhostkey --output /etc/ipsec.secrets
在L-Server上執行ipsec showhostkey                   --left獲得L-Server的公鑰
# ipsec showhostkey --left


wKioL1Yl9p-x_L6aAAQWnI5OQoY421.jpg


在R-Server上執行ipsec showhostkey --right獲得R-Server的公鑰
# ipsec showhostkey --right

wKioL1Yl9vXCruEYAAUDqgUyw9I089.jpg


請記住這兩個key,後面會用到,也可使用重定向加到配置文件裏面



L-Sserver:
編輯/etc/ipsec.conf文件
# vim /etc/ipsec.conf

wKiom1Yl-CXCHZ4VAAkVVBmUDgg347.jpg


# scp /etc/ipsec.conf 192.168.2.111:/etc  (同步到R-server上)
# service ipsec restart

# ipsec auto --up net-to-net

wKioL1Yl83iwL_XcAALbo6-Euuw610.jpg

當咱們看到ipsec sa estabilished,就證實咱們鏈接成功了

測試經過後,能夠把鏈接配置中 auto=add    

             更改成: auto=start 

# service ipsec restart

測試:

在一端client1去ping另外一端的客戶機client2,而後咱們在***server上面抓包查看。

咱們能夠在任意×××Server1網關上面抓包,查看數據信息

# tcpdump -i eth1 -nn

wKiom1Yl9NCC--7zAAINqFbGlGA311.jpg

# tcpdump -i eth0 -nn

wKiom1Yl9ISA5cxzAAScLUbnnR8771.jpg


此時一切測試成功以後 
# chkconfig ipsec on

基於RSA Signature認證方式(RSA數字簽名)搭建完畢。

相關文章
相關標籤/搜索