使用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-***

相关文章
相关标签/搜索