使用Strongswan搭建IPSec/IKEv2 ***和window、android、ios、mac如何使用***

  IPSec/IKEv2 ×××搭建和使用 (最下面有一鍵安裝腳本)html

 

本次操做系統環境爲centos6,其餘系統也有介紹linux

1、編譯安裝Strongswanandroid

1,安裝必須的庫
Ubuntu:ios

1git

apt-get install libpam0g-dev libssl-dev make gcc gmp-devel github

 

CentOS:apache

1

vim

yum install pam-devel openssl-devel  make  gcc  gmp-devel wget -ywindows

2,下載strongswan並解壓(*表明當前Strongswan版本號,當前最新版本是5.5.1)centos

1
2
3

wget http://download.strongswan.org/strongswan.tar.gz
tar xzf strongswan.tar.gz
cd strongswan-*

 

3,編譯Strongswan:
XenKVM(實體機、虛擬機)使用如下參數: (如果想自定義路徑則加上 --prefix=/data/server/strongswan)

1
2
3
4
5

./configure  --enable-eap-identity --enable-eap-md5 \
--enable-eap-mschapv2 --enable-eap-tls --enable-eap-ttls --enable-eap-peap \
--enable-eap-tnc --enable-eap-dynamic --enable-eap-radius --enable-xauth-eap \
--enable-xauth-pam  --enable-dhcp  --enable-openssl  --enable-addrblock --enable-unity  \
--enable-certexpire --enable-radattr --enable-tools --enable-openssl --disable-gmp

 

OpenVZvps雲主機)需額外增長一個 enable-kernel-libipsec:

1
2
3
4
5

./configure  --enable-eap-identity --enable-eap-md5 \
--enable-eap-mschapv2 --enable-eap-tls --enable-eap-ttls --enable-eap-peap  \
--enable-eap-tnc --enable-eap-dynamic --enable-eap-radius --enable-xauth-eap  \
--enable-xauth-pam--enable-dhcp--enable-openssl--enable-addrblock --enable-unity\
--enable-certexpire --enable-radattr --enable-tools --enable-openssl --disable-gmp \
--enable-kernel-libipsec

4,編譯並安裝:

1

make && make install

編譯完成後若是沒有報錯,且使用ipsec version指令能出現版本信息,則表示安裝成功

wKioL1ndtZHjhzFBAAB2tJO9KRc623.png

1

創建軟連接:

ln ipsec /sbin/ipsec


 

2、配置證書

1,生成CA證書的私鑰(添加自定義安裝路徑後,這些命令都在自定義的路徑下面)

1

ipsec pki --gen --outform pem > ca.pem

2,自建私鑰,簽名CA證書

1

ipsec pki --self --in ca.pem --dn "C=com, O=my***, CN=××× CA" \
--ca --outform pem >ca.cert.pem

提示:多個vps使用同個CA根證書(客戶端使用一個證書登錄不一樣***:
若是須要多個vps使用同一個CA根證書,則以上兩步只執行一次,以後全部vps都使用上面生成的這兩個ca.pemca.cert.pem文件進行後續的操做.
而後把多臺vps解析到同一個域名的不一樣二級域名下.
這樣客戶端鏈接各個服務器時,只須要客戶端安裝一次根證書ca.cert.pemca.cert.cer)便可.

 

3,生成服務器證書所需的私鑰:

1

ipsec pki --gen --outform pem > server.pem

4,CA證書籤發服務器證書

先肯定你的服務器的IP地址或域名,之後客戶端鏈接時只能使用證書中的IP地址或域名鏈接(多服務器使用相同根證書CA,請先作好服務器的域名解析),
而後將下面命令中的111.111.111.111替換爲本身服務器的IP地址或域名,一共須要替換兩處:

1
2
3
4

ipsec pki --pub --in server.pem | ipsec pki --issue --cacert ca.cert.pem \
--cakey ca.pem --dn "C=com, O=my***, CN=111.111.111.111" \
--san="111.111.111.111" --flag serverAuth --flag ikeIntermediate  \
--outform pem > server.cert.pem

注意以上命令中的」C=」」O=」的值要與第2CA中的C,O的值保持一致.

 

5,生成客戶端證書所需的私鑰:

1

ipsec pki --gen --outform pem > client.pem

6,CA簽名客戶端證書(ca.cert.pem改爲ca.cert.cer後供手機客戶端安裝使用)(C,O的值要與上面第2CA的值一致,CN的值隨意)

1

ipsec pki --pub --in client.pem | ipsec pki --issue --cacert ca.cert.pem \

--cakey ca.pem --dn "C=com, O=my***, CN=××× Client"  \

--outform pem > client.cert.pem

7,生成pkcs12證書(供電腦端安裝使用,輸入的密碼供導入證書時候使用):

1

openssl pkcs12 -export -inkey client.pem -in client.cert.pem \

-name "client" -certfile ca.cert.pem -caname "××× CA"  \

-out client.cert.p12

注意以上命令中的」-caname」後面的引號裏的值必需要與第2CA中的」CN=」的值保持一致.

8,服務端安裝證書:(添加自定義安裝路徑後,這些都在自定義的路徑下面-->/usr/local/改成/data/server/strongswan/

1
2
3
4
5

cp -r ca.cert.pem /usr/local/etc/ipsec.d/cacerts/
cp -r server.cert.pem /usr/local/etc/ipsec.d/certs/
cp -r server.pem /usr/local/etc/ipsec.d/private/
cp -r client.cert.pem /usr/local/etc/ipsec.d/certs/
cp -r client.pem  /usr/local/etc/ipsec.d/private/

 

3、配置Strongswan

1,編輯/usr/local/etc/ipsec.conf文件: (注意下面的ios_ikev2配置項 leftid改成當前實際的服務器的IP地址或域名111.111.111.111)

1

vim /usr/local/etc/ipsec.conf

修改成如下內容:

config setup

    uniqueids=never #多臺設備同時在線

 

conn iOS_cert

    keyexchange=ikev1

    fragmentation=yes

    left=%defaultroute

    leftauth=pubkey

    leftsubnet=0.0.0.0/0

    leftcert=server.cert.pem

    right=%any

    rightauth=pubkey

    rightauth2=xauth

    rightsourceip=10.31.2.0/24

    rightcert=client.cert.pem

    auto=add

 

conn android_xauth_psk

    keyexchange=ikev1

    left=%defaultroute

    leftauth=psk

    leftsubnet=0.0.0.0/0

    right=%any

    rightauth=psk

    rightauth2=xauth

    rightsourceip=10.31.2.0/24

    auto=add

 

conn networkmanager-strongswan

    keyexchange=ikev2

    left=%defaultroute

    leftauth=pubkey

    leftsubnet=0.0.0.0/0

    leftcert=server.cert.pem

    right=%any

    rightauth=pubkey

    rightsourceip=10.31.2.0/24

    rightcert=client.cert.pem

    auto=add

 

conn ios_ikev2

    keyexchange=ikev2

    ike=aes256-sha256-modp2048,3des-sha1-modp2048,aes256-sha1-modp2048!

    esp=aes256-sha256,3des-sha1,aes256-sha1!

    rekey=no

    left=%defaultroute

    leftid="服務器的IP地址或域名"

    leftsendcert=always

    leftsubnet=0.0.0.0/0

    leftcert=server.cert.pem

    right=%any

    rightauth=eap-mschapv2

    rightsourceip=10.31.2.0/24

    rightsendcert=never

    eap_identity=%any

    dpdaction=clear

    fragmentation=yes

    auto=add

 

conn windows7

    keyexchange=ikev2

    ike=aes256-sha1-modp1024!

    rekey=no

    left=%defaultroute

    leftauth=pubkey

    leftsubnet=0.0.0.0/0

    leftcert=server.cert.pem

    right=%any

    rightauth=eap-mschapv2

    rightsourceip=10.31.2.0/24

    rightsendcert=never

    eap_identity=%any

    auto=add

 

2,使用vim編輯/usr/local/etc/strongswan.conf文件:

charon {

load_modular = yes

duplicheck.enable = no

compress = yes

plugins {

                include strongswan.d/charon/*.conf

}

dns1 = 8.8.8.8

dns2 = 8.8.4.4

nbns1 = 8.8.8.8

nbns2 = 8.8.4.4

#下面是配置日誌選項,可不要

filelog {

    /tmp/charon.log {

        # add a timestamp prefix

        time_format = %b %e %T

        # prepend connection name, simplifies grepping

        ike_name = yes

        # overwrite existing files

        append = no

        # increase default loglevel for all daemon subsystems

        default = 1

        # flush each line to disk

        flush_line = yes

    }

}

}

include strongswan.d/*.conf

 

3,配置賬號文件添加帳號,使用vim編輯/usr/local/etc/ipsec.secrets文件(%any表示任意:

: RSA server.pem

: PSK "1234"

: XAUTH "myXAUTHPass"

myUserName %any : EAP "myUserPass"

zhanghao %any : EAP "mima"

將上面的myPSKkey單詞更改成你須要的PSK認證方式的密鑰;
將上面的myXAUTHPass單詞更改成你須要的XAUTH認證方式的密碼,該認證方式的用戶名是隨意的;
將上面的zhanghao改成本身想要的登陸名,mima改成本身想要的密碼,能夠添加多行,獲得多個用戶,這便是使用IKEv2的用戶名+密碼認證方式的登陸憑據.

(添加完用戶後可使用ipsec reload從新加載配置)

 

提示:wp8.1客戶端鏈接的用戶名問題
因爲wp8.1鏈接IKEv2***,默認會加上與手機名稱相同的域,因而鏈接時會顯示用戶名或密碼錯誤.這裏有兩種解決方法:
方法1:將上面/usr/local/etc/ipsec.secrets文件的最後一行改成%any %any : EAP 「mima」 ,這樣就可使用任意用戶名登陸,帶上域也不會出錯.
方法2:FreeRADIUS過濾掉登陸名的域,搜索參考:FreeRADIUS去掉登錄用戶名中的Windows登陸域

 

4、配置防火牆---須要打開udp 4500 500 1701端口

1,編輯/etc/sysctl.conf,將net.ipv4.ip_forward=1一行前面的#號去掉或添加這一行(不然Ikev2 ***鏈接上後將沒法訪問外網),保存後執行sysctl -p(若是執行後有報錯的,從新打開sysctl.conf將報錯的部分#註釋掉保存,直到執行sysctl -p再也不報錯爲止)

wKioL1ndtb6SZXXIAADnvCAjukw610.png

spacer.gif

2,配置iptables:(注意網卡名)
OpenVZvps雲主機)執行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.31.0.0/24  -j ACCEPT
iptables -A FORWARD -s 10.31.1.0/24  -j ACCEPT
iptables -A FORWARD -s 10.31.2.0/24  -j ACCEPT
iptables -A INPUT -i venet0 -p esp -j ACCEPT
iptables -A INPUT -i venet0 -p udp --dport 500 -j ACCEPT
iptables -A INPUT -i venet0 -p tcp --dport 500 -j ACCEPT
iptables -A INPUT -i venet0 -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -i venet0 -p udp --dport 1701 -j ACCEPT
iptables -A INPUT -i venet0 -p tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o venet0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o venet0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o venet0 -j MASQUERADE

PS:若是VPS static IP (固定ip,將上述防火牆規則的最後3NAT規則替換爲如下3條來提高處理效率:

1
2
3

iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o venet0 -j SNAT --to-source固定ip
iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o venet0 -j SNAT --to-source固定ip
iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o venet0 -j SNAT --to-source固定ip

注意將上述3條規則的ELASTIC_IP替換爲vps的靜態ip地址.

 

XenKVM(實體機、虛擬主機)則執行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.31.0.0/24  -j ACCEPT
iptables -A FORWARD -s 10.31.1.0/24  -j ACCEPT
iptables -A FORWARD -s 10.31.2.0/24  -j ACCEPT
iptables -A INPUT -i eth0 -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 -i eth0 -p udp --dport 1701 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o eth0 -j MASQUERADE


 

3,開機自動載入iptables***:
Ubuntu:

1
2
3
4
5
6

iptables-save > /etc/iptables.rules
cat > /etc/network/if-up.d/iptables<<EOF
#!/bin/sh
iptables-restore < /etc/iptables.rules
EOF
chmod +x /etc/network/if-up.d/iptables

CentOS:

1

2

3

service iptables save

chkconfig iptables on

echo "/usr/local/sbin/ipsec start" >> /etc/rc.local

 

至此,IPSec/IKEv2 ×××便搭建好了,啓用服務就可使用:

1

ipsec start

 

ipsec經常使用指令:

ipsec start   #啓動服務

ipsec stop    #關閉服務

ipsec restart  重啓服務

ipsec reload  #從新讀取

ipsec status  #查看狀態

ipsec --help  #查看幫助

 

4,搭建httpd便於客戶端下載證書

安裝apache

yum install httpd –y

 

配置apache登陸用戶:

htpasswd -c -b /etc/httpd/htpasdb  zhanghao mima

 

apache配置文件/etc/httpd/conf/httpd.conf最後追加:

<directory />

options indexes

AuthType Basic

AuthName "!!!"

AuthBasicProvider file

AuthUserFile /etc/httpd/htpasdb

Require user zhanghao

</directory>

 

拷貝客戶端證書:

mkdir /var/www/html/key

cp -p ca.cert.pem  /var/www/html/key/

cp -p client.cert.p12  /var/www/html/key/

重啓服務,service httpd restart

而後就能夠在客戶端訪問:http://ip/key 下載證書。



                          使用教程

Iphone

1.打開Safari訪問http://ip/key下載安裝證書:

spacer.gifwKioL1ndtd7RKZYpAADFNQsyovA475.png

2.安裝:

spacer.gifwKioL1ndteyxIE95AACEEA3IGr0025.png

 

3.配置***

打開設置-通用-×××,點擊添加×××配置

而後:

描述填隨意、服務器填搭建的***服務器ip、遠程ip填搭建的***服務器ip、鑑定裏用戶鑑定選擇用戶名、填上/usr/local/etc/ipsec.secrets下面的zhanghao mima

spacer.gifwKioL1ndthDipDgMAAA9cLllh3w287.png

完成後就能夠鏈接了。

 

 

Android

1.安裝證書,點擊下載證書:

wKioL1ndth7jdebbAAGELdelqhA446.png

 

2.       配置***,打開設置-更多-×××,點擊添加,注意類型選擇IPsec Xauth PSK

wKiom1neJULglFpsAAGGdSWX6So404.png

 

名稱自取,服務器地址填***ipIPsec標識符不填,IPSec域共享密鑰填寫/usr/local/etc/ipsec.secrets配置文件裏的PSK值,其餘的不填

spacer.gifwKioL1ndtkvjAOKMAAA1MUMH8HU426.png


 wKioL1ndtlqT4PvUAAEgy4bkDOw596.png 

保存後,點擊鏈接時輸入/usr/local/etc/ipsec.secrets 最下方配置的zhanghao mima

 

 

Windows

1.下載安裝證書:

wKioL1ndtmyCEzdcAAB7sAG1wvk814.png

點擊下載client.cert.p12 (下載ca.cert.cer也能夠而且不用輸入證書密碼)

 

  1. 2.導入證書:

打開運行,輸入mmc打開

wKioL1ndtnzjHEx1AAA7JA-q1NE759.png

 

點擊文件,選擇「添加/刪除管理單元」,選擇證書,添加,選擇「計算機用戶」,下一步,肯定;

wKiom1neJZ2SiD4VAABsxo2bPow569.png

wKiom1neJZ3R_CcvAAClUJL6TqY481.png

 

打開證書-受信任的根證書頒發機構-證書,郵件證書,選擇全部任務-導入,選擇下載的證書client.cert.p12,輸入證書密碼。

 

  1. 3.創建鏈接

打開「網絡和共享中心」,點擊設置新的鏈接或網絡,選擇鏈接到工做區,建立新的鏈接,使用個人Internet鏈接(×××),輸入***服務器ip,建立:

wKioL1ndtrix7FznAACxMMWdyk0832.png

wKiom1neJcbCaWEPAABMlG43Qdk493.png

wKioL1ndtrjCxWGOAABqbAR_7uc284.png

wKiom1neJcagLmF_AABImkSHFOs896.png

wKioL1ndtrnyInHaAACVpWs152o117.png

 

4.鏈接:

打開「網絡和共享中心」,點擊更改適配器設置,右鍵剛創建的***鏈接,打開屬性,打開安全,選擇IKEv2,身份驗證選擇可擴展。。,點擊肯定保存,右鍵***鏈接選擇鏈接即可以連上***了。

spacer.gif

wKiom1neJfPRnqPAAACuoaATH9I304.png

wKioL1ndtuWAF2gVAACq4WWDnGw635.png

wKiom1neJfOgo8nrAABlLEH3b4Q683.png 



MAC

1.       下載安裝證書,同上面幾個客戶端同樣下載安裝證書(雙擊證書,選擇裝到系統)

注意:添加完證書後,須要打開密鑰管理將剛纔添加的證書加到信任:

wKiom1neJhLAKbe7AAJHdUOXmzs881.png

雙擊打開,改成始終信任:

wKiom1neJiKiu3TwAAJVgvXxV_A654.png

wKioL1ndtyjhGqJYAAEas1c-Zb4584.png

 

2.建立***網絡:


打開網絡偏好設置


wKioL1ndtz_AhAmrAAFGZbtfMZs589.png

添加網絡,選擇IKEv2

wKiom1neJluTDV3UAALvC4B2mHo662.png

服務器地址填***服務器地址,帳戶名稱和密碼填寫/usr/local/etc/ipsec.secrets 下方加的zhanghao mima

 

或者添加網絡,選擇cisco IPSec

wKiom1neJnXSjsC4AAM847GRjKY643.png

 

服務器地址填***服務器地址,帳戶名稱和密碼填寫/usr/local/etc/ipsec.secrets 下方加的zhanghao mima,打開鑑定設置共享密鑰填寫PSK。其餘不填:

wKioL1ndt3bTvSHNAAVMjV6k2PY972.png

這樣就能夠鏈接了。

 

                     一鍵安裝腳本:

1. 上傳腳本和安裝包到服務器同目錄

2. 修改權限,運行腳本:

chmod +x one-key-ikev2.sh

bash one-key-ikev2.sh

3.根據圖片內容選擇:

spacer.gifwKiom1neJpzhkAXBAADmuUYFNFY061.png

注意:

1./etc/issue文件內容要正確腳本是經過此文件判斷linux版本

spacer.gifwKioL1ndt6GiuooxAAAvbBeg80Q955.png

2.如果服務器在國外,能夠不用上傳安裝包到服務器,打開腳本219-223行(因爲國內網絡差因此提早下載好安裝包上傳至服務器)

3.最後的證書在my_key目錄下

 

strongswan安裝包和一鍵安裝腳本下載連接:http://down.51cto.com/data/2269048



文章參考:

https://zh.opensuse.org/SDB:Setup_Ipsec_×××_with_Strongswan

https://github.com/quericy/one-key-ikev2-***

相關文章
相關標籤/搜索