基于CentOS6+OpenVPN服务器搭建教程
一、更换成阿里云源
1、备份本机源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
2、将本机源替换为阿里云源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel.repo
3、更新源
yum -y makecache
二、安装openvpn
1、OpenVPN需要tun和iptables_nat模块支持,所以先检查你的服务器是否支持:
cat /dev/net/tun
#若返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明tun/tap已经可以使用;如果返回:cat: /dev/net/tun: No such device 或其他则说明tun/tap没有被正确配置。
The system does not have the TUN device available.
TUN needs to be enabled before running this installer.
#然后检查iptables_nat模块(如果还没有安装iptables,先安装)
yum -y install iptables #如已安装跳过
2、先安装相关依赖包及证书工具
yum install -y gcc lzo lzo-devel openssl openssl-devel pam pam-devel
yum install -y pkcs11-helper pkcs11-helper-devel easy-rsa
3、安装openvpn
yum -y install openvpn
三、生成证书
1、创建证书工作目录
mkdir -p /usr/share/easy-rsa/2.0/keys
ln -s /usr/share/easy-rsa/ /etc/openvpn/easy-rsa
ln -s /usr/share/easy-rsa/2.0/keys/ /etc/openvpn/keys
2、编辑证书配置文件初始化证书KPI
vim /etc/openvpn/easy-rsa/2.0/vars
修改如下证书信息:
# Don't leave any of these fields blank.
export KEY_COUNTRY="US" # 国家
export KEY_PROVINCE="CA" #省份
export KEY_CITY="SanFrancisco" #城市
export KEY_ORG="Fort-Funston" #组织机构
export KEY_EMAIL="me@myhost.mydomain" #联系人邮箱
export KEY_OU="MyOrganizationalUnit" #部门名称
修改为:
# Don't leave any of these fields blank.
export KEY_COUNTRY="CN"
export KEY_PROVINCE="JS"
export KEY_CITY="ChangZhou"
export KEY_ORG="Sina"
export KEY_EMAIL="12345678@qq.com"
export KEY_OU="Software Development Department"
另外还有一个证书有效期,请按照实际需要修改:
export CA_EXPIRE=3650 # CA证书有效期,默认是3650天。
export KEY_EXPIRE=3650 # 密钥证书有效期,默认是3650天。
3、证书生成
cd /etc/openvpn/easy-rsa/2.0/
source ./vars # 应用证书环境变量
./clean-all # 清除所有证书,注意以后千万别运行,否则所有已生成证书会被清空
./build-ca server # 创建根证书ca.crt和根密钥ca.key,server是服务器名,可以任意定义,按照提示回车回车再回车
./build-key-server server #生成服务器端证书,server是服务器名,可以任意定义,按照提示全部回车,最后两步按y回车
4、生成Diffie Hellman参数,加强安全
#创建Diffie-Hellman,会生成dh2048.pem文件(生成过程可能比较慢,在此期间不要去中断它)确保key穿越不安全网络的命令
./build-dh
5、生成 HMAC firewall 验证码
#这是一种经加密的散列消息验证码,可以对信息数据的完整性和真实性进行同步检查
/usr/sbin/openvpn --genkey --secret keys/ta.key
6、创建用于VPN认证的客户端证书
#创建客户端认证证书,创建证书时client可以任取,方便识别即可,为避免重复,建议使用证书名称后面再跟当前日期,按照提示全部回车,最后两步按y回车。
./build-key client-20170715
#证书创建完毕后会在./key目录生成以name-yymmdd开头的三个证书文件,这时可以创建name文件夹存放创建的证书以便于使用。注意:三个证书文件只有client-20170715.crt和client-20170715.key作为认证使用。
四、创建配置文件
1、复制默认配置文件
# 默认配置文件作为配置时参考
cp /usr/share/doc/openvpn-2.4.3/sample/sample-config-files/server.conf /etc/openvpn/server.conf.default
2、创建openvpn配置文件
vi /etc/openvpn/server.conf #创建配置文件,按i编辑并插入以下内容:
port 1194 # 指定工作端口
proto udp # 指定TCP协议(使用TCP协议如果连接上VPN后网络很慢或者被屏蔽,可以更改成使用UDP协议,服务端和客户端需同时更改)
dev tun # IP层的点对点协议
ca keys/ca.crt # 前面生成的ca证书,验证客户是证书是否合法
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
#crl-verify keys/crl.pem
server 10.16.1.0 255.255.255.0 # 这是必须的,指定客户端获取的IP段,注意不要跟openvpn服务器及客户端所在地址段重复
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 114.114.114.114"
push "redirect-gateway" # 指定客户端网关
client-to-client # 允许客户端之间的通信
duplicate-cn # 如果客户都使用相同的CA和keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN
max-clients 50 # 最多允许50个客户端
keepalive 20 60 # 存活时间,20秒ping一次,60秒如未收到响应则视为断线
comp-lzo # 数据进行压缩,注意Server和Client一致
persist-key # 通过keepalive检测超时后,当重新启动VPN后,不重新读取私钥,保留第一次使用的私钥
persist-tun # 通过keepalive检测超时后,当重新启动VPN后,一直保持tun设备是连接的,否则网络连接会先断开再连接
status openvpn-status.log
log-append openvpn.log
verb 3 # 日志文件冗余
mute 20
五、创建NAT转发
1、配置iptables前先确保SELinux已经关闭
getenforce #执行本命令如果显示Enforcing则未关闭,显示Disabled则为关闭,关闭方法如下:
vi /etc/selinux/config
把 SELINUX=enforcing 改为 SELINUX=disabled,切记看清不要改错了,否则服务器无法启动。
改完保存重启服务器即可。
2、设置 iptables
# 设置前请确保 iptables 已经开启,而且 /etc/sysconfig/iptables 文件已存在。然后开启转发:
vi /etc/sysctl.conf
# 修改以下内容:
net.ipv4.ip_forward = 1
# 然后使内核参数生效:
sysctl -p
#或者直接把/etc/sysctl.conf文件内容用以下内容替换:
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
3、添加iptables规则
# 添加 iptables 规则确保服务器可以转发数据包到阿里云内外网:
iptables -t nat -A POSTROUTING -s 10.16.1.0/24 -j MASQUERADE #允许VPN地址段通过公网地址上网
service iptables save #保存规则
注意:有些服务器,例如阿里云的ECS,其iptables防火墙默认是关闭的,因此添加完防火墙规则后记得要将iptables防火墙设为开机启动。
chkconfig iptables on #设置iptables开机启动
service iptables restart #重启iptables防火墙
六、启动openvpn服务器
chkconfig openvpn on #设置openvpn开机启动
service openvpn restart #重启openvpn服务器
netstat -lnp |grep 1194 #查看openvpn是否正常启动。
七、创建openvpn客户端,以windows为例:
1、以默认选项安装openvpn-install-2.4.2-I601.exe客户端
2、下载刚才创建的用户证书文件到openvpn安装的配置文件目录:C:\Program Files\OpenVPN\config,注意一共三个文件,都在openvpn服务器的/etc/openvpn/easy-rsa/2.0/keys目录,文件分别如下:
ca.crt
client-20170715.crt
client-20170715.key
3、拷贝配置文件:C:\Program Files\OpenVPN\sample-config\client.ovpn到C:\Program Files\OpenVPN\config,编辑client.ovpn配置文件,修改为如下内容:
client
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
keepalive 20 60
#tls-auth ta.key 1
comp-lzo
verb 3
mute 20
route-method exe
route-delay 2
key-direction 1
#用户证书
ca ca.crt
cert client-20170715.crt
key client-20170715.key
#工作协议
proto udp
#openvpn服务器公网IP及工作端口
remote 180.97.33.108 1194
#全局代理选项,如果希望上网出口走openvpn公网出口,请去掉本选项注释
redirect-gateway
4、启动openvpn连接
最后启动OpenVPN GUI客户端,请“以管理员身份运行”,否则可能无法获取到vpn网关,双击右下角OpenVPN GUI客户端图标连接网络。
====== 友情提醒:本教程仅用于内网互通及安全访问控制用途,请勿用于其它非法用途 ======
下载地址:
共有 0 条评论