OpenVPN服务器搭建 ubuntu16.04

OpenVPN服务器搭建教程

环境:

Ubuntu16.04 32/64 bit

防火墙配置:开放udp 1194端口


参考链接:

OpenVPN官网:https://openvpn.net/

https://cndaqiang.github.io/2017/09/27/ubuntu1604-openvpn/

https://www.jianshu.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 '') /etc/openvpn/ca/keys/ca.crt <(echo -e '\n') /etc/openvpn/ca/keys/$var.crt <(echo -e '\n') /etc/openvpn/ca/keys/$var.key <(echo -e '\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中的客户端文件即可使用。


注:可将上述文件配置直接复制到文件中,运行即可一键安装。

你可能感兴趣的:(OpenVPN服务器搭建 ubuntu16.04)