openvpn搭建点对点vpn服务
需求:
总部一台服务器架设openvpn服务,分支通过openvpn连接到总部,然后实现各个分支及总部实现互访。 拓扑:
一.服务器端安装及配置(总部)
服务器环境:centos 6.5 mini 内网IP:192.168.10.1 外网IP:172.16.0.1
1.安装前准备
# 关闭selinux setenforce 0
sed -i '/^SELINUX=/c\\SELINUX=disabled' /etc/selinux/config
# 安装openssl和lzo,lzo用于压缩通讯数据加快传输速度 yum -y install opensslopenssl-devel yum -y install lzo
# 安装epel源
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo
2.安装及配置OpenVPN和easy-rsa
# 安装openvpn和easy-rsa yum -y install openvpn easy-rsa
# 修改vars文件
cd /usr/share/easy-rsa/2.0/ vimvars
# 修改注册信息,比如公司地址、公司名称、部门名称等。 export KEY_COUNTRY=\export KEY_PROVINCE=\export KEY_CITY=\export KEY_ORG=\
export KEY_EMAIL=\export KEY_OU=\# 初始化环境变量 sourcevars
# 清除keys目录下所有与证书相关的文件
# 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里 ./clean-all
# 生成根证书ca.crt和根密钥ca.key(一路按回车即可) ./build-ca
# 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次) ./build-key-server server
# 每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
# 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)(想用密码认证此步骤可以不要)
./build-key client1 ./build-key client2
# 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它) ./build-dh
# 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击) openvpn --genkey --secret keys/ta.key
3.创建服务器端配置文件
# 在openvpn的配置目录下新建一个keys目录 mkdir /etc/openvpn/keys
# 将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/ # 复制一份服务器端配置文件模板server.conf到/etc/openvpn/
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn/ # 编辑server.conf
vim /etc/openvpn/server.conf port 1194
# 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议 prototcp devtun
# 路径前面加keys,全路径为/etc/openvpn/keys/ca.crt ca keys/ca.crt cert keys/server.crt
key keys/server.key # This file should be kept secret dh keys/dh2048.pem
# 默认虚拟局域网网段,不要和实际的局域网冲突即可 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt
# 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置 client-to-client
# 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN duplicate-cn keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret comp-lzo persist-key persist-tun
# OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.log status openvpn-status.log
# OpenVPN的运行日志,默认为/etc/openvpn/openvpn.log log-append openvpn.log
# 改成verb 5可以多查看一些调试信息 verb 5
client-cert-not-required #仅使用密码方式验证
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so login #通过linux自身账号做验证 username-as-common-name
4.linux创建用户及密码
useradd user –M –s /sbin/nologin passwd user
5.配置内核和防火墙,启动服务 # 开启路由转发功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf sysctl -p