IPSec 的方法來做 Tunnel 的話,它會把所傳送的資料封包經過一 種演算法運算過後,在將其封裝透過 Internet 送至對方,在用共同的 key 解碼,變為可讀的明文,由於資料量有可能非常的大,會造成 CPU 相當大的負擔,所以 IPSec 通常都是由硬體來完成。而 FreeSWAN project 正是以軟體的方式做到 IPSec。
系統需求
Linux 較新版本(Redhat or slackware 等 )、Linux kernel 2.2 以上、
Freeswan1.5 Installation:
首先到http://www.freeswan.org 下載 freeswan 1.5 版本的 kernel patch,再去 http://www.kernel.org 下載 Linux Kernel 2.2.18。
把下載回來的 Linux kernel 解壓縮至/usr/src/
cp linux-2.2.18.tar.gz /usr/src cd /usr/src
tar zxvf linux-2.2.18.tar.gz
把 freeswan kernel patch 解壓縮,進入它的目錄之下,並執行 make menugo
把 IPSec 的選項(再 Network Option)中通通選了編到核心中,
而其他的選項依照需要斟酌選取但是基本的東西(例如:CPU、
IDE 硬碟機、Chip set 等)都要有選取。接下來選擇 exit,其他的 Freeswan 會幫你完成。完成之後進入/usr/src/linux 中,執行:
make modules
make modules_install
進入/usr/src/linux/arch/i386/boot 中,把 bzImage 複製到/boot 中,進入/etc 編輯 lilo.conf 使 lilo 知道要用哪個 kernel 開機,執 行 lilo 後重開機變大公告成啦。
編輯/etc 裡的 ipsec.conf,範例如下:
# /etc/ipsec.conf - FreeS/WAN IPSEC configuration file config setup
interfaces=%defaultroute klipsdebug=none
plutodebug=none plutoload=%search plutostart=%search conn %default keyingtries=0
# sample connection conn sample
# Left security gateway, subnet behind it, next hop toward right.
type=tunnel left=172.16.17.18
leftsubnet=192.168.0.0/24 leftnexthop=172.16.17.1
# Right security gateway, subnet behind it, next hop toward left.
right=172.20.21.22
rightsubnet=192.168.3.0/24 rightnexthop=172.20.21.1
# Authorize this connection, but don't actually start it, at startup.
auto=add
#authby=rsasig
IPSec 網 路 架 構 :
left 的 IPSec gateway 有一組 public IP 172.16.17.18 並連 接到 router 172.16.17.1,right 的 IPSec gateway 有一組 public IP 連接到 router 172.20.21.1。假設兩個 router 能透過 Internet 互連。
ipsec.conf 解 析 :
config setup 區塊是定義整個 IPSec 服務所要使用的介 面、Debug 的 Log 檔,以及 Auto key generater 所要啟動的項 目。
interface = %defaultroute
指定 IPSec 的裝置要使用到哪個 interface 上,關鍵 Left subnet 192.168.0.0
Right subnet 192.168.3.0
Fig7.3 IPSec 網路架構
klipsdebug = none
conn %default 式設定以下的 conn 連線定義區塊的預設設 定,也就是說,她再執行時會在每個 conn 連線定義區塊 中照抄一次。
keyingtries=0
每個連線判斷和認證 key 的次數。0 為永遠不放棄。
spi=0x200
spi(Security Parameters Index),它是一個數值,用來建立 或刪除 Security Associations(SA),範圍通常在
0x100~0xffffffff 之間 esp=3des-md5-96
用來定義資料加密和認證時所用的演算法,預設為空白,
目前設定為用 3DES 加密資料,96bits MD5 認證。
espenckey=0x01234567_89abcdef_02468…
代表用來加密資料的 key,使用固定式鑰匙的話,要注意 不要讓它給別人知道喔。
espauthkey=0x12345678_9abcdef0_246…
這是用來設定要求連線時的認證 key,使用固定式鑰匙的 話,一樣不要給別人知道了喔。
細節
type=tunnel
定義連線的型態為 IP-in-IP tunnel left 和 right
說明 IPSec gateway 連接到 Internet 的 IP 位址。
leftsubnet 和 rightsubnet
用來敘述 IPSec 兩邊網路的網路號碼 leftnexthop 和 rightnexthop
敘述 IPSec gateway 所連接到 router 的 IP 位址
left 和 right 的定義其實是抽象的,可以把自己當作 left 也 可以把自己當作 right,只要兩邊的位址設對了,都是行 的通的。
auto=add
預設連線在載入時是否要啟動 add:手動啟動。
start:在設定 IPSec 裝置時,IPSec Tunnel 一並動作。
啟 動 :
當所有的設定檔都設定完成了,執行:
/etc/init.d/ipsec start
/usr/local/sbin/ipsec –up auto YourConnectName 即可啟動 IPSec 服務。
*如 果 在 ”add=”項 設 定 為 start 則 可 省 略 此 步 。