blogger

    blogger
  • hot log

  • comment

    twitter

    • 12.10.xC6出来时候碰到"Could not determine encryption mode from page zero",竟果然是BUG!http://www-01.ibm.com/support/docview.wss?rs=630&uid=swg21973408

      2015-12-21 20:15

    • 空间已经转移到新加坡,希望会好一些。

      2015-11-16 14:34

    • 增加新域名liaosnet.cc,与liaosnet.com同指向。

      2015-10-09 15:25

    • 空间迁移到香港。或许速度会快一点。。

      2014-02-13 20:10

    • 解决个问题:NBU配置Storage时的目录在系统分区上,导致备份失败,最终原因是目录在系统分区上时,需要在 This directory can exist on the root file system or system disk. 这个选项前打上勾。

      2012-09-26 22:21

    • More»

    blog sort

    links

    record

    banner

    Linux下OPENVPN的安装配置

    暗夜星空's Memory from Sep 23 , 2012 at 22:23 PM , under Category:Unix/Linux
    环境需求:
    OPENVPN-2.2.2(服务端):
         http://swupdate.openvpn.org/community/releases/openvpn-2.2.2.tar.gz
    OPENVPN-2.0.9-GUI(Windows客户端):
         http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe
    操作系统版本:CentOS 6.3
    额外软件包需求:
        lzo lzo-devel openssl openssl-devel pam pam-devel (可直接yum install)
        pkcs11-helper pkcs11-helper-devel (需要在rpmfind.net上查找并下载)
    额外的软件包检查结果
    [root@liaosnet ~]# rpm -qa lzo lzo-devel openssl openssl-devel pam pam-devel \
                       pkcs11-helper pkcs11-helper-devel
    pam-devel-1.1.1-10.el6_2.1.i686
    pkcs11-helper-devel-1.08-1.el6.rf.i686
    pam-1.1.1-10.el6_2.1.i686
    lzo-2.03-3.1.el6.i686
    lzo-devel-2.03-3.1.el6.i686
    openssl-1.0.0-25.el6_3.1.i686
    openssl-devel-1.0.0-25.el6_3.1.i686
    pkcs11-helper-1.08-1.el6.rf.i686

    1、使用RPMBUILD创建.rpm并安装openvpn
        [root@liaosnet ~]# rpmbuild -tb openvpn-2.2.2.tar.gz
        经过编译后,提示在/root/rpmbuild/RPMS/i386/ 目录下生成openvpn-2.2.2-1.i386.rpm,即可按正常的.rpm的安装方式安装openvpn,也可于用相同系统下的安装。
        [root@liaosnet i386]# rpm -ivh openvpn-2.2.2-1.i386.rpm 
        Preparing...                ########################################### [100%]
        1:openvpn                ########################################### [100%]

    2、配置openvpn服务(服务端)
        新安装的openvpn可通过chkconfig --list openvpn 看到服务已经加入到init.d里,但由于尚未进行任何配置,是无法正常工作的。
        1) 初始化PKI(Public Key Infrastructure)
            在/usr/share/doc/openvpn-2.2.2/easy-rsa/2.0目录下,修改默认的变量vars
            [root@liaosnet.com 2.0] vi vars
            修改最后的几行的export的值自定义的值
            export KEY_COUNTRY="CN"
            export KEY_PROVINCE="GD"
            export KEY_CITY="GuangZhou"
            export KEY_ORG="NetSky Studio"
            export KEY_EMAIL="liaosnet@liaosnet.com"
            export KEY_EMAIL=liaosnet@liaosnet.com
            export KEY_CN=liaosnet
            export KEY_NAME=liaosnet
            export KEY_OU=liaosnet
            export PKCS11_MODULE_PATH=liaosnet
            export PKCS11_PIN=1234

            [root@liaosnet 2.0]# . vars
            **************************************************************
            No /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/openssl.cnf file could be found
            Further invocations will fail
            **************************************************************
            NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys
            使用当前变量生效(. vars),若出现提示的找不到openssl.cnf,直接做个链接到openssl-1.0.0.cnf,再试即可。
            [root@liaosnet 2.0]# ln -s openssl-1.0.0.cnf openssl.cnf
            [root@liaosnet 2.0]# . vars
            NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys

            清除之前的keys
            [root@liaosnet 2.0]# ./clean-all

        2) 创建私钥(ca private key)
            [root@liaosnet 2.0]# ./build-ca
            由于刚配置了默认变量,故一路回车下去即可

    点击查看原图

            完成后,在keys目录下生成1024位RSA私钥ca.key和ca.crt 两个文件

     

        3) 创建服务器密钥(server key)

            [root@liaosnet 2.0]# ./build-key-server server

    点击查看原图

            完成后,在keys目录下生成1024位RSA服务器密钥server.key、server.crt和server.csr 三个文件

     

        4) 创建用户密钥(user private key)

            [root@liaosnet 2.0]# ./build-key user1

    点击查看原图

            创建用户私钥的过程与服务器密钥的过程类似。完成后,在keys目录下生成1024位RSA服务器密钥user1.key、user1.crt和user1.csr 三个文件

            若要建立多个用户私钥,以不用的用户名build-key USERNAM,生成多个用户密钥。

     

        5) 生成Diffie Hellman参数

            [root@liaosnet 2.0]# ./build-dh

            Generating DH parameters, 1024 bit long safe prime, generator 2

            This is going to take a long time

     

            完成后,在keys目录下生成dh参数文件dh1024.pem

     

      将/usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys 目录下的所有文件复制到/etc/openvpn下

      [root@liaosnet ~] cp /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys/* /etc/openvpn/

     

        6) 创建服务端配置文件server.conf

            将/usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf复制到/etc/openvpn/目录下server.conf并修改以下参数

            [root@liaosnet openvpn]# vi server.conf

                # TCP or UDP server?

                proto tcp

                ;proto udp

            用分号注释proto udp,去掉proto tcp的分号注释,即使用tcp方式连接

                ;server 10.8.0.0 255.255.0.0

                server 192.168.18.0 255.255.255.240

            改成自己使用的IP网络段

                user nobody

                group nobody

            去除user nobody 和group nobody前的分号,使系统使用nobody用户启动openvpn进程

                log         openvpn.log

                ;log-append  openvpn.log

            这两个建议去掉其中一个的分号,若不去除之一,openvpn的日志将写到系统日志中去。log项,每次启动将清空之前的openvpn.log;log-append项,日志是追加的(每次启动不清空之前的openvpn.log)

     

        7) 设置允许IP转发

            在/etc/openvpn目录下编写openvpn-startup文件,内容如下:

                # enable IP forwarding

                echo 1 > /proc/sys/net/ipv4/ip_forward

     

        完成以上所有操作后,openvpn基本上就配置完成了。

        使用service openvpn start 即可启动openvpn,而后可以看到openvpn的进程

        [root@liaosnet openvpn]# ps -ef | grep openvpn

        nobody    9428     1  0 00:53 ?        00:00:00 /usr/sbin/openvpn --daemon --writepid /var/run/openvpn/server.pid --config server.conf --cd /etc/openvpn

        使用ifconfig -a可以看到配置使用的openvpn接口tun0也已经启动

     

        注:可能需要增加iptables的nat策略

        iptables -t nat -A POSTROUTING -s 192.168.18.0/28 -o eth0 -j MASQUERADE

        其中的网络地址与server.conf中的网络配置应一致

     

    3、配置openvpn客户端(windows)

        在windows下安装openvpn-2.0.9-gui-1.0.3-install.exe

        假设安装目录为:C:\Program Files\OpenVPN

     

        1)  加载密钥文件(用户user1,其它用户如user2则下载user2的用户密钥)

            将服务端/etc/openvpn目录下的

                user1.crt

                user1.csr

                user1.key

                ca.crt

                ca.key

            文件下载到C:\Program Files\OpenVPN\config目录下

        2)  配置client.conf

            将C:\Program Files\OpenVPN\sample-config\下的client.opvn复制到C:\Program Files\OpenVPN\config目录下,并修改之

                proto tcp

                ;proto udp

            用分号注释proto udp,去掉proto tcp的分号注释,即使用tcp方式连接(与服务端相等)

                ;remote my-server-1 1194

                remote 192.168.80.60 1194

            将服务器名改成实际的IP地址或者域名

                cert user1.crt

                key user1.key

            cert和key改成实际用户user1的密钥

     

      完成后即可使用Openvpn GUI 与openvpn建立VPN连接。


    Page comment lists:

    netsky 2012-09-24 14:44

    若需要使用 用户名/密码 验证方式(auth-pam),需要做以下更改:
    1,不再需要 用户密钥:即不需要build-key user
    2,在server.conf中增加
    ; add user auth-pam login
    plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so openvpn
    client-cert-not-required
    username-as-common-name
    3,在client.opvn中增加
    auth-user-pass
    4,增加/etc/pam.d/openvpn和组限制
    新建文件/etc/pam.d/openvpn的内容如下:
    #%PAM-1.0
    auth        required      pam_listfile.so onerr=fail item=group sense=allow file=/etc/security/openvpn.allowed
    新建文件/etc/security/openvpn.allowed的内容如下:
    openvpn

    新建系统组openvpn和用户
    [root@liaosnet ~] groupadd openvpn
    [root@liaosnet ~] useradd -g openvpn -s /sbin/nologin vpnuser1
    [root@liaosnet ~] passwd vpnuser1

    重新openvpn后,在客户端可通过vpnuser1和密码访问vpn