自己做个东西上外网
参考链接
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-16-04 --英文
http://blog.csdn.net/zstack_org/article/details/69228386 --中文
不知道为什么,之前这种方法现在不能用了,另外换一种方法,参考如下
注意:需要修改安全选项中的VPN类型为PPTP,如下
下面这些不用看了,不好使了
Step 1: Install OpenVPN
apt-get update
apt-get install openvpn easy-rsa
Step 2: Set Up the CA Directory
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
Step 3: Configure the CA Variables
在vars文件中自行修改如下参数,也可以不修改。保存退出后,执行source vars
export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="admin@example.com"
export KEY_OU="Community"
export KEY_NAME="server", 这个修改后,下面命令中的server名也要改变
Step 4: Build the Certificate Authority
./clean-all
./build-ca,一路回车
Step 5: Create the Server Certificate, Key, and Encryption Files
./build-key-server server,一路回车,在最后2个输入y
./build-dh
openvpn --genkey --secret keys/ta.key
Step 6: Generate a Client Certificate and Key Pair
source vars
./build-key client1,一路回车,最后2个选y
Step 7: Configure the OpenVPN Service
cd ~/openvpn-ca/keys
sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
Adjust the OpenVPN Configuration
vim /etc/openvpn/server.conf修改如下内容
tls-auth ta.key 0 # This file is secret,remove ";"
key-direction 0
cipher AES-128-CBC # AES
auth SHA256
user nobody
group nogroup
Step 8: Adjust the Server Networking Configuration
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
保存退出后,执行sysctl -p
Adjust the UFW Rules to Masquerade Client Connections
ip route | grep default:找到默认的接口,比如eth0
vim /etc/ufw/before.rules,在头部添加如下代码,然后保存退出
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
vim /etc/default/ufw,修改一行然后保存退出
DEFAULT_FORWARD_POLICY="ACCEPT"
Open the OpenVPN Port and Enable the Changes
ufw allow 1194/udp
ufw allow OpenSSH
ufw disable && ufw enable
Step 9: Start and Enable the OpenVPN Service
systemctl start openvpn@server #这里的server不是上面定义的服务器的名字,固定为server
systemctl status openvpn@server
sudo systemctl enable openvpn@server
Step 10: Create Client Configuration Infrastructure
Creating the Client Config Directory Structure
mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
Creating a Base Configuration
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
vim ~/client-configs/base.conf,修改如下内容,然后保存退出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | remote server_IP_address 1194 #设置openvpn端口, 这里的server_IP_address修改为自己服务器的外网地址 #确保端口对应的协议 proto udp 取消下面2行的注释 user nobody group nogroup 把下面三行加上注释, #ca ca.crt #cert client.crt #key client.key 接下来的三行要自己加上 cipher AES-128-CBC auth SHA256 key-direction 1 |
Creating a Configuration Generation Script
vim ~/client-configs/make_config.sh,添加如下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/bin/bash # First argument: Client identifier KEY_DIR=~ /openvpn-ca/keys OUTPUT_DIR=~ /client-configs/files BASE_CONFIG=~ /client-configs/base .conf cat ${BASE_CONFIG} \ <( echo -e '<ca>' ) \ ${KEY_DIR} /ca .crt \ <( echo -e '</ca>\n<cert>' ) \ ${KEY_DIR}/${1}.crt \ <( echo -e '</cert>\n<key>' ) \ ${KEY_DIR}/${1}.key \ <( echo -e '</key>\n<tls-auth>' ) \ ${KEY_DIR} /ta .key \ <( echo -e '</tls-auth>' ) \ > ${OUTPUT_DIR}/${1}.ovpn |
chmod 700 ~/client-configs/make_config.sh
Step 11: Generate Client Configurations
cd ~/client-configs
./make_config.sh client1
正常情况下执行ls ~/client-configs/files会有一个client1.ovpn,这个就是客户端配置文件,需要把他传到window上
最后就是在windows上安装客户端,然后把client1.ovpn复制到客户端的配置文件中,比如C:\Program Files\OpenVPN\config
注意事项
1. 在中文版第八步使用ufw allow 1194/udp时,记得用 ufw allow OpenSSH,否则你的阿里云服务器将不能进行远程连接
2.. 不管阿里云服务器内网IP是多少,在/etc/ufw/before.rules中都要设置ip为10.8.0.0/8,如下
-A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE
3. 参照中文版到第10步配置生成脚本时,脚本执行会出错,可以用英文版的脚本,其他应该都没错。中英文配置稍有区别,英文版的解释更详细,我是用中文版做的实验。
4. 按照英文版的第6,11步创建多个client之后,不能同时多用户登陆
5. 设置多客户端用一个证书,实现多用户同时登陆的方法,注意要同一个client才可以,我的实验中不同客户端用不同的client,会连不上VPN
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp
· drools 规则引擎和 solon-flow 哪个好?solon-flow 简明教程