IPSec/IKEv2 ×××搭建和使用 (最下面有一键安装脚本)
本次操作系统环境为centos6,其他系统也有介绍
一、编译安装Strongswan
1,安装必须的库
Ubuntu:
1 | apt-get install libpam0g-dev libssl-dev make gcc gmp-devel |
CentOS:
1 | yum install pam-devel openssl-devel make gcc gmp-devel wget -y |
2,下载strongswan并解压(*代表当前Strongswan版本号,当前最新版本是5.5.1)
1 | wget http://download.strongswan.org/strongswan.tar.gz |
3,编译Strongswan:
Xen、KVM(实体机、虚拟机)使用以下参数: (若是想自定义路径则加上 --prefix=/data/server/strongswan)
1 | ./configure --enable-eap-identity --enable-eap-md5 \ |
OpenVZ(vps云主机)需额外增加一个 enable-kernel-libipsec:
1 | ./configure --enable-eap-identity --enable-eap-md5 \ |
4,编译并安装:
1 | make && make install |
编译完成后如果没有报错,且使用ipsec version指令能出现版本信息,则表示安装成功
1 | 建立软链接: ln ipsec /sbin/ipsec |
二、配置证书
1,生成CA证书的私钥(添加自定义安装路径后,这些命令都在自定义的路径下面)
1 | ipsec pki --gen --outform pem > ca.pem |
2,自建私钥,签名CA证书
1 | ipsec pki --self --in ca.pem --dn "C=com, O=myvpn, CN=××× CA" \ |
提示:多个vps使用同个CA根证书(客户端使用一个证书登陆不同vpn):
如果需要多个vps使用同一个CA根证书,则以上两步只执行一次,之后所有vps都使用上面生成的这两个ca.pem和ca.cert.pem文件进行后续的操作.
然后把多台vps解析到同一个域名的不同二级域名下.
这样客户端连接各个服务器时,只需要客户端安装一次根证书ca.cert.pem(ca.cert.cer)即可.
3,生成服务器证书所需的私钥:
1 | ipsec pki --gen --outform pem > server.pem |
4,用CA证书签发服务器证书
先确定你的服务器的IP地址或域名,以后客户端连接时只能使用证书中的IP地址或域名连接(多服务器使用相同根证书CA的,请先做好服务器的域名解析),
然后将下面命令中的111.111.111.111替换为自己服务器的IP地址或域名,一共需要替换两处:
1 | ipsec pki --pub --in server.pem | ipsec pki --issue --cacert ca.cert.pem \ |
注意以上命令中的”C=”和”O=”的值要与第2步CA中的C,O的值保持一致.
5,生成客户端证书所需的私钥:
1 | ipsec pki --gen --outform pem > client.pem |
6,用CA签名客户端证书(将ca.cert.pem改成ca.cert.cer后供手机客户端安装使用)(C,O的值要与上面第2步CA的值一致,CN的值随意)
1 | ipsec pki --pub --in client.pem | ipsec pki --issue --cacert ca.cert.pem \ --cakey ca.pem --dn "C=com, O=myvpn, 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”后面的引号里的值必须要与第2步CA中的”CN=”的值保持一致.
8,服务端安装证书:(添加自定义安装路径后,这些都在自定义的路径下面-->/usr/local/改为/data/server/strongswan/)
1 | cp -r ca.cert.pem /usr/local/etc/ipsec.d/cacerts/ |
三、配置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的vpn时,默认会加上与手机名称相同的域,于是连接时会显示用户名或密码错误.这里有两种解决方法:
方法1:将上面/usr/local/etc/ipsec.secrets文件的最后一行改为%any %any : EAP “mima” ,这样就可以使用任意用户名登录,带上域也不会出错.
方法2:用FreeRADIUS过滤掉登录名的域,搜索参考: 让FreeRADIUS去掉登陆用户名中的Windows登录域
四、配置防火墙---需要打开udp 4500 500 1701端口
1,编辑/etc/sysctl.conf,将net.ipv4.ip_forward=1一行前面的#号去掉或添加这一行(否则Ikev2 vpn连接上后将无法访问外网),保存后执行sysctl -p(如果执行后有报错的,重新打开sysctl.conf将报错的部分#注释掉保存,直到执行sysctl -p不再报错为止)。
2,配置iptables:(注意网卡名)
OpenVZ(vps云主机)执行:
1 | iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT |
PS:如果VPS有 static IP (固定ip),将上述防火墙规则的最后3条NAT规则替换为以下3条来提升处理效率:
1 | iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o venet0 -j SNAT --to-source固定ip |
注意将上述3条规则的ELASTIC_IP替换为vps的静态ip地址.
Xen、KVM(实体机、虚拟主机)则执行:
1 | iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT |
3,开机自动载入iptables和vpn:
Ubuntu:
1 | iptables-save > /etc/iptables.rules |
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下载安装证书:
2.安装:
3.配置vpn:
打开设置-通用-×××,点击添加×××配置
然后:
描述填随意、服务器填搭建的vpn服务器ip、远程ip填搭建的vpn服务器ip、鉴定里用户鉴定选择用户名、填上/usr/local/etc/ipsec.secrets下面的zhanghao mima
完成后就可以连接了。
1.安装证书,点击下载证书:
2. 配置vpn,打开设置-更多-×××,点击添加,注意类型选择IPsec Xauth PSK
名称自取,服务器地址填vpn的ip,IPsec标识符不填,IPSec域共享密钥填写/usr/local/etc/ipsec.secrets配置文件里的PSK值,其他的不填
保存后,点击连接时输入/usr/local/etc/ipsec.secrets 最下方配置的zhanghao mima
Windows:
1.下载安装证书:
点击下载 client.cert.p12 (下载ca.cert.cer也可以并且不用输入证书密码)
2.导入证书:
打开运行,输入mmc打开
点击文件,选择“添加/删除管理单元”,选择证书,添加,选择“计算机用户”,下一步,确定;
打开证书-受信任的根证书颁发机构-证书,邮件证书,选择所有任务-导入,选择下载的证书client.cert.p12,输入证书密码。
3.建立连接
打开“网络和共享中心”,点击设置新的连接或网络,选择连接到工作区,创建新的连接,使用我的Internet连接(×××),输入vpn服务器ip,创建:
4.连接:
打开“网络和共享中心”,点击更改适配器设置,右键刚建立的vpn连接,打开属性,打开安全,选择IKEv2,身份验证选择可扩展。。,点击确定保存,右键vpn连接选择连接便可以连上vpn了。
MAC
1. 下载安装证书,同上面几个客户端一样下载安装证书(双击证书,选择装到系统)
注意:添加完证书后,需要打开密钥管理将刚才添加的证书加到信任:
双击打开,改为始终信任:
2.创建vpn网络:
打开网络偏好设置
添加网络,选择IKEv2:
服务器地址填vpn服务器地址,账户名称和密码填写/usr/local/etc/ipsec.secrets 下方加的zhanghao mima
或者添加网络,选择cisco IPSec:
服务器地址填vpn服务器地址,账户名称和密码填写/usr/local/etc/ipsec.secrets 下方加的zhanghao mima,打开鉴定设置共享密钥填写PSK。其他不填:
这样就可以连接了。
一键安装脚本:
1. 上传脚本和安装包到服务器同目录
2. 修改权限,运行脚本:
chmod +x one-key-ikev2.sh
bash one-key-ikev2.sh
3.根据图片内容选择:
注意:
1./etc/issue文件内容要正确脚本是通过此文件判断linux版本
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-vpn
没有pptp和l2tp,1701和1723, andorid6,可以连上,但是上不了网
单独测试过,udp4500 500 1701必须开,不然会有问题。上不了网看是否是/etc/sysctl.conf或者iptables写错了(比如nat表的网卡等)写错了
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8955.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~