2011年8月14日星期日

linux下OpenVPN服务器的架设


准备条件:1.一台独立主机或者VPS
                  2.安装opensslopenssl-devellzolzo-develgcc的编译环境
         
系统环境:RedHatOS

OpenVPN服务器的架设:
1.下载OpenVPN的安装文件
[root@127 local]# wget -c http://swupdate.openvpn.org/community/releases/openvpn-2.2.1.tar.gz

2.openvpn-2.2.1.tar.gz文件解压到/usr/loca/目录下,之后进行编译、链接、安装
[root@127 openvpn-2.2.1]# pwd
/usr/local/openvpn-2.2.1
[root@127 openvpn-2.2.1]# ./configure
[root@127 openvpn-2.2.1]# make
[root@127 openvpn-2.2.1]# make install

3.创建主CA证书及密钥
  A.进入/usr/local/openvpn-2.2.1/easy-rsa/2.0目录
  B.编辑vars文件中的KEY_COUNTRYKEY_PROVINCEKEY_CITYKEY_ORGKEY_EMAIL字段
  C.开始创建主CA证书及密钥
    [root@127 2.0]# . ./vars
    [root@127 2.0]# ./clean-all
    [root@127 2.0]# ./build-ca

4.为服务器创建证书和密钥
[root@127 2.0]# ./build-key-server server

5.为客户端创建证书和密钥
[root@127 2.0]# ./build-key client1

6.Generate Diffie Hellman parameters
[root@127 2.0]# ./build-dh

7.创建服务器端配置文件
[root@127 2.0]# cp ../../sample-config-files/server.conf ../../

8.修改服务器端的配置文件server.conf
  A.cacertkeydh的路径都设为绝对路径,并给绝对路径加上双引号
  B.添加以下三行
    push "redirect-gateway def1"      //重定向客户端的网关为VPN服务器的网关
    push "dhcp-option DNS 8.8.8.8"    //推送8.8.8.8作为客户端的DNS
    push "dhcp-option DNS 8.8.4.4"    //推送8.8.4.4作为客户端的备份DNS

9.启用ipv4的包转发功能
[root@127 2.0]# echo 1 > /proc/sys/net/ipv4/ip_forward

10.iptables中开启UDP1194端口
[root@127 2.0]# iptables -A INPUT -p udp -m udp -d server_wan_ip --dport 1194 -m state --state NEW -j ACCEPT

11.转发所有来自10.8.0.0网段的流量
[root@127 2.0]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE

12.windows客户端的配置
/usr/local/openvpn-2.2.1/sample-config-files/目录下的client.conf/usr/local/openvpn-2.2.1/easy-rsa/2.0目录下的ca.crtclient1.crtclient.key4个文件下载到client1openvpn的安装目录下的config目录,将client.conf文件中的remotecertkey三项分别改为Server_wan_ipclient1.crtclient1.key即可。

为了避免DNS污染,最好将客户端的DNS也设为GoogleDNSGoogleDNS8.8.8.88.8.4.4OpenDNS208.67.222.222208.67.220.220

注:我的FORWARD链默认规则是ACCEPT
       每次创建客户端证书和密钥时都必须先执行. ./vars,但不用每次都执行./clean-all

没有评论:

发表评论