OpenVPN服务器搭建教程
环境:
Ubuntu16.04 32/64 bit
防火墙配置:开放udp 1194端口
参考链接:
OpenVPN官网:https://openvpn.net/
https://cndaqiang.github.io/2017/09/27/ubuntu1604-openvpn/
//www.greatytc.com/p/641e74aa9876
应用:远程访问项目地ubuntu系统(默认配置静态IP地址)
开始搭建:
注:以下操作均在root用户下操作。后续操作可直接复制到文件中,运行文件即可一键配置安装。
#!/bin/bash
# 在root用户下操作
# 更新ubuntu系统中的软件包
apt-get update
# 安装证书生成软件
apt-get install openvpn easy-rsa
# 证书制作
#复制证书制作工具到文件夹(该文件夹应该不存在,复制后自动创建该文件夹),make-cadir为easy-rsa安装后增加的命令 证书的制作没有必要root权限,懒得退了就用root用户制作了
make-cadir /etc/openvpn/ca
cd /etc/openvpn/ca
# 载入环境变量
source vars
# CA证书
# CA数字证书认证机构,负责颁发证书,用于openvpn服务器和客户端的认证
# 清除keys目录下所有与证书相关的文件
./clean-all
# ./build-ca 后一直回车确认,或者./build-ca --batch保持默认设置,无须回车确认 之后证书的制作命令,直接按照添加--batch执行,也可不添加,不再单独说明
# 生成根证书ca.crt和根密钥ca.key (一路按回车即可)
./build-ca --batch
# 为服务端生成证书和私钥
./build-key-server --batch server
# 创建Diffie-Hellman密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
./build-dh
# 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击),生成HMAC签名加强TLS认证
openvpn --genkey --secret keys/ta.key
# 客户端证书
# 每一个登陆的VPN客户端需要有一个证书
# 为客户端生成证书和私钥
./build-key --batch client
# 进入客户端证书和私钥所在目录
cd /etc/openvpn/ca/keys
# 复制证书文件到/etc/openvpn 当前目录是/etc/openvpn/ca/keys,所以../../就是配置目录
cp ca.crt ca.key server.crt server.key ta.key dh2048.pem ../../
cd ../../
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .
gzip -d server.conf.gz
ls -l
# 创建用户配置文件夹/etc/openvpn/ccd
mkdir /etc/openvpn/ccd
# 创建生成客户端文件夹
mkdir /root/client
#修改服务端配置文件
# 配置openvpn服务器和客户端之间的网段(此处配置客户端网段)
sed -i 's/server 10.8.0.0 255.255.255.0/server 2.2.0.0 255.255.255.0/g' /etc/openvpn/server.conf
# 指定用户配置文件夹
sed -ie 's/;client-config-dir ccd/client-config-dir ccd/g' /etc/openvpn/server.conf
# 设置传输密码
sed -i 's/;cipher DES-EDE3-CBC # Triple-DES/cipher AES-256-CBC/g' /etc/openvpn/server.conf
# 关闭压缩传输功能
sed -i 's/comp-lzo/;comp-lzo/g' /etc/openvpn/server.conf
# log"将在OpenVPN启动时截断日志文件
sed -i 's/;log/log/g' /etc/openvpn/server.conf
# "log-append"将追加它
sed -i 's/;log-append/log-append/g' /etc/openvpn/server.conf
# 配置客户端之间可以互相通讯
sed -i 's/;client-to-client/client-to-client/g' /etc/openvpn/server.conf
# 启动openvpn服务端
service openvpn@server start
# 停止openvpn服务端
#service openvpn@server stop
# 重启openvpn服务端
#service openvpn@server restart
# 查看是否有新的IP地址
ifconfig
# 客户端配置文件制作
cd /etc/openvpn/ca/keys
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf .
#此处配置公网IP地址##################################################
# 修改客户端配置文件
# 修改客户端所使用的的公网IP地址
sed -i 's/remote my-server-1 1194/remote 公网IP 1194/g' /etc/openvpn/ca/keys/client.conf
# 修改证书默认路径为当前文件
sed -i 's/ca ca.crt/ca [inline]/g' /etc/openvpn/ca/keys/client.conf
# 修改私钥默认路径为当前文件
sed -i 's/cert client.crt/cert [inline]/g' /etc/openvpn/ca/keys/client.conf
# 修改私钥默认路径为当前文件
sed -i 's/key client.key/key [inline]/g' /etc/openvpn/ca/keys/client.conf
# 修改证书默认路径为当前文件
sed -i 's/;cipher x/cipher AES-256-CBC/g' /etc/openvpn/ca/keys/client.conf
# 修改取消数据传输压缩功能
sed -i 's/comp-lzo/#comp-lzo/g' /etc/openvpn/ca/keys/client.conf
#批量制作vpn客户端脚本文件和静态IP地址分配表,最多支持63个客户端
cd /etc/openvpn/ca/
source ./vars
for i in $(seq 1 63)
do
var=$(printf 'cli%03d' $i)
./build-key --batch $var
cat /etc/openvpn/ca/keys/client.conf <(echo -e '<ca>') /etc/openvpn/ca/keys/ca.crt <(echo -e '</ca>\n<cert>') /etc/openvpn/ca/keys/$var.crt <(echo -e '</cert>\n<key>') /etc/openvpn/ca/keys/$var.key <(echo -e '</key>\n') > /root/client/$var.ovpn
b=4
a1=`expr $i \* $b + 1`
a2=`expr $a1 + 1`
echo "a * b : $a1,$a2"
var1=2.2.0.$a1
var2=2.2.0.$a2
echo "a * b : $var1 $var2"
echo -e ifconfig-push $var1 $var2 >> /etc/openvpn/ccd/$var
done
后续复制/root/client中的客户端文件即可使用。
注:可将上述文件配置直接复制到文件中,运行即可一键安装。