安装OpenVpn的Ubuntu22.04服务端和Windows10客户端 ® 本文将在Ubuntu22.04服务器安装OpenVpn服务端,并在配置OpenVpn客户端ovpn文件。
安装OpenVpn和Easy-RSA Easy-RSA主要用来生成CA证书,服务端证书和key,客户端证书和key。先登录Ubuntu服务器,然后用root身份执行下文的命令。
1 2 3 4 5 6 sudo apt update sudo apt install openvpn easy-rsa openvpn
制作所需的证书 执行如下命令
1 2 3 4 5 6 7 8 9 10 cd /usr/share/easy-rsacp vars.example varsvim vars export KEY_NAME="myserver"
开始制作证书
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ./easyrsa init-pki chmod 777 pki./easyrsa build-ca nopass ./easyrsa build-server-full myserver nopass ./easyrsa build-client-full myclient nopass ./easyrsa gen-dh
配置OpenVpn服务端 拷贝配置文件
1 cp /usr/ share/doc/ openvpn/examples/ sample-config-files/server.conf / etc/openvpn/
拷贝刚才创建的CA证书,服务端证书和key(私钥),客户端证书和key,以及创建tls的key
1 2 3 4 5 6 7 8 9 10 cd /etc/ openvpn/ cp /usr/ share/easy-rsa/ pki/ca.crt . cp /usr/ share/easy-rsa/ pki/dh.pem . cp /usr/ share/easy-rsa/ pki/issued/my server.crt server/ cp /usr/ share/easy-rsa/ pki/private/my server.key server/ cp /usr/ share/easy-rsa/ pki/issued/my client.crt client/ cp /usr/ share/easy-rsa/ pki/private/my client.key client/ openvpn --genkey tls-auth ta.key
编辑服务端配置文件server.conf,改成如下内容,安全起见我把默认端口1194,改成了11000:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 port 11000 proto tcp dev tun ca /etc/ openvpn/ca.crt cert /etc/ openvpn/server/my server.crt key /etc/ openvpn/server/my server.key dh /etc/ openvpn/dh.pem server 10.8 .100.0 255.255 .255.0 ifconfig-pool-persist /var/ log/openvpn/i pp.txt push "route 192.168.50.0 255.255.255.0" push "dhcp-option DNS 114.114.114.114" push "dhcp-option DNS 8.8.8.8" client-to-client duplicate-cn keepalive 10 120 tls-auth ta.key 0 cipher AES-256 -CBC comp-lzo max-clients 30 persist-key persist-tun status /var/ log/openvpn/ openvpn-status.log log /var/ log/openvpn/ openvpn.log verb 3
启动vpn服务端
1 2 3 4 5 systemctl start openvpn@server systemctl status openvpn@server # 感兴趣的话,可以查看日志 tail -f /var/log /openvpn/openvpn.log
如果你的Ubuntu系统是云服务器,通常管理后台可以设置防火墙,建议在Ubuntu关闭ufw:
1 2 3 4 5 sudo ufw disable sudo systemctl stop ufw sudo systemctl disable ufw
设置IP转发 如果你搭建的VPN服务器所在的内网还有其他云服务器,你想访问其他云服务器就应该设置ip转发。就如上文描述的,我们在VPN服务端配置文件server.conf中配置了 push "route 192.168.0.0 255.255.255.224"。
打开内核ip转发:
1 2 3 4 5 6 7 8 vim /etc/ sysctl.conf net.ipv4.ip_forward = 1 sysctl -p
设置防火墙(iptables )转发规则:
1 2 3 4 iptables -t nat -A POSTROUTING -s 10.8.100.0 /24 -o enp0s31f6 -j SNAT --to-source 192.168.50.14
重启下vpn服务端:systemctl start openvpn@server。到这里,服务端安装完成。
配置客户端ovpn文件 在openvpn官网下载客户端:这里 。下载好以后点击运行,进行安装。
1 2 3 4 5 /etc/ openvpn/ca.crt/etc/ openvpn/ta.key/etc/ openvpn/client/my client.crt/etc/ openvpn/client/my client.key
创建客户端配置文件 打开终端,复制粘贴以下脚本指令,脚本会在~/openvpn-clients/目录下,创建一个client1.ovpn客户端配置文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 cat > ~/openvpn-clients/client1.ovpn << 'EOF' client dev tun proto tcp remote 你的公网IP地址 11000 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server verb 3 ca ca.crt cert myclient.crt key myclient.key tls-auth ta.key 1 comp-lzo route 192.168.50.0 255.255.255.0 <ca> EOF sudo cat /etc/openvpn/ca.crt >> ~/openvpn-clients/client.ovpn cat >> ~/openvpn-clients/client1.ovpn << 'EOF' </ca> <cert> EOF sudo cat /etc/openvpn/client/myclient.crt >> ~/openvpn-clients/client1.ovpn cat >> ~/openvpn-clients/client1.ovpn << 'EOF' </cert> <key> EOF sudo cat /etc/openvpn/client/myclient.key >> ~/openvpn-clients/client1.ovpn cat >> ~/openvpn-clients/client1.ovpn << 'EOF' </key> <tls-auth> EOF sudo cat /etc/openvpn/ta.key >> ~/openvpn-clients/client1.ovpn cat >> ~/openvpn-clients/client1.ovpn << 'EOF' </tls-auth> EOF
注意替换,你的公网IP地址和修改路由转发参数
上面的 route 192.168.50.0 255.255.255.0 也是告诉服务端,客户端访问这些 192.168.50.0/255.255.255.0 地址时,才经过VPN。
保存配置文件,然后启动 openvpn gui 客户端。通常,客户端会有opvn文件导入功能,导入客户端,点连接即可。连接成功显示如下:
然后,在CMD中ping VPN服务端的地址(下面10.8.100.1是vpn分配的网关地址,vpn客户端分配到的是10.8.100.6,192.168.50.28是vpn服务器内网ip,192.168.50.4是vpn服务所在内网的另一条机器的内网ip): 至此,vpn客户端和服务端全部安装完成。