很多文章介绍用内网穿透的方法,远程连接到家庭网络。内网穿透方法适用于你没有权限控制路由器(比如公司的网络)、没有公网IP的情况,因此不得不依赖一个第三方的公网服务器做桥梁建立连接。如果你是想连接到家里,家里的路由器是你所能控制的,只要有个小设备做内应,并且家里的宽带具有公网IP,完全可以用更简单的方式连接。
其实说白了很简单,就是在家的某个服务器上装一个虚拟专用网络(英文缩写为敏感词)服务,再通过路由器开放端口到公网,然后在外的手机或电脑通过系统内置的连接客户端即可建立连接,连接成功后,设备就处于家庭局域网之中了。
虚拟专用网络有多种协议可实现,选型时,因为苹果手机不支持PPTP协议,所以选择了IPSec方案。
安装
我的虚拟专用网络服务搭建在猫盘上,操作系统是Debian 10,直接使用一键安装脚本即可,作者的文档已经写的非常详细,直接参考就可以。脚本是这样的:
wget https://git.io/vpnsetup -O vpnsetup.sh && sudo sh vpnsetup.sh
注意点:
请记录下一键脚本安装后在屏幕上显示的PSK、账号、密码信息,配置客户端的时候要用。
配置端口映射
虚拟专用网络
服务器在家庭内网中,需要在路由器上开端口映射才能在外面连接。
在路由器上添加两个UDP端口映射到服务器,分别是500和4500。注意不要修改端口号,因为客户端无法自定义端口。
DDNS
为了能让客户端找到你家的网络,所以实际上还需要用DDNS,申请个域名,并绑定到宽带的动态公网IP地址。这方面的教程网上很多,这里就不说了。
客户端连接
其实完成上面的步骤就已经结束了。。。
现在的安卓手机和苹果手机都内置虚拟专用网络连接方式,以安卓手机为例,在设置->其他无线连接->威屁N(请自行理解对应英文)中,按照安装环节记录下的连接参数设置好就行,如下图所示,然后就可以试试连接了!
客户端无法联网问题
在外使用客户端拨号进入家庭网络后,能操作家里的服务器,但却无法上互联网。经排查,发现是因为一键脚本自动配置的iptable设置在Debian 10上无效。参考了这个链接,把/etc/network/if-pre-up.d/
下的iptablesload
文件移动到/etc/network/if-up.d/
下重启即可。这是不是正确的方法我也不知道,请大神指教!
找回PSK、账号、密码
后来要在一台新设备上配置客户端,发现找不到当初记录的账号信息了,最后在服务器上找到了原始信息:
- 预共享密码(PSK):在
/etc/ipsec.secrets
文件中 - 账号、密码:在
/etc/ppp/chap-secrets
文件中