树莓派系列(十二):树莓派VPN代理之搭建IKEv2服务器

2016-11-29 浏览:2292
树莓派系列(十二):树莓派VPN代理之搭建IKEv2服务器
评论:(0)复制地址

最近需要用到手机连接到家里的网络,由于IOS升级到10后不再对PPTP支持,所以只能重建VPN服务端了,之前搭建了L2TP但不知道是什么缘由在家能成功连接,端口也转发了,在外死活连不上,搁置了一段时间。前两天想着会不会是运营商那边的问题,索性先换个在试试吧。


服务端:

1、安装strongSwan及相关插件

$ apt-get install strongswan libcharon-extra-plugins


2、生成相关证书( 根据需要更改国家(C),组织(O)和公用名(CN)。)

a) CA证书

$ cd /etc/ipsec.d/
$ ipsec pki --gen --type rsa --size 4096 --outform pem \
    > private/strongswan-key.pem
$ chmod 600 private/strongswan-key.pem
$ ipsec pki --self --ca \
    --lifetime 3650 \
    --in private/strongswan-key.pem \
    --type rsa \
    --dn "C=NZ, O=Example, CN=Example Root CA" \
    --outform pem \
    > cacerts/strongswan-certificate.pem


b) VPN 主机证书

$ cd /etc/ipsec.d/
$ ipsec pki --gen --type rsa --size 2048 --outform pem \
    > private/vpn-host-key.pem
$ chmod 600 private/vpn-host-key.pem
$ ipsec pki --pub --in private/vpn-host-key.pem --type rsa | \
    ipsec pki --issue --lifetime 730 \
    --cacert cacerts/strongswan-certificate.pem \
    --cakey private/strongswan-key.pem \
    --dn "C=NZ, O=Example, CN=vpn.example.com" \
    --san "vpn.example.com" \
    --flag serverAuth --flag ikeIntermediate \
    --outform pem > certs/vpn-host-certificate.pem


c) 客户端证书

$ cd /etc/ipsec.d/
$ ipsec pki --gen --type rsa --size 2048 --outform pem \
    > private/jason-key.pem
$ chmod 600 private/jason-key.pem
$ ipsec pki --pub --in private/jason-key.pem --type rsa | \
    ipsec pki --issue --lifetime 730 \
    --cacert cacerts/strongswan-certificate.pem \
    --cakey private/strongswan-key.pem \
    --dn "C=NZ, O=Example, [email protected]" \
    --san "[email protected]" \
    --outform pem > certs/jason-certificate.pem


d) 导出客户端证书(导出时需要设置个密码,记住这个密码,客户端安装证书时用的)

$ cd /etc/ipsec.d/
$ openssl pkcs12 -export -inkey private/jason-key.pem \
    -in certs/jason-certificate.pem \
    -name "Jason's VPN Certificate" \
    -certfile cacerts/strongswan-certificate.pem \
    -caname "Example Root CA" \
    -out certs/jason.p12


e)为了方便拷贝到客户端,先把用到的两个证书拷贝到主目录

$ cp /etc/ipsec.d/cacerts/strongswan-certificate.pem /home/pi
$ cp /etc/ipsec.d/certs/jason.p12 /home/pi


f)现在应该有以下六个证书文件:

/etc/ipsec.d/private/strongswan-key.pem         # CA private key
/etc/ipsec.d/cacerts/strongswan-certificate.pem # CA certificate
/etc/ipsec.d/private/vpn-host-key.pem           # VPN host private key
/etc/ipsec.d/certs/vpn-host-certificate.pem     # VPN host certificate
/etc/ipsec.d/private/jason-key.pem              # Client "Jason" private key
/etc/ipsec.d/certs/jason-certificate.pem        # Client "Jason" certificate


3、配置strongSwan

$ nano /etc/ipsec.conf

清空里面已有配置内容,替换成以下配置内容:

# ipsec.conf - strongSwan IPsec configuration file
config setup
charondebug="cfg 2, dmn 2, ike 2, net 2"
conn %default
	keyexchange=ikev2
	leftauth=pubkey
	left=%any
	leftid=vpn.example.com
	leftcert=vpn-host-certificate.pem
	leftsendcert=always
	leftsubnet=0.0.0.0/0
	right=%any
	rightsourceip=10.0.0.0/24
	rightdns=8.8.8.8,8.8.4.4
	dpdaction=clear
conn iOS
	[email protected]
	rightcert=jason-certificate.pem
	auto=add
conn windows7
	keyexchange=ikev2
	ike=aes256-sha1-modp1024!  # windows7的ikev2指定了DH group必须是modp1024
	leftid=vpn.example.com     # 服务器证书中指定的域名或者IP地址
	rekey=no
	left=%defaultroute         # 通告默认路由,作为网关
	leftauth=pubkey
	leftsubnet=0.0.0.0/0
	leftcert=vpn-host-certificate.pem
	right=%any
	rightauth=eap-mschapv2
	rightsourceip=10.8.0.0/24  # 分配给客户端ip的子网范围
	rightsendcert=never
	eap_identity=%any
	auto=add
include /var/lib/strongswan/ipsec.conf.inc

配置证书及账号密码

$ nano /etc/ipsec.secrets
# This file holds shared secrets or RSA private keys for authentication.
# RSA private key for this host, authenticating it to any other host
# which knows the public part.
# this file is managed with debconf and will contain the automatically created $
include /var/lib/strongswan/ipsec.secrets.inc
: RSA vpn-host-key.pem
ThisIsYourUserName : EAP "ThisIsYourPasswd"
$ ipsec rereadsecrets


4、配置转发

$ nano /etc/sysctl.conf

修改或添加以下内容

net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

立即生效

$ sysctl -p


5、配置防火墙(在此之前最好重启一下系统)

$ iptables -t nat -A POSTROUTING -o eth0 ! -p esp -j SNAT --to-source 192.168.1.3
$ iptables -A INPUT -p udp --dport 500 -j ACCEPT
$ iptables -A INPUT -p udp --dport 4500 -j ACCEPT
$ iptables -A INPUT -p esp -j ACCEPT
$ iptables-save > /etc/iptables.conf
$ echo "post-up iptables-restore < /etc/iptables.conf" >> /etc/network/interfaces

记得在路由器上转发UDP端口500和4500。


重启strongSwan

$ service ipsec restart

服务端搞定。


客户端:

iPhone 6s(IOS10.1.1):

    1、将之前放入主目录的两个文件发送到手机上(可以用邮件,也可以用网盘)

    2、先打开strongswan-certificate.pem按提示安装,然后打开jason.p12按提示安装(密码就是之前让你记住的那个)

    3、打开手机  设置>通用>VPN>添加VPN配置

    4、类型选IKEv2,服务器填你服务端外网IP或者已解析的域名,远程ID:vpn.example.com,本地ID: [email protected]

    5、用户鉴定选用户名,用户名密码就是ipsec.secrets里面设置的。


windows 7:

    1、导入证书:

        开始菜单搜索“cmd”,打开后输入 mmc(Microsoft 管理控制台);

        “文件”-“添加/删除管理单元”,添加“证书”单元;

        证书单元的弹出窗口中一定要选“计算机账户”,之后选“本地计算机”,确定;

        在左边的“控制台根节点”下选择“证书”-“个人”,然后选右边的“更多操作”-“所有任务”-“导入”打开证书导入窗口;

        选择刚才生成的 clientCert.p12 文件。下一步输入私钥密码。下一步“证书存储”选“个人”;

        导入成功后,把导入的 CA 证书剪切到“受信任的根证书颁发机构”的证书文件夹里面;

        打开剩下的那个私人证书,看一下有没有显示“您有一个与该证书对应的私钥”,以及“证书路径”下面是不是显示“该证书没有问题”;

        然后关闭 mmc,提示“将控制台设置存入控制台1吗”,选“否”即可;

        至此,证书导入完成。

        千万不要双击 .p12 证书导入!因为那样会导入到当前用户而不是本机计算机中,ipsec是访问不了它的。

        否则会出现错误 13801:IKE身份验证凭证不可接受

    2、建立连接:

        “控制面板”-“网络和共享中心”-“设置新的连接或网络”-“连接到工作区”-“使用我的 Internet 连接”;

        Internet 地址写服务器地址或域名;

        描述随便写;

        用户名密码写之前配置的 EAP 的那个;

        确定;

        点击右下角网络图标,在新建的 VPN 连接上右键属性然后切换到“安全”选项卡;

        VPN 类型选 IKEv2;

        数据加密是“需要加密”;

        身份认证这里需要说一下,如果想要使用 EAP-MSCHAPV2 的话就选择“使用可扩展的身份认证协议”-“Microsoft 安全密码(EAP-MSCHAP v2)”,想要使用私人证书认证的话就选择“使用计算机证书”。



参考地址:

https://digitalrizzle.wordpress.com/2015/12/06/vpn-server-on-raspbian-jessie-for-ios-9-and-os-x-el-capitan-clients-part-2/

http://tyr.gift/ipsec.html

评论:(0)复制地址
发布:zpblog | 分类:Raspberry Pi | Tags:树莓派 raspberry pi vpn

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。