在 CentOS 6 上搭建 IKEv1 與 IKEv2

分類:IT技術 時間:2016-10-17

安裝 StrongSwan

yum install -y strongswan  

證書

# strongswan pki --gen --outform pem > ca.key.pem
# strongswan pki --self --in ca.key.pem --dn "C=CN, O=PZYME, CN=PZY VPN CA" --ca --lifetime 3650 --outform pem >ca.cert.pem
# strongswan pki --gen --outform pem > server.key.pem  
# strongswan pki --pub --in server.key.pem | strongswan pki --issue --lifetime 1200 --cacert ca.cert.pem --cakey ca.key.pem --dn "C=CN, O=PZYME, CN=YOUR_SERVER_NAME" --san="YOUR_SERVER_IP" --san="YOUR_SERVER_NAME" --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pem
# strongswan pki --gen --outform pem > client.pem
# strongswan pki --pub --in client.pem | strongswan pki --issue --cacert ca.cert.pem --cakey ca.key.pem --dn "C=CN, O=PZYME, CN=PZY VPN CA" --outform pem > client.cert.pem
# openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name "PZYME VPN Client" -certfile ca.cert.pem -caname "YOUR_SERVER_NAME"  -out client.cert.p12

相關說明

C 表示國家名,同樣還有 ST 州/省名,L 地區名,STREET(全大寫) 街道名。O 表示組織名。CN 為通用名
- iOS 客戶端要求 CN 也就是通用名必須是你的服務器的 URL 或 IP 地址;
- Windows 7 不但要求了上面,還要求必須顯式說明這個服務器證書的用途(用於與服務器進行認證),–flag serverAuth;
- 非 iOS 的 Mac OS X 要求了“IP 安全網絡密鑰互換居間(IP Security IKE Intermediate)”這種增強型密鑰用法(EKU),–flag ikdeIntermediate;
- android 和 iOS 都要求服務器別名(serverAltName)就是服務器的 URL 或 IP 地址,–san。

安裝證書

cp -rf ca.cert.pem /etc/strongswan/ipsec.d/cacerts/  
cp -rf server.cert.pem /etc/strongswan/ipsec.d/certs/  
cp -rf server.key.pem /etc/strongswan/ipsec.d/private/  
cp -rf client.cert.pem /etc/strongswan/ipsec.d/certs/  
cp -rf client.pem  /etc/strongswan/ipsec.d/private/  

配置StrongSwan

vim /etc/strongswan/ipsec.conf

# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
config setup  
    uniqueids=never              #允許多個客戶端使用同一個證書,多設備同時在線
#所有項目共用的配置項
conn %default  
    keyexchange=ike              #ikev1 或 ikev2 都用這個
    left=%any                    #服務器端標識,%any表示任意
    leftsubnet=0.0.0.0/0         #服務器端虛擬ip, 0.0.0.0/0表示通配.
    right=%any                   #客戶端標識,%any表示任意
conn IKE-BASE  
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyingtries=1
    leftcert=server.cert.pem     #服務器端證書
    rightsourceip=10.0.0.0/24    #分配給客戶端的虛擬 ip 段
# for IOS9 and Win 7 or later
conn ike2-eap  
    also=IKE-BASE
    keyexchange=ikev2
    ike=aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
    esp=aes256-sha256,aes256-sha1,3des-sha1!
    leftsendcert=always
    leftid=vpn.linsir.org
    leftauth=pubkey
    leftfirewall=yes
    rightauth=eap-mschapv2
    rightsendcert=never
    eap_identity=%any
    rekey=no
    dpdaction=clear
    fragmentation=yes
    auto=add
# for IOS, use PSK key
conn IPSec-IKEv1-PSK  
    also=IKE-BASE
    keyexchange=ikev1
    fragmentation=yes
    leftauth=psk
    rightauth=psk
    rightauth2=xauth
    auto=add
# for andriod 
conn IPSec-xauth  
    also=IKE-BASE
    leftauth=psk
    leftfirewall=yes
    right=%any
    rightauth=psk
    rightauth2=xauth
    auto=add
# for win xp l2tp,use psk
conn L2TP-PSK  
    keyexchange=ikev1
    authby=secret
    leftprotoport=17/1701 #l2tp端口
    leftfirewall=no
    rightprotoport=17/%any
    type=transport
    auto=add

設備/操作系統使用的 ike 版本

* linux: 命令行客戶端就是 strongswan 本身,因此完美兼容,支持 ikev1/ikev2 和所有加密方法的連接。
* Android: 只支持 ikev1(沒有最新andriod手機,可能已經支持ikev2)。
* iOS/Mac OS X: IPsec 客戶端為自己修改的racoon。它只支持 ikev1,最新的IOS 9 Mac OS X 支持ikev2.
* Windows: 只在 Windows 7 以後支持ikev2, Win XP需要用l2tp方式。

vim /etc/strongswan/strongswan.conf

vim /etc/strongswan/strongswan.conf  
# strongswan.conf - strongSwan configuration file
#
# Refer to the strongswan.conf(5) manpage for details
#
# Configuration changes should be made in the included files
charon {  
    load_modular = yes
    duplicheck.enable = no #是為了你能同時連接多個設備,所以要把冗余檢查關閉
    compress = yes
    plugins {
        include strongswan.d/charon/*.conf
    }
    dns1 = 223.5.5.5
    dns2 = 8.8.8.8
    nbns1 = 223.6.6.6
    nbns2 = 8.8.4.4
}
include strongswan.d/*.conf  

/etc/strongswan/ipsec.secrets

: RSA server.key.pem
: PSK "YOUR_SECRET_PSK"
: XAUTH "YOUR_PASSWORD"
test : EAP "123456"  

啟動Strongswan

service strongswan start  

配置轉發及防火墻

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT  
iptables -A FORWARD -s 10.0.0.0/24  -j ACCEPT  
iptables -A INPUT -p esp -j ACCEPT  
iptables -A INPUT -i eth0 -p udp --dport 500 -j ACCEPT  
iptables -A INPUT -i eth0 -p tcp --dport 500 -j ACCEPT  
iptables -A INPUT -i eth0 -p udp --dport 4500 -j ACCEPT  
iptables -A INPUT -p udp --dport 500 -j ACCEPT  
iptables -A INPUT -p udp --dport 4500 -j ACCEPT  
iptables -A FORWARD -j REJECT  
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o enp7s0f0 -j MASQUERADE  

CentOS 網卡名稱eth0,具體根據實際情況來,另外有多網卡的,需要自己根據實際情況來設置iptables轉發規則。

客戶端配置

說明:

  • 如果你希望用戶通過用戶名 + 密碼連接 IKEv2,請將 ca.cert.pem 發送 給客戶並要求客戶安裝證書

  • 如果你希望用戶直接通過證書登陸,請將 client.cert.p12 發送給客戶並要求客戶安裝證書

  • 如果是 iOS,用戶還需要安裝 ca.cert.pem

  • 如果是 OS X,用戶需要設置 CA 根證書為可信

win7+

(1)安裝 CA 根證書,設置為可信

(2)在“安全”中選擇“Microsoft: 安全密碼(EAP-MSCHAP v2)(啟用加密)

(3)嘗試輸入賬號密碼進行 VPN 連接即可。

  • 錯誤提示為 IKE 身份驗證憑證不可接受,該問題通常是由於 CA 根證書未安裝導致,但 CA 根實際上已經安裝。

  • 如果連接成功提示無網絡訪問權限,編輯當前用戶配置 %AppData%\Microsoft\Network\Connections\Pbk\rasphone.pbk, 修改IpPrioritizeRemote=1

OS X

IKEv1

配置位置:系統偏好設置 -> 網絡 -> 新建 -> VPN -> cisco IPsec
服務器地址:在這裏輸入您的服務器地址
賬戶名稱:在這裏輸入用戶名
密碼:在這裏輸入密碼
在鑒定設置 -> 共享的密鑰中輸入在 ipsec.secrets 中設置的 PSK 預共享密碼

IKEv2

配置位置:系統偏好設置 -> 網絡 -> 新建 -> VPN -> IKEv2
服務器地址:在這裏輸入您的服務器地址
遠程地址:在這裏輸入您的服務器地址
在鑒定設置 -> 用戶名中輸入在 ipsec.secrets 中設置的用戶名和密碼(通過用戶名密碼登陸)
在鑒定設置 -> 證書中選擇安裝的客戶端證書(通過客戶端證書登陸)

iOS

首先是導入服務器ca.cert.pem證書,在設置-通用-描述文件中可以查看
類型 IKEv2
服務器是 IP 或都是 URL
遠程ID是 IP 或都是 URL
賬戶和密碼填 ipsec.secrets 裏 EAP 前後的那兩個

Android

配置位置:設置 -> 其它連接方式 -> VPN -> 添加 VPN
名稱:在這裏填寫任意名稱
類型:IPSec Xauth PSK
IPsec 標識符:不更改此項內容
預共享密鑰:在這裏輸入在 ipsec.secrets 中設置的 PSK 預共享密碼

相關資料

https://zh.opensuse.org/index.php?title=SDB:Setup Ipsec VPN with Strongswan&variant=zh


Tags: Windows 服務器 export 客戶端 通用

文章來源:


ads
ads

相關文章
ads

相關文章

ad