搭建自己的专属vpn节点
虚拟专用网络 (VPN)可以让我们的上网数据更加安全,当然对于在国内的用户一个更重要的目的是访问外网资源。使用现有的vpn服务商提供的服务可以解决一部分问题,但也意味着你的上网记录全在他们的服务器上,自己搭建的vpn server不仅保证了安全性,也保证了流量速度。
首先需要一台位于国外的云服务器,这个可以从AWS或者其他的云服务公司获取,节点位置的选择看个人需求。cpu核数和内存大小可以选择最低一档。
登入服务器
创建好之后可以通过ssh命令进入
1 | ssh root@ip-address |
这里使用ubuntu系统作为例子, 进入之后先更新
1 | apt-get update && apt-get upgrade |
接着创建一个用户用于ssh登录,把root用户暴露给ssh并不安全
1 | useradd -G sudo -m yourname -s /bin/bash |
这条命令创建了一个使用bash作为默认shell的用户并给了sudo权限
然后设置密码
1 | passwd yourname |
输入你的密码
创建sshkey
使用ssh key可以避免每次输入密码进行登录
在本机terminal中生成sshkey
1 | ssh-keygen -t rsa -b 4096 |
把ssh公钥拷贝到服务器
1 | ssh-copy-id yourname@ip_address |
配置sshd服务
1 | vim /etc/ssh/sshd_config |
修改ssh默认端口(可选)这一步是为了防止网络扫描软件扫描特定端口服务,并且试图登入
1 | Port 22 |
禁止密码登录(可选)也是为了保证安全性,这一步设置了之后只能使用ssh公钥进行登录了
1 | PasswordAuthentication no |
禁止root ssh登录
1 | PermitRootLogin no |
保存文件并重启sshd 服务
1 | systemctl restart sshd |
接下来在本机尝试登录
1 | ssh -i ~/.ssh/id_rsa yourname@ip_address -p 69 |
如果配置了禁止密码登录,使用如下的命令会显示Permission denied
1 | ssh yourname@ip_address -p 69 |
配置快捷登录
每次登录服务器需要输入用户名和ip比较繁琐,可以给服务器设置名称
1 | vim ~/.ssh/config |
如果没有上述文件创建一下即可
在配置文件中输入
1 | Host myvpn # 你的自定义服务器名称 |
保存退出 接下来可以使用
1 | ssh myvpn |
直接登录
配置openvpn服务端
我们使用一个开源的安装脚本https://github.com/Nyr/openvpn-install安装openvpn服务端, 直接下载raw文件到本地服务器
1 | wget https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh |
运行脚本
1 | sudo bash openvpn-install.sh |
脚本运行过程中会询问一些问题,比如端口,选择默认端口1194即可,也可以选择别的端口,dns可以选择1.1.1.1
然后会生成客户端文件,自己命名即可
生成的客户端文件会在root目录下,将他移到当前目录
1 | sudo mv /root/mymacbook.ovpn ~ |
接下来禁止log文件
1 | sudo vim /etc/openvpn/server/server.conf |
把verb 3改成verb 0
重启openvpn service
1 | systemctl restart openvpn-server@server.service |
这样你的vpn不会保留任何的上网记录
接下来把客户端的.ovpn文件下载到本机
可以使用xftp或者filezilla软件下载,也可以直接使用sftp命令
1 | sftp servername |
在本机上安装Tunnelblick , 如果是windows安装openVPN connect导入刚才的.ovpn文件就可以自由上网啦。
如果想要给生成多个客户端文件,可以再次运行脚本,选择生成客户端文件即可。