使用centos系统搭建openvpn服务器

来源:互联网 发布:adobe cloud mac 下载 编辑:程序博客网 时间:2024/06/05 10:54
最近用虚拟机模拟搭建openvpn客户端,win7系统作为openvpn客户端,已达到win7系统访问虚拟机的局域网的目的。
一、搭建前提:
1 虚拟机下载(百度VMware)
2 虚拟机安装CentOs6.5系统(*.so下载网址:http://vault.centos.org/)
3 首先保证虚拟机能ping通外网
4 虚拟机网卡可以设置成桥接模式。
5 可能需要上一些国外网站下载资料(eg:www.openvpn.net),安装Lantern翻墙软件(百度搜索安装)后就可以上。
二、软件安装

依赖包:

yum install gcc gcc-c++ make -yyum install lzo lzo-devel -yyum install pam pam-devel -yyum install openssl openssl-devel -y

epel源里有openvpn,也可以用yum 安装:

yum install -y epel-releaseyum install openvpn
三、SSL证书生成

1、看下openvpn版本:


2、easy-rsa是openvpn生成服务端证书的脚本,自openvpn 2.3开始easy-rsa已经独立出来:
(git命令安装:yum install -y git)
mkdir openvpncd openvpnyum install gitgit clone https://github.com/OpenVPN/easy-rsacd easy-rsa/easyrsa3/pwd/root/openvpn/easy-rsa/easy-rsa3
初始化生成证书所需的信息,按实际情况修改:
cp vars.example varsvi vars:
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Hongkong"
set_var EASYRSA_REQ_CITY "Hongkong"
set_var EASYRSA_REQ_ORG "52OS.NET"
set_var EASYRSA_REQ_EMAIL "admin@52os.net"
set_var EASYRSA_REQ_OU "52os Openvpn"
其它参数可以默认,也可以按需修改。

3、初始化并创建ca根证书:

./easyrsa init-pki./easyrsa build-ca
一路回车,要求输密码的就输密码。ca证书需要输入密码,这个密码是给服务器端和客户端签名时用的(密码随便设置,eg:openvpn)。
4、创建并签名服务器端证书:
./easyrsa gen-req server nopass./easyrsa sign server server
同样一路回车即可。
5、创建Diffie-Hellman证书,该证书主要作用是确保共享KEY安全穿越不安全网络:(千万不要有任何中断操作,最好是看着这步完成)
./easyrsa gen-dh
(此过程需要几分钟,唯一需要做的事情就是把手放到口袋里,等完成了再操作)
6、创建并签名客户端证书:
./easyrsa gen-req client nopass./easyrsa sign client client

7、所有证书文件:(yum install -y tree)

yum install -y treetree pki/
pki/├── ca.crt├── certs_by_serial│   ├── 01.pem│   └── 02.pem├── dh.pem├── index.txt├── index.txt.attr├── index.txt.attr.old├── index.txt.old├── issued│   ├── client.crt│   └── server.crt├── private│   ├── ca.key│   ├── client.key│   └── server.key├── reqs│   ├── client.req│   └── server.req├── serial└── serial.old

四、配置openvpn服务器端和客户端
1、服务器端配置
openvpn的源码目录中已经有配置模版了,复制模版:

find / -name openvpn-2.4.1/usr/share/doc/openvpn-2.4.1cd /usr/share/doc/openvpn-2.4.1cp sample/sample-config-files/server.conf /etc/openvpn/

2、复制证书文件:

cp pki/dh.pem pki/ca.crt pki/issued/server.crt pki/private/server.key /etc/openvpn/

3、贴一份服务器端配置:(修改完之后的)

grep '^[^#;]'  /etc/openvpn/server.conf
port 1194proto tcpdev tunca /etc/openvpn/ca.crtcert /etc/openvpn/server.crtkey /etc/openvpn/server.key  # This file should be kept secretdh /etc/openvpn/dh.pemserver 10.8.0.0 255.255.255.0ifconfig-pool-persist ipp.txtclient-to-clientduplicate-cnkeepalive 10 120cipher AES-256-CBCcomp-lzopersist-keypersist-tunstatus openvpn-status.loglog-append  openvpn.logverb 5
4、启动openvpn:(如何有错误的话,可以去/etc/openvpn/下查看openvpn.log日志文件)
service openvpn start
5、开启路由转发:
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.confsysctl -p
6、防火墙策略配置:
1)允许vpn客户端所在网段流量转发到其它网卡:
iptables -Fiptables -t nat -Fiptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT
2)将vpn客户端的流量转到eth0,允许vpn客户端上网,即NAT:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
3)还需根据vpn服务器端的工作模式放开tcp/udp的1194端口:
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
service iptables save

4.2 客户端配置:
这里我用的win7系统作为客户端,软件可以去官网下载:https://openvpn.net/index.php/open-source/downloads.html
我用的是win7 64位系统,是Vista之后的版本,所以选择openvpn-install-2.3.14-I601-x86_64.exe下载。
# 复制一份client.conf模板命名为client.ovpn

cp /usr/share/doc/openvpn-2.4.1/sample/sample-config-files/client.conf client.ovpn
将client.ovpn client.crt client.key ca.crt打包传到win7机器上(我上传到E:\work\testcli),client.ovpn配置文件中要用。
vim client.ovpn:#指明是客户端client#模式选择;dev tapdev tun#定义Windows下使用的网卡名称,linux不需要;dev-node MyTap#协议选择,与服务端一致proto tcp;proto udp#要连接的远程服务器ip和portremote 192.168.74.169 1194;remote my-server-2 1194# 若上面配置了多台服务器,让客户端随机连接;remote-random# 解析服务器域名resolv-retry infinite#客户端不绑定端口nobind# 也是为了让Openvpn以nobody运行(安全)# 注意:Windows不能设置);user nobody;group nobody# Try to preserve some state across restarts.persist-keypersist-tun# 若客户端通过HTTP Proxy,在这里设置# 要使用Proxy,不能使用UDP为VPN的通讯协议;http-proxy-retry # retry on connection failures;http-proxy [proxy server] [proxy port #]# 无线网络有很多多余的头文件,设置忽略它;mute-replay-warnings# 重点,就是指定ca和客户端的证书ca E:\\work\\testcli\\ca.crtcert E:\\work\\testcli\\client.crtkey E:\\work\\testcli\\client.key# 如果服务端打开了PAM认证模块,客户端需要令其有效remote-cert-tls server#防止Ddos和udp flooding攻击(客户端后跟1);tls-auth ta.key 1#可以不修改cipher AES-256-CBC# 使用lzo压缩,与服务端一致comp-lzo# Set log file verbosity.verb 5# Silence repeating messages;mute 20

本文参考文章:

1)配置参考文档:https://www.52os.net/articles/linux-openvpn-server-setup.html

2)客户端报VERIFY ERROR: depth=1, error=certificate is not yet valid 错误参考文档:http://flashing.iteye.com/blog/2249331

3)虚拟机与主机时间同步参考文档:http://blog.csdn.net/dearwind153/article/details/7679914

                                             
0 0
原创粉丝点击