基於 IPsec 的 VPN 的目的是在 OSI 模型的網絡層加密流量,使攻擊者無法在客戶端和 VPN 服務器之間竊聽。 在我們關於 strongswan 的文章中,它也提供了 Windows、Linux 和 Mac OS 上的 IPsec 協議功能。 但是,LibreSwan 和 OpenSwan 工具也可用於相同目的。 在本教程中,我們的重點是 LibreSwan,它是 Unix/Linux 環境下 IPsec 協議的另一個實現。 LibreSwan 從 OpenSwan IPsec 項目分叉出來,可在基於 RedHat 的 Linux 發行版上使用。
在本教程中,LibreSwan 將在 Ubuntu 16.04 LTS 上從源代碼編譯。 自述文件中給出了針對不同 Linux 發行版編譯 LibreSwan 的說明 以下快照顯示了安裝 LibreSwan 所需的軟件包、啟用/禁用功能和命令。
安裝 LibreSwan 後,將在網關到網關模式中配置 VPN 以加密流量。 不同的 LibreSwan 的例子 項目網站上給出了配置。
如何安裝 Libreswan
還假設在 Linux 發行版上啟用了數據包轉發。 在 Ubuntu 16.04 LTS 上編譯 LibreSwan 需要以下軟件包。
apt-get -y update
apt-get -y install libnss3-dev libnspr4-dev pkg-config libpam0g-dev libcap-ng-dev libcap-ng-utils libselinux1-dev libcurl4-nss-dev flex bison gcc make
LibreSwan 的最新源代碼可以從 項目網站. 使用以下命令提取壓縮文件。
tar -xzf libreswan-3.19.tar.gz
現在運行“make”命令來獲取 LibreSwan 編譯的指令。
因此,運行“make all”命令在 Ubuntu VM 上構建 LibreSwan。 此命令將生成以下錯誤,即未找到未綁定的頭文件。
fatal error: unbound.h: No suh file or directory
因此,LibreSwan 還需要更多的軟件包。 以下命令將安裝未綁定的開發庫。
apt-get install libunbound-dev
在編譯 LibreSwan 時會出現另一個由於缺少事件庫而導致的錯誤。
fatal error: event.h: No suh file or directory
運行以下命令安裝 libevent 包。
apt-get install libevent-dev
由於在 Ubuntu 平台上缺少 systemd 包,安裝腳本顯示另一個錯誤。
fatal error: systemd/sd-daemon.h: No suh file or directory
所需包的安裝如下所示。
apt-get install libsystemd-dev
最後,再次運行“make all”或“make install”來編譯和安裝LibreSwan。
make all
上面的命令將在系統上安裝 LibreSwan。 但是,使用“ipsec start”命令時出現以下錯誤。
/usr/local/sbin/ipsec: certutil: Not found
以下命令也給出瞭如下所示的相同錯誤。
ipsec setup start
ipsec initnss
*(需要 NSS 庫生成所需的密鑰)
/usr/local/sbin/ipsec: certutil: Not found
apt-get install libnss3-tools
以下命令初始化 LibreSwan 工具所需的 NSS 加密庫。
ipsec initnss
最後,成功啟動ipsec服務如下圖。
ipsec setup start
成功安裝 LibreSwan 後,下一步是在兩個 VM 上配置 VPN 設置。 在這 example,建立了一個基於 PSK 的隧道來保護網關到網關的流量。
A面——ipsec.conf配置文件
root@test-VirtualBox:/home/test# cat /etc/ipsec.conf
config setup
protostack=netkey
conn vpn
left=192.168.15.50
leftsubnet=10.12.50.0/24
right=192.168.15.5
rightsubnet=10.12.5.0/24
authby=secret
pfs=yes
rekey=yes
keyingtries=3
type=tunnel
auto=start
ike=aes256-sha1;modp2048
phase2alg=aes256-sha1;modp2048
ipsec.secrets
192.168.15.50 192.168.15.5: PSK "12345678asdfghjk1qwe3wqA“
B 面 – ipsec.conf 配置文件
root@test-VirtualBox:/home/test# cat /etc/ipsec.conf
config setup
protostack=netkey
conn vpn
left=192.168.15.50
leftsubnet=10.12.50.0/24
right=192.168.15.5
rightsubnet=10.12.5.0/24
authby=secret
pfs=yes
rekey=yes
keyingtries=3
type=tunnel
auto=start
ike=aes256-sha1;modp2048
phase2alg=aes256-sha1;modp2048
ipsec.secrets
192.168.15.5 192.168.15.50: PSK "12345678asdfghjk1qwe3wqA“
設置好以上配置後,在雙方運行以下命令,ipsec 協商過程將開始。
ipsec restart
A面:
B面:
還使用以下命令檢查 ipsec vpn 的狀態。
setkey -D
上面的快照顯示了在 VM 之間建立的 4 個 SA(安全關聯),並且隧道的狀態為“成熟”。
結論
在本教程中,另一個開源 IPsec 實現“LibreSwan”已成功編譯並安裝在 Ubuntu VM 上。 它還被配置為基於兩個 VM 之間的 PSK 建立網關到網關 VPN。 還觀察到 LibreSwan 的配置與 StrongSwan 不同。