CentOS6下安装OpenVPN

一、简述:

OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用OpenVPN可以方便地在家庭、办公场所、住宿酒店等不同网络访问场所之间搭建类似于局域网的专用网络通道。
使用OpenVPN配合特定的代理服务器,可用于访问Youtube、FaceBook、Twitter等受限网站,也可用于突破公司的网络限制。

二、场景:

由于公司的服务器的远程管理卡模块分配的全部都是内网IP地址,当特定情况需要使用远程管理的功能的时候,就需要连接到机房的内网中来,这时候openVPN就成了不二之选。

三、OpenVPN的安装配置:

  1. 服务器环境
    shell> cat /etc/redhat-release 
    CentOS release 6.7 (Final)
    shell> uname -r 
    2.6.32-573.12.1.el6.x86_64
    shell> uname -m 
    x86_64
  2. IP地址:(ip地址均为虚构出来的IP地址,并非公司的实际IP)内网地址:192.168.1.187外网地址:119.22.54.23
  3.   安装yum源及相应的软件包
    ### 安装epel源
    shell> yum -y install epel-release 
    ### 安装openVPN
    shell> yum -y install openssl openvpn easy-rsa
  4. 生成证书文件,密钥并提供openVPN的配置文件:
    shell> cd /usr/share/openvpn/
    shell> cp /usr/share/easy-rsa/ ./ 
    shell> cd easy-rsa/2.0/
    shell> vim vars
    # These are the default values for fields
    # which will be placed in the certificate.
    # Don't leave any of these fields blank.
    export KEY_COUNTRY="CN"
    export KEY_PROVINCE="ZJ"
    export KEY_CITY="Hangzhou"
    export KEY_ORG="leidy"
    export KEY_EMAIL="leidylinux@163.com"
    export KEY_OU="leidy"
    
    # X509 Subject Field
    export KEY_NAME="leidy"
    
    ### 引入初始化变量
    shell> source vars
    ### 清理keys/目录下所有的证书,及密钥文件
    shell> ./clean-all
    ### 生成根证书与跟密钥
    shell> ./build-ca                     ###  一直回车,提示(y|n)时选Y
    ### 生成服务端的证书与密钥
    shell> ./build-key-server server 
    ### 为登陆VPN的客户端生成客户端证书。可以根据需要重复这个来生成唯一证书和密钥为每个客户端或设备。如果你计划几双证书一定要多使用
    ### 描述性的文件名。
    shell> ./build-key leidy
    ### 创建迪菲·赫尔曼密钥,过程比较慢,请耐心等待,不要中断它
    shell> ./build-dh
    shell> cd keys/
    shell> cp dh2048.pem ca.crt server.crt server.key /etc/openvpn/
    ### 提供配置文件的模板
    shell> cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/
    ### 编辑配置文件
    shell> cat /etc/openvpn/server.conf | egrep -v ^"#|^$|;"
    local 119.22.54.23
    port 1234
    proto tcp
    dev tun
    ca ca.crt
    cert server.crt
    key server.key 
    dh dh2048.pem
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "route 192.168.1.0 255.255.255.0"
    push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 192.168.1.13"        ### 192.168.1.13 为公司内网的dns服务器
    keepalive 10 120
    comp-lzo
    user nobody
    group nobody
    persist-key
    persist-tun
    status openvpn-status.log
    verb 3
    
  5. 启用linux的ip转发功能
    shell> vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    
    shell> sysctl -p
  6. 为vpn的子网创建iptables规则
    ### 10.8.0.0/24为连接到VPN的客户端的子网络, 192.168.0.0/16是公司服务器的内网的网络
    ### eth2配置的是内网地址,eth0配置的电信ip,是整个服务器的默认网关出口,这样配置的
    ### 好处在于当公司服务器的内网地址不提供外网出口的时候,同样可以使连接到VPN server
    ### 的客户端保持访问外网的权限。
    shell> iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 192.168.0.0/16 -o eth2 -j MASQUERADE
    shell> iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    shell> /etc/init.d/iptables save
    
  7. 创建Windows客户端的配置文件:
    shell> mkdir config 
    shell> cd config/
    shell> cp /usr/share/doc/openvpn-*/sample/sample-config-files/client.conf ./
    shell> cp /usr/share/openvpn/easy-rsa/2.0/keys/ca.crt ./ 
    shell> cp /usr/share/openvpn/easy-rsa/2.0/keys/leidy.crt ./ 
    shell> cp /usr/share/openvpn/easy-rsa/2.0/keys/leidy.key ./ 
    shell> cat client.conf | egrep -v ^"#|^$|;"
    client
    dev tun
    proto tcp
    remote 119.22.54.23 1234
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    cert leidy.crt
    key leidy.key
    remote-cert-tls server
    comp-lzo
    verb 3
    
    shell> mv client.conf leidy.ovpn
    shell> cd ..
    shell> mv config leidy 
    shell> tar zcvf leidy.tar.gz leidy/
  8. Windows 7客户端的安装配置:

下载地址:http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.9-I001-x86_64.exe

安装完成之后将第7步产生的leidy.tar.gz 这个文件解压到Windows 7 下openVPN安装目录里面的config下面

服务端启动openvpn,执行ifconfig时会发现多出一个网卡设备:

Windows 下使用管理员权限启动openvpn的客户端(测试的时候发现如果不是用管理员权限启动的话,是不能连接到相对应的内网上的),点击”connect”:

connected

Windows下会发现多产生一个IP地址:

windows

这时候就可以畅通无阻的访问远端的内网了。

 

参考文档:

https://www.digitalocean.com/community/tutorials/how-to-setup-and-configure-an-openvpn-server-on-centos-6

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload CAPTCHA.