一、项目准备

1.1、VMware ESXi

VMware ESXi

1.2、Ubuntu镜像

Ubuntu 22.04.3 ISO

1.3、OpenVPN客户端

OpenVPN Client

Snipaste_2023-12-08_15-53-33

1.4、SSH工具

MobaXterm

二、部署Ubuntu

2.1、安装Ubuntu

Snipaste_2023-12-16_18-23-28
Snipaste_2023-12-16_18-23-03
Snipaste_2023-12-16_18-25-35
Snipaste_2023-12-16_18-25-56
Snipaste_2023-12-16_18-26-15
Snipaste_2023-12-16_18-28-37
Snipaste_2023-12-16_18-28-57
Snipaste_2023-12-16_18-29-30
Snipaste_2023-12-16_18-30-54
Snipaste_2023-12-16_18-32-07
Snipaste_2023-12-16_18-32-45
Snipaste_2023-12-16_18-33-55
Snipaste_2023-12-16_18-34-09
Snipaste_2023-12-16_18-34-23
Snipaste_2023-12-16_18-45-59
Snipaste_2023-12-16_18-35-04
Snipaste_2023-12-16_18-35-24
Snipaste_2023-12-16_18-35-46
Snipaste_2023-12-16_18-43-12
Snipaste_2023-12-16_18-43-48
Snipaste_2023-12-16_18-44-11
Snipaste_2023-12-16_18-44-34
Snipaste_2023-12-16_18-45-04

2.2、配置Ubuntu

2.2.1、进入root权限

sudo -i

Snipaste_2023-12-16_19-07-06

2.2.2、禁用 CD-ROM 软件源

sudo nano /etc/apt/sources.list

Snipaste_2023-12-16_19-09-34

2.2.3、更新系统软件列表

sudo apt update

2.2.4、升级系统软件列表

sudo apt upgrade -y

2.2.5、安装网络工具

sudo apt install net-tools

2.2.6、安装SSH工具

sudo apt install openssh-server

2.2.7、设置root密码

sudo passwd root

Snipaste_2023-12-16_19-13-28

2.2.8、开启root登录

sudo nano /etc/ssh/sshd_config
PermitRootLogin yes

Snipaste_2023-12-16_19-14-41

2.2.9、重启ssh服务

sudo systemctl restart ssh

2.2.10、用root登录删除user账户

userdel -r user

三、安装OpenVPN

3.1、安装openvpn和openssl

sudo apt-get -y install openvpn libssl-dev openssl

3.2、安装easy-rsa

sudo apt-get -y install easy-rsa

3.3、创建easy-rsa目录

sudo mkdir /etc/openvpn/easy-rsa/ && cd /etc/openvpn/easy-rsa/

3.4、把刚刚安装好的easy-rsa目录下的所有文件拷贝到创建的easy-ras目前下

sudo cp -r /usr/share/easy-rsa/* ./

Snipaste_2023-12-16_19-31-47

3.5、复制vars.example文件

cp vars.example vars

3.6、修改vars文件

nano vars
export KEY_NAME="yydyvpn"

Snipaste_2023-12-16_19-39-02
Snipaste_2023-12-16_19-41-10

3.7、初始化PKI

./easyrsa init-pki && ll

Snipaste_2023-12-16_19-45-06

3.8、创建无密码证书

./easyrsa build-ca nopass && ll pki/

Snipaste_2023-12-16_19-51-43
Snipaste_2023-12-16_19-52-26

3.9、创建Server证书

yydyvpn参数是刚刚在vars中配置的KEY_NAME,需要保持一致

ls pki/issued/ && ls pki/private/
./easyrsa build-server-full yydyvpn nopass
ls pki/issued/ && ls pki/private/

Snipaste_2023-12-16_19-59-42

3.10、创建Client证书

为了和服务端证书名称有区分,客户端证书名称用yydy,服务端证书用yydyvpn,参数支持自定义

ls pki/issued/ && ls pki/private/
./easyrsa build-client-full yydy nopass
ls pki/issued/ && ls pki/private/

Snipaste_2023-12-16_20-02-59

3.11、创建DH

创建服务器加密交换Diffie-Hellman文件时,可能会有很长点点点,请耐心等待

./easyrsa gen-dh

Snipaste_2023-12-16_20-03-49
Snipaste_2023-12-16_20-11-36

3.12、退回openvpn目录

cd ..

3.13、拷贝默认配置文件conf以及证书密码以及DH文件到oepnvpn目录

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf ./
cp easy-rsa/pki/ca.crt ./
cp easy-rsa/pki/issued/yydyvpn.crt ./
cp easy-rsa/pki/private/yydyvpn.key ./
cp easy-rsa/pki/dh.pem ./
cp easy-rsa/pki/dh.pem ./dh2048.pem

3.14、配置Server端

删除所有默认配置文件,复制我的贴入

nano server.conf
port 1194  
proto udp
dev tun
ca ca.crt
cert yydyvpn.crt  #替换自己的
key yydyvpn.key  #替换自己的
dh dh2048.pem
server 100.255.255.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/server/ipp.txt
keepalive 30 1000
cipher AES-256-CBC
persist-key
persist-tun
status /etc/openvpn/server/openvpn-status.log
log-append  /etc/openvpn/server/openvpn.log
verb 3
topology subnet
data-ciphers AES-256-CBC:AES-256-GCM:AES-128-GCM
push "redirect-gateway def1 bypass-dhcp"  #客户端路由全局走VPN,但不从VPN服务器端获取IP地址
push "redirect-gateway def1 bypass-dns"  #客户端路由全局走VPN,但不从VPN服务器端获取DNS解析

3.15、启动服务端

nohup /usr/sbin/openvpn --config /etc/openvpn/server.conf &
ip addr
netstat -au
lsof -i:1194

Snipaste_2023-12-16_20-43-16

3.16、配置客户端

拷贝CA证书,客户端证书,客户端密钥以及默认客户端配置文件到client目录

cd /etc/openvpn/client/
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ./
cp /etc/openvpn/easy-rsa/pki/issued/yydy.crt ./
cp /etc/openvpn/easy-rsa/pki/private/yydy.key ./
cp /etc/openvpn/easy-rsa/pki/ca.crt ./ && ll

Snipaste_2023-12-16_21-48-26

nano client.conf

删除所有默认配置文件,复制我的贴入

client
dev tun
proto udp
remote 192.168.6.105 1194 #如果需要外网访问进来,这个IP端口需要填写映射后的
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
data-ciphers AES-256-CBC:AES-256-GCM:AES-128-GCM
verb 3
max-routes 5550
<ca>
</ca>
<cert>
</cert>
<key>
</key>

3.17、完善client.conf

需要把ca,客户端crt,客户端key填入上面的末尾,大致格式如下图,然后在把client.conf拷贝复制一份后缀改成ovpn,这样手机和电脑才能使用

cp client.conf yydy.ovpn

Snipaste_2023-12-16_21-49-38

四、下载配置

使用MobaXterm侧边栏下载到本地桌面即可
Snipaste_2023-12-16_22-00-47

五、测试连接

Snipaste_2023-12-16_22-04-20

Image 1 Image 2

Snipaste_2023-12-16_22-06-17

六、配置上网

6.1、开启路由转发

sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sed -i '/net.ipv4.ip_forward/s/#//' /etc/sysctl.conf
sysctl -p

6.2、配置iptables

iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 100.255.255.0/24 -j MASQUERADE

6.3、安装iptables-persistent

sudo apt-get install -y iptables-persistent
sudo service netfilter-persistent save

6.4、关闭防火墙

ufw disable

6.5、启动OpenVPN

/etc/init.d/openvpn start
systemctl enable openvpn@server

6.6、重新拨号测试

yydy_2023-12-20_14-21-06