本篇主要讲解网络方面的准备:将会申请一台配备公网IP的VPS,并申请域名进行解析。然后,通过部署VPN,打通VPS访问家庭内网的网络访问通道。
1.VPS申请
目前谷歌VPS可以免费试用一年,不过申请有点复杂,需要自备梯子以及visa/master信用卡(预扣费1美元认证,不入账的)。其它VPS的开通请自行百度。
1.1申请账号
访问谷歌云,右上角点击免费试用。按照提示填写注册信息、绑卡即可。
注册完后登陆控制台,点击左上角可以展开菜单栏,常用的有三项:结算、Compute Engine、VPC网络。
要注意的是,谷歌的免费一年指的就是赠送300$,有效期一年,期间按实际使用资源计费(扣完赠金不会自动扣信用卡的)。所以我们就不要乱用资源了,也可以常常点“结算”看到账户余额有及有效期了。一般我们启用最低配的VM是5$一个月,12个月60$,然后240$作为流量开销,大概240$/(0.23$/GB)=1043GB,完全足够使用了,详细可看价格表
1.2初步配置
接下来进行初步的设置,使得我们可以使用客户端登陆进行管理,毕竟谷歌自带的是网页版工具,得爬梯子才能用,十分的不方便。
①菜单栏->Compute Engine->VM实例->创建实例
Tips:我实测asia-east1系列节点已经没有以前人们说的那么低时延,地区us-weast1系列时延还低点(好像目前还能免费使用),所以根据个人爱好选择吧。
②创建SSH密钥,添加到谷歌云
1)打开SecureCRT(7.1.1版本),Tools->Create Public Key
2)Key type选择RSA
3)填写Passphrase,不用填,填了的话secureCRT貌似有时候会要求输这个东东,如果设置的话别忘记了。
4)默认1024即可
5)选择目录保存,目录会生成一个Private key和一个Public key,Public key是我们要上传到谷歌云的
6)最后会提示是否作为SecureCRT的全局公匙,先选择否,我们稍后建立连接的时候再关联
7)找到刚才的目录,用记事本打开Identity.pub,可以看到一串ssh-rsa开头的字符串
8)返回谷歌云控制台,菜单栏->Compute Engine->元数据
9)点SSH密钥选项卡,添加一项,然后填入步骤7)的字符串+“空格”+用户名(自定义一个,比如smzdm),保存
10)菜单栏->VPC网络->外部IP地址,可以找到VPS主机的IP地址35.229.245.242。设置静态(类型下拉选择静态即可,提示输入名称随便输即可),不然重启后VPS主机的IP可能发生变化
11)菜单栏->VPC网络->防火墙规则
12)新增一条openvpn入站规则
13)新增一条出站不限制的规则
③securteCRT登陆
1)打开securtCRT,File->Quick Connect
2)Hostname填VPS地址,选中PublicKey,点Properties
3)选择之前创建的私匙
4)添加完私匙后会回到Quick Connect面板,点Connect连接
5)输入谷歌云添加SSH密钥步骤第9)步定义的用户名(公用电脑上请勿勾选Save username,并不要保留私匙)
6)成功登陆界面
2.域名申请
2.1.购买域名
腾讯云、阿里云经常有活动,club、xyz首年都是几块钱。
注册过程不再详述,购买过程有个实名认证的步骤,微信扫码支付1分钱即可,很方便。
2.2实名审核
购买后腾讯云会邮件通知域名审核,点击链接前往即可,需要填写个人联系信息以及上传身份证拍照。虽然是写着要几个工作日,我提交之后大概2小时就通过审核了,效率不错。
2.3配置域名解析
①登陆控制台主页,在使用中的云产品点击域名管理。
②点击解析
③添加www主机记录,记录值填VPS地址35.229.245.242,用于后续与天猫精灵home NLU对接
④点击添加记录,主机记录选直接解析主机域名,记录值填VPS地址35.229.245.242,用于后续VPN互联
⑤win+r,运行cmd,输入ping 你的域名,可以看到解析已生效(有时候生效时间会需要几分钟)
⑥这时,secureCRT可以改用域名登陆,在新的电脑上用就不用输IP啦
3.VPN部署
3.0.securCRT设置
①把终端的编码改成UTF-8,不然中文字符会显示乱码
②可以顺便改下显示效果,个人习惯黑底绿字
3.1.VPS部分
①打开secureCRT,登陆VPS。可以看到命令提示符前的是$,是处于普通用户模式
②登陆VPS,输入sudo su,切换到特权模式,光标会出现#号(登陆后默认执行一次即可,后续不再提及此操作)
②时间同步
VPS安装系统默认开启了,就不用另外设置了。我们另外设置一下时区,不然时间看起来怪怪的。
1)#tzselect
依次输入数字选Asia->China->Beijing
2)#cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Tips:secureCRT粘贴的快捷键是SHIFT+INS(DEL上面的按键)。复制命令不需要复制”#”号
3)#vi /etc/timezone
删除原内容
增加Asia/Shanghai,保存退出
Tips:在这简单简单普及下vi命令,vi是一个linux下的文本编辑工具,像常用windows的记事本。由于系统没有图形界面,只能用键盘操作,所以一开始会十分的不习惯,不过后续的配置都需要使用到vi。打开vi后,默认是非编辑模式的,也就是敲字是敲不进的,往往还会触发vi的快捷键,导致莫名其妙的结果。所以建议打开vi后,立刻按下i键进入编辑模式,就可以正常地敲字了;编辑完毕后,先按Esc退出编辑模式,然后输”:wq”回车保存或者”:q!”不保存退出。
③开启由转发功能
1)#vi /etc/sysctl.conf
找到#net.ipv4.ip_forward = 1行,删除”#”,保存退出 Tips:#是注释符,注释后程序不会读取这条配置项。
2)#sysctl -p
使能配置
③防火墙添加允许ssh
1)#ufw allow ssh
默认防火墙是关的,我们也不用开了,这只是防止意外开了防火墙连不上去
④增加软件源
1)#vi /etc/apt/sources.list
在末位增加一行deb http://mirrors.kernel.org/ubuntu artful main
,保存。
Tips:增加这个源是为了安装最新版本的OpenVPN,不然安装版本是2.3.10
2)#apt-get update
apt-get update 更新软件源中的所有软件列表
⑤安装openvpn以及easy-rsa
1)#apt-get install openvpn easy-rsa
按y确认就会自动完成安装,so easy
⑥创建CA证书
1)#make-cadir ~/openvpn-ca
复制 easy-rsa 模板到 home 目录
Tips:等同#mkdir ~/openvpn-ca;#cp -r /usr/share/easy-rsa/* ~/openvpn-ca
2)#cd ~/openvpn-ca
进入 openvpn-ca 目录
3)#vi vars
vi编辑目录下的vars文件,设置CA证书参数
末尾找到
将=号后面修改为任意的值
保存(Esc->:wq->回车)
4)#source vars
会有NOTE提示
5)#./clean-all
清除之前的配置以及生成的证书
6)#./build-ca
启动创建过程
一路回车即可,即完成了CA证书的创建
⑦创建服务器端证书、密钥
1)#./build-key-server server
继续一路回车,直到出现这个确认提示(不小心按多了回车的话就要重复执行一次命令了。。)
最后会让你确认两次,输入y,回车即可
2)#./build-dh
生成HMAC 签名,好像是加密通讯通道的东东,可能需要等待几分钟
3)#openvpn --genkey --secret keys/ta.key
生成ta.key
⑦创建客户端证书、密钥
1)#./build-key clientA
依然一路回车,最后输两次y确认
Tips:可以多创建多几组证书、密钥对
./build-key clientB
./build-key clientC
⑧检查刚刚生成的证书、密钥对
1)#cd ~/openvpn-ca/keys
该目录是之前步骤生成的证书及密钥保存目录
2)#ls
ls一下,看到ca、server、clientA等名字的文件
Tips:
服务器端需要用到的文件有:
1 ca.crt
2 ca.key
3 dh2048.pem (如果最初的变量KEY_SIZE设为1024,这里就是dh1024.pem)
4 server.crt
5 server.key
6 ta.key (如果不开启tls-auth,则无需该文件)
客户端clientA需要用到的文件有:
1 ca.crt
2 clientA.crt
3 clientA.key (名称clientA根据个人设置可能有所不同)
4 ta.key (如果不开启tls-auth,则无需该文件)
⑨配置OpenVPN服务器端
1)#cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
注意当前目录是~/openvpn-ca/keys,是生成证书保存的目录,后续需要回到该目录拷贝证书到客户端机器
2)#gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
复制一个配置模板文件
3)#vi /etc/openvpn/server.conf
修改配置文件
i.网段默认是10.8.0.0,如果网段与你家的网段一样就需要修改。
ii.找一行client-config-dir ccd,去掉前面的”;”取消注释
4)#mkdir /etc/openvpn/ccd
创建客户端配置目录
5)#vi /etc/openvpn/ccd/clientA
新建一个命名为客户端名字的配置文件,指定该客户端的IP,内容填ifconfig-push 10.8.0.2 10.8.0.1
Tips:服务器IP是网段第一个IP,10.8.0.1,10.8.0.2是客户端IP
4)#systemctl start openvpn@server
启动OpenVPN服务
5)#systemctl enable openvpn@server
设置自启动
2、家庭服务器部分
服务器系统大家自行发挥,这里以Ubuntu 16.04为例。为什么选Ubuntu,因为简单,安装过程可以选上LAMP部件,直接为后面的对接做好准备。
①安装
具体过程省略,下载服务器版本即可。安装过程注意选上LAMP以及OpenSSH即可。
①secureCRT登陆家庭服务器
1)安装好Ubuntu,SSH服务是已经开启了,直接连接登陆即可。
Tips:如果不知道服务器IP,输入ifconfig命令查看eth0
②安装VPN
1)#vi /etc/apt/sources.list
同VPS安装同一版本的OpenVPN,增加软件源,在末位增加一行deb http://mirrors.kernel.org/ubuntu artful main
,保存。
2)#apt-get update
apt-get update 更新软件源中的所有软件列表
3)#apt-get install openvpn
客户端只安装openvpn即可
③拷贝证书、钥匙
由于证书、钥匙是在VPS上,通过sftp取有点麻烦,我们可以用图形化的工具winscp来拷贝,还有一种省事的办法就是直接拷贝文件的内容。如先前介绍,我们需要VPS的~/openvpn-ca/keys目录下ca.crt、clientA.crt、clientA.key、ta.key这四个文件。
1)#vi /etc/openvpn/ca.crt
新建空白的ca.crt
2)VPS上:#vi ~/openvpn-ca/keys/ca.crt
鼠标拖选,CTRL+INS复制
3)回到本地服务器,SHIFT+INS粘贴,保存
4)类似地,新建好clientA.crt、clientA.key、ta.key
5)#ls /etc/openvpn/
最后ls检查一下是否齐全
④配置
1)#cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client.conf
拷贝一份模板文件
2)#vi /etc/openvpn/server.conf
修改配置文件,有两处要改动的
i.
remote my-server-1 1194,”my-server-1”替换成你的VPS IP地址或者域名
ii.
Cert client.crt, “ client.crt”替换成步骤③复制证书的名称(clientA.crt)
Key client.key, “client.key”替换成步骤③复制钥匙的名称(clientA.key)
⑤启用连接
1)#systemctl restart openvpn@client
Tips:client是/etc/openvpn目录下配置文件的名称
2)#systemctl enable openvpn@client
设置自启动
3)#ping 10.8.0.1
测试连通,如配置无误可以正常访问
Tips:可以用securCRT新打开一个连接,使用#tail -f /var/log/syslog即时显示日志来观察错误提示。
至此,基础网络已经准备完毕。
参考文章传送门: