19.14. 建立一個 IPsec 連線

IPsec 代表 Internet Protocol Security。 它是在兩部系統間(主機對主機) 或兩個網路間(網路對網路)建立一個加密連線的一個虛擬私有網路的解決方案。

提示建議
 

請拜訪 http://www.ipsec-howto.org/ 以取得關於 IPsec 的更多資訊。

19.14.1. 主機對主機的連線

一個主機對主機的 IPsec 連線是在兩部執行含有相同認證金鑰之 IPsec 的系統間一個加密的 連線,只要 IPsec 連線是啟用的狀態,兩部主機間的任何網路流量都是加密的。

如要設定一個主機對主機的 IPsec 連線,請在每一部主機上使用下列的步驟:

  1. 啟動 網路管理工具

  2. 在 『IPsec』 的標簽頁選取 新增

  3. 點選 下一步 以開始設定一個主機對主機的 IPsec 連線。

  4. 請為這個連線提供例如 ipsec0 一個字的匿名,並且選擇是否要在 電腦啟動時自動啟用這個連線,再點選 下一步

  5. 選取 『主機與主機間的加密』 當作連線類型,再點選 下一步

  6. 請選擇要使用的加密類型: 手動或自動。

    假如選擇了手動,在稍候的過程中必須提供一個加密的金鑰。 假如選擇了自動,將由 racoon 系統程式來管理加密金鑰。 假如需要使用 racoon, 您必須安裝 ipsec-tools 套件。

    點選 下一步 繼續。

  7. 請指定其他主機的 IP 位址。

    假如您不知道其他系統的 IP 位址,請在其他系統上執行 /sbin/ifconfig <裝置> 指令,這裡的 <裝置> 就是使用來連接到其他主機的乙太網路裝置。 假如系統上只有一個乙太網路卡,裝置名稱則為 eth0。 IP 位址就是在 inet addr: 標籤之後的號碼。

    點選 下一步 繼續。

  8. 假如在 6 步驟選擇了手動的加密方式,請指定要 使用的加密金鑰,或者點選 產生 來建立一個。

    請指定一個加密金鑰或點選 產生 來建立一個,它可以是任何數字與字母的組合。

    點選 下一步 繼續。

  9. 請檢查 『IPsec — 摘要』 的頁面的資訊,再點選 套用

  10. 請選取 檔案 => 儲存 來儲存設定。

  11. 從清單中選取 IPSec 連線,再點選 啟用 的按鈕。

  12. 請在其他主機上重複相同的步驟,請您特別注意必須要使用在 8 步驟所建立的同一金鑰在其他主機上,否則 IPsec 將無法使用。

在設定好 IPsec 連線後,它將會出現在如 圖形 19-22 所示的IPSec 清單中。

圖形 19-22. IPSec 連線

/etc/sysconfig/network-scripts/ 將會建立兩個檔案 — ifcfg-<nickname>keys-<nickname>。 假如選擇了 自動加密方式,也將會建立 /etc/racoon/racoon.conf 檔案。

在介面啟用後,將會在 /etc/racoon/ 目錄中建立 <remote-ip>.confpsk.txt 檔案,而 racoon.conf 檔案也會被修改以包含 <remote-ip>.conf 於其中。

請參考 第 19.14.3 節 以決定是否已經成功建立 IPsec 連線。

19.14.2. 網路與網路間(VPN)的連線

一個網路與網路間的 IPsec 連線使用兩部 IPsec 路由器(每一個網路使用一部),以透過它 來傳導私有子網路的網路流量。

舉例來說,如 圖形 19-23 所示,當 192.168.0/24 私有網路想要 傳送網路流量到 192.168.2.0/24 私有網路時,封包將會經過 gateway0 --> ipsec0 --> 網際網路 --> ipsec1 --> gateway1,然後到達 192.168.2.0/24 子網路。

IPsec 路由器必須擁有公眾可存取的 IP 位址,以及另一個連接到它私有網路的乙太網路裝置。 只當網路流量是專為另一部擁有加密連線的 IPsec 路由器所傳送時,才會經過它。

圖形 19-23. 網路與網路的 IPsec

其他的網路設定選項包括介於每一部 IP 路由器與網際網路間的防火牆,以及介於每一部 IPsec 路由器與子網路閘道器間的一個公司網路防火牆。 子網路的 IPsec 路由器與閘道器可以是一部 含有兩個乙太網路裝置的系統,一個擁有公眾 IP 位址以當作 IPsec 路由器,而另一個擁有 私有 IP 位址以當作私有子網路的閘道器。 每一部 IPsec 路由器可以使用其私有網路的閘道器 或一部公眾的閘道器來傳送封包到其他的 IPsec 路由器。

如要設定一個網路與網路的 IPSec 連線,請執行下列步驟:

  1. 啟動 網路管理工具

  2. 在 『IPsec』 的標簽頁選取 新增

  3. 點選 下一步 來開始設定一個網路與網路間的 IPsec 連線。

  4. 請為這個連線提供例如 ipsec0 一個字的匿名,並且選擇是否要在 電腦啟動時自動啟用這個連線,再點選 下一步

  5. 選取 『網路與網路間的加密』,再點選 下一步

  6. 請選擇要使用的加密類型: 手動或自動。

    假如選擇了手動,在稍候的過程中必須提供一個加密的金鑰。 假如選擇了自動,將由 racoon 系統程式來管理加密金鑰。 假如需要使用 racoon, 您必須安裝 ipsec-tools 套件。 點選 下一步 以繼續。

  7. 請在 『區域網路』 的頁面輸入下列資訊:

    • 區域網路位址』 — 連接到私有網路之 IPsec 路由器上裝置的 IP 位址。

    • 本地端子網路遮罩 — 區域網路 IP 位址的子網路遮罩。

    • 區域網路閘道器』 — 私有子網路的閘道器。

    點選 下一步 繼續。

    圖形 19-24. 區域網路的資訊

  8. 請在 『遠端網路』 的頁面輸入下列資訊:

    • 遠端的 IP 位址』 — 其他私有網路中 IPsec 路由器可被公眾存取的 IP 位址。 在我們的例子中,請為 ipsec0 輸入 ipsec1 可被公 眾存取的 IP 位址,反之亦然。

    • 遠端網路位址』 — 在其他 IPsec 路 由器之後的私有網路之網路位址,在我們的例子中,請為 ipsec1 輸入 192.168.1.0, 而為 ipsec0 輸入 192.168.2.0

    • 遠端子網路遮罩』 — 遠端 IP 位址的子網路遮罩。

    • 遠端網路閘道器』 — 遠端網路位址之閘道器的 IP 位址。

    • 假如在 6 步驟選擇了手動的加密方式,請指定 要使用的加密金鑰,或者點選 產生 來建立一個。

      請指定一個加密金鑰或點選 產生 來建立一個,它可以是任何數字與字母的組合。

    點選 下一步 繼續。

    圖形 19-25. 遠端網路的資訊

  9. 請檢查 『IPsec — 摘要』 的頁面的資訊,再點選 套用

  10. 請選取 檔案 => 儲存 來儲存設定。

  11. 從清單中選取 IPSec 連線,再點選 啟用 的按鈕。

  12. 請以 root 身份在 shell 提示符號下啟用 IP forwarding:

    1. 請編輯 /etc/sysctl.conf 檔案,並且設定 net.ipv4.ip_forward1

    2. 執行下列指令來使變更生效:

      sysctl -p /etc/sysctl.conf

用來啟用 IPsec 連線的網路程式碼將會自動建立網路路由以在必要的情況下透過 IPsec 路由 器來傳送封包。

請參考 第 19.14.3 節 以決定是否已經成功建立 IPsec 連線。

19.14.3. 測試 IPSec 連線

使用 tcpdump 工具程式來檢視主機(或網路)間所傳送的網路封包, 並檢驗那些封包都已經經由 IPsec 所加密。 封包應該含有一個 AH 表頭,並且必須是一個 ESP 封包,ESP 表示它是經過加密的。 例如:

17:13:20.617872 pinky.example.com > ijin.example.com: \
	    AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF)

19.14.4. 啟動與停止連線

假如開機時沒有設定啟用 IPsec 連線,請以 root 身份在命令列啟動與停止它。

如要啟動連線,在主機對主機 IPsec 的每一部主機或網路與網路 IPsec 的每一部 IPsec 路由器 上以 root 身份執行下列指令(請以之前設定的一個字匿名取代 <ipsec-nick>,如 ipsec0):

/sbin/ifup <ipsec-nick>

如要停止連線,在主機對主機 IPsec 的每一部主機或網路與網路 IPsec 的每一部 IPsec 路由器 上以 root 身份執行下列指令(請以之前設定的一個字匿名取代 <ipsec-nick>,如 ipsec0):

/sbin/ifdown <ipsec-nick>