歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 基於IPsec的虛擬專用網在Linux上的實現--安裝配置篇

基於IPsec的虛擬專用網在Linux上的實現--安裝配置篇

日期:2017/2/27 14:17:16   编辑:更多Linux
  上一篇我們介紹了基於IPsec的VPN的基本原理, 現在我們來看看具體怎麼配置自己的虛擬專用網. 1. VPN的類型 關於如何組建VPN, 有的公司付費購買專門的軟件, 而有的公司用自己的路由器來實現, 因為很多路由器內嵌VPN功能. 這些VPN可以像SSH隧道一樣簡單, 也可以做的很復雜. 所有的方案都有一個共同點, 那就是必須在不安全的互連網創建一個虛擬的安全的隧道. VPN主要有以下類型: IPsec VPND SSH 諸如一些CISCO路由器(內嵌VPN功能) 2. 我推薦的選擇 FreeS/WAN 上面如此多的選擇, 為什麼我要選擇Linux上的FreeS/WAN(基於IPsec)來實現VPN呢? 因為從目前的應用情況看, FreeS/WAN是目前最安全的在Linux上的實現方案. 它基於3DES等加密算法. 另外, 試驗表明SSH和VPND方案缺少FreeS/WAN的某些功能, 而且IPsec被越來越多的其他軟件所支持, 以後的兼容性更好. 例如, NAI的PGPnet就和FreeS/WAN一起工作得很好. 但是, 我認為真正重要的一點是, 它是免費的(Linux也是免費的), 這對於我們國內用戶來說, 不用花大價錢去買專門的軟件, 您只需要向ISP支付一點上網費, 就可以組建自己的廉價的VPN. 3. 它的用途 通過Internet連接2個甚至更多的辦公室(當然是兩地分居的那種); 允許公司的某個職員在千裡之外遠程登錄到公司內部網絡; 在Internet上, 數據是在一個虛擬的安全通道內傳播; 4. 安裝和配置IPsec和FreeS/WAN1.5 (1)安裝; 如果你的內核版本低於2.2.14, 那麼我強烈建議你升級到2.2.14; 可以從http://www.kernel.org/下載. 按照你自己的要求編譯內核, 開始最好不要IPsec支持(以後再做). 然後到http://www.freeswan.org/ 上下載freeswan-1.5.tar.gz(七月二號出的最新版), 把這個文件放到/usr/src/目錄下, 運行tar zxvf freeswan-1.5.tar.gz解開, 這時候會出現一個新的目錄/usr/src/freeswan-1.5/, 所有的freeswan的源代碼和各種文件都在這個目錄下. 這時候切記當前目錄是/usr/src/freeswan-1.5/, 運行make menugo; 在網絡部分, 確定所有IPsec的部分都被選上. 退出菜單, 保存新內核的設置, 注意!!!即使你什麼也沒改, 也必須save, 否則IPsec不會啟動. 現在你需要用新的內核啟動, 運行 cp /usr/src/linux-2.2.14/arch/i386/boot/bzImage /boot/vmlinuz-2.2.14 將bzImage移到 /boot目錄下. 然後運行cp /usr/src/linux-2.2.14/System.map /boot/System.map-2.2.14來創 建新的System.map文件. 最後在/usr/src/linux-2.2.14/下運行make modules; make modules_install. 編輯/etc/lilo.conf, 將新的內核放到最前面, 運行lilo使之生效. 重新啟動, 你將會看到 IPSec running under FreeS/WAN 1.5 will start up ipsec0 start up 等字樣, 如果沒有的話, 說明安裝不正確, 需要重新安裝. (2). VPN的配置 一。 ipsec.conf 文件 (/etc/ipsec.conf) 現在IPsec已經裝好了, 我們需要用它來配置VPN. 典型的, 我們需要兩個網關, 不必 關心那個是左邊的, 那個是右邊的, 只要記住它們是一對, 就好像兩個克隆人. 讓我們看看下面的例子: Left Net ===== Left Gate --------------------------- Right Gate ===== Right Net


Internet 有關信息如下: Left Net: 192.168.1.0/24 Left Gate (internal): 192.168.1.1 Left Gate (external): 100.100.100.100 Left Name: North Right Net: 192.168.2.0/24 Right Gate (internal): 192.168.2.254 Right Gate (external): 200.200.200.200 Right Name: South 現在需要在ipsec.conf文件裡創建連接. 注意通信有很多種情況: Net to Net, Left Gate to Right Net, Left Net to Right Gate, and Gate to Gate. 每一個情況都必須有一個連 接來處理. 我推薦你在對這些連接命名的時候最好能夠反映通信情況. 本例中需要5個 連接, 分別是%default, NorthNet-SouthNet, NorthGate-SouthNet, NorthNet-SouthGate和 NorthGate-SouthGate. 注意名字中不能有空格.配置文件中加入下面內容: 注意%default在文件中已經存在, 它說明了以後的連接所用的加密或認證算法以及密鑰和spi等, 一般密鑰需要改動. 如下 # defaults for subsequent connection descriptions conn %default # How persistent to be in (re)keying negotiations (0 means very). keyingtries=0 # Parameters for manual-keying testing (DON\T USE OPERATIONALLY). spi=0x200 esp=3des-md5-96 espenckey=0x01234567_89abcdef_02468ace_13579bdf_12345678_9abcdef0 espauthkey=0x12345678_9abcdef0_2468ace0_13579bdf 然後加入下面的新連接 conn NorthNet-SouthNet left=100.100.100.100 leftsubnet=192.168.1.0/24 leftfirewall=yes right=200.200.200.200 rightsubnet=192.168.2.0/24 rightfirewall=yes conn NorthGate-SouthNet left=100.100.100.100 right=200.200.200.200 rightsubnet=192.168.2.0/24 rightfirewall=yes conn NorthNet-SouthGate left=100.100.100.100 leftsubnet=192.168.1.0/24 leftfirewall=yes right=200.200.200.200 conn SouthGate-NorthGate left=100.100.100.100 right=200.200.200.200 注意本文件中在兩個網關設置了防火牆, 這是應該的, 幾乎沒有一個VPN不用防火牆的. 現在我們確定一下在config.setup部分中的變量設置是否正確, 它是如下形式 config setup interfaces=%defaultroute klipsdebug=none plutodebug=none interfaces選項當用IPsec收發數據包是從哪個網絡接口走, 如果設為%defaultroute, 將根據機器的路由表中的路由表項來走. 當然, 你也可以指定網絡接口, 例如 interfaces="ipsec0=eth1" (設為第二塊網卡, 偏不從第一塊走). Klipsdebug和plutodebug是用來打開或關閉調試選項, 即出了問題到/var/log/messages中加入出錯信息.

非常重要的一點!!!兩個網關的ipsec.conf的內容必須完全一致(除了config setup部分允許有差異, 如網卡的選則, conn * 部分必須克隆), 否則IPsec不能處理. 二。ipsec.secrets文件 它是兩個網關之間的對稱加密算法的密鑰. 兩個網關的這個文件必須完全一致. 如何在兩個網關之間傳輸密鑰呢, 這有點像雞和蛋的問題, 但是不用擔心, 數學家發明了更高級的加密算法(非對稱加密如RSA), 它是雙方有自己的私鑰和共同的公鑰(壞人可以知道公鑰), 但是雙方都不知道對方的私鑰, 壞人當然也不知道了. 傳送密鑰的時候, 用自己的私鑰和公鑰加密, 對方用對方的私鑰和公鑰解密. 不相信, 去看看RSA算法. 就是這麼神奇. 當然, 也可以有別的方法, A地網關的管理人員考到小盤上, 送到B地, 不過嘛, 有點可笑. 這個文件應該如下樣子的: 100.100.100.100 200.200.200.200 "jxj52SjRmUu3nVW521Wu135R5k44uU5lR2V3kujT24U1lVumWSkT52Tu11W Vnm1Vu25lV52k4" 不用解釋, 你可以看出怎麼配置它了. 三。防火牆設置 假設用ipchains, 下面是左邊網關的例子: ipchains -A input -s 100.100.100.100 -d 0/0 -j ACCEPT ipchains -A input -s 100.100.100.100 -d 192.168.2.0/24 -j ACCEPT ipchains -A input -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT 它允許從自己發向Internet和右邊子網的包, 同時允許從左邊子網發往右邊子網的包. 注意, ipsec.secrets 和 ipsec.conf 的文件必須設為只有root可讀, 普通用戶不能訪問, 以保證安全. (3)測試 以上說的手工密鑰的加密方式, 自動密鑰加密方式以後再說. 首先啟動我們加的連接, 如下 [root@Tiger /etc]# ipsec manual --up NorthGate-SouthGate [root@Tiger /etc]# ipsec manual --up NorthGate-SouthNet [root@Tiger /etc]# ipsec manual --up NorthNet-SouthGate [root@Tiger /etc]# ipsec manual --up NorthNet-SouthNet 做完上面的, 然後運行下面的命令



[root@Tiger /etc]# ipsec manual --up NorthNet-SouthNet 做完上面的, 然後運行下面的命令



Copyright © Linux教程網 All Rights Reserved