linux上用strongswan搭建ikev2协议vpn

    技术教程 vpnxxw 来源:GitHub 728次浏览 0个评论 扫描二维码

    测试平台DigitalOcean VPS ubuntu14.04 x64, strongswan5.2.2

    运行以下命令请使用root权限

    一:安装strongswan

    由于ubuntu软件仓库中strongswan版本较低,因此从官网源码编译安装

    apt-get install build-essential     #编译环境
    aptitude install libgmp10 libgmp3-dev libssl-dev pkg-config libpcsclite-dev libpam0g-dev     #编译所需要的软件

    strongswan官网 http://www.strongswan.org/

    5.2.2版本地址 http://download.strongswan.org/strongswan-5.2.2.tar.bz2

    注:对于更新的版本,不排除该教程某些地方有失效的可能,请灵活处理

    wget http://download.strongswan.org/strongswan-5.2.2.tar.bz2
    tar -jxvf strongswan-5.2.2.tar.bz2 && cd strongswan-5.2.2
    ./configure --prefix=/usr --sysconfdir=/etc  --enable-openssl --enable-nat-transport --disable-mysql --disable-ldap  --disable-static --enable-shared --enable-md4 --enable-eap-mschapv2 --enable-eap-aka --enable-eap-aka-3gpp2  --enable-eap-gtc --enable-eap-identity --enable-eap-md5 --enable-eap-peap --enable-eap-radius --enable-eap-sim --enable-eap-sim-file --enable-eap-simaka-pseudonym --enable-eap-simaka-reauth --enable-eap-simaka-sql --enable-eap-tls --enable-eap-tnc --enable-eap-ttls
    make && make install

    二:生成、安装证书

    win7+和Android、wp8.1等平台的VPN客户端走ikev2协议,需要制作相应的证书

    1.先生成根证书

    ipsec pki --gen --outform pem > caKey.pem
    ipsec pki --self --in caKey.pem --dn "C=CN, O=strongSwan, CN=strongSwan CA" --ca --outform pem > caCert.pem

    2.然后是服务器端的证书

    ipsec pki --gen --outform pem > serverKey.pem
    ipsec pki --pub --in serverKey.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CN, O=strongSwan, CN=VPS的公网ip或域名" --san="VPS的公网ip或域名" --flag serverAuth --flag ikeIntermediate --outform pem > serverCert.pem

    3.客户端的证书

    ipsec pki --gen --outform pem > clientKey.pem
    ipsec pki --pub --in clientKey.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CN, O=strongSwan, CN=client" --outform pem > clientCert.pem

    生成的客户端证书 clientCert.pem 不能直接导入到win7+或Anroid设备中,需先转换为.p12格式。执行后会提示要设置证书使用密码,可以设置一下密码也可以直接回车(密码为空)。

    openssl pkcs12 -export -inkey clientKey.pem -in clientCert.pem -name "client" -certfile caCert.pem -caname "strongSwan CA" -out clientCert.p12

    4.安装证书

    cp caCert.pem /etc/ipsec.d/cacerts/
    cp serverCert.pem /etc/ipsec.d/certs/
    cp serverKey.pem /etc/ipsec.d/private/

    客户端安装caCert.pem与clientCert.pem(clientCert.p12),下载文件可使用ftp软件,或使用cat caCert.pemcat clientCert.pem命令,将打印出的内容直接复制到本地即可。

    三:配置strongswan

    1: /etc/ipsec.conf

    config setup
        strictcrlpolicy=no
        uniqueids=no #允许多设备同时在线
    conn windowsphone
        keyexchange=ikev2
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        dpdaction=clear
        dpddelay=300s
        rekey=no
        left=%defaultroute
        leftsubnet=0.0.0.0/0
        leftauth=pubkey
        leftcert=serverCert.pem
        leftid="C=CN, O=strongSwan, CN=X.X.X.X" #C=国家,CN=自己vps的公网ip
        right=%any
        rightsourceip=10.11.1.0/24 #为客户端分配的虚拟地址池
        rightauth=eap-mschapv2
        rightsendcert=never
        eap_identity=%any
        auto=add
    

    2: /etc/ipsec.secrets

    : RSA serverKey.pem
    用户名1 : EAP "密码1" #win7+
    wp设备名称\用户名2 : EAP "密码2"  #仅对windowsphone8.1设备
    

    对于windowsphone8.1,在客户端输入的用户名发送到服务器显示为设备名称\用户名的形式,故认证需加上设备名称,设备名称在设置-关于-手机信息 中查看

    3: /etc/strongswan.conf

    #加入分配的dns
    charon {
        dns1 = 8.8.8.8
        dns2 = 208.67.222.222
    }
    

    四:配置 Iptables 转发

    iptables -A INPUT -p udp --dport 500 -j ACCEPT
    iptables -A INPUT -p udp --dport 4500 -j ACCEPT
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 10.11.1.0/24 -o eth0 -j MASQUERADE  #地址与上面地址池对应
    iptables -A FORWARD -s 10.11.1.0/24 -j ACCEPT     #同上
    #为避免VPS重启后NAT功能失效,可以把如上5行命令添加到 /etc/rc.local 文件中,添加在exit那一行之前即可。

    五:启动strongswan:

    后台运行:

    ipsec start

    滚动日志:

    ipsec start --nofork

    参考链接:

    anyShare分享到:

    VPN信息网 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明-VPN信息网-linux上用strongswan搭建ikev2协议vpn
    喜欢 (0)
    发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址