智障家居初战-网络篇

本篇主要讲解网络方面的准备:将会申请一台配备公网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即时显示日志来观察错误提示。

​至此,基础网络已经准备完毕。

参考文章传送门:

1、OpenVPN2.4.3 安装部署文档(实战)

2、怎样在 Ubuntu 16.04 上安装 OpenVPN 服务

3、深入OpenVPN的配置