如何实现公网访问路由器-内网穿透教程
接上篇教程,现在由于大部分的运营商已经不再分配公网的ipv4地址,大部分的结构其实是这样的
由于局域网的地址是不能在公网直接访问的,那么我们要怎么做才能访问公网呢?
有两种方式,下面我先介绍第一种
通过VPN 目前比较好用的可以说是zerotier了
说一下简单的配置过程吧
ZeroTier账号注册
1、百度搜索ZeroTier,找到ZeroTier官网,默认第一个就是,注意鉴别是否为官方的地址。
2、进入主页之后,点击 sign up,进入注册页面
3、在注册页面默认是英语,英语不好的可以使用翻译网页,按照表格提示填写相对应信息完成注册。
4、注册以后,填写的邮箱会收到一封激活的邮件,点击邮箱里面的链接激活账号。
5、账号注册成功以后,点击邮箱链接跳转到主页,或者在官方首页的右上角选择 Log in输入相关账号信息进行登录。
6、下面是注册成功首次登录的界面,默认已经创建好了一个网络,可以直接使用。
7、点击已经创建好的的网络,进入配置界面,我们可以对相关选项进行修改,例如网路名称、局域网IP等,小白建议直接保持默认,最重要的就是这串 NetWork ID ,在后续组网的过程中会用到它。
ZeroTier客户端使用
- 在ZeroTier官网首页的download页面下可以看到支持的平台,点击相关平台进入下载配置页面。
- ZeroTier组网过程并不难,大概意思就是下载相对应的客户端,然后输入NetWork ID,连接成功以后登录ZeroTier在配置界面授权即可,然后通过分配的局域网ip访问即可,为了照顾小白,我将分平台演示一下。
群晖等NAS端
群晖DSM6.X下载相关套件安装以后要加入网络然后授权即可,DSM7.0以上可以使用第三方套件或者docker,这里我们使用官方推荐的docker方式。
1、登录群辉,打开File Station,在docker目录下新建文件夹并重命名为ZeroTier,然后赋予读写权限。
2、打开docker(如果没有的话请在套件中心进行下载)→注册表→搜索zerotier-synology双击选择最新版本(latestr)下载
3、下载好以后在映像中找到下载好的镜像,双击启动。 常规设置:容器名称保持默认即可,勾选使用高权限执行容器。
4、点击高级设置,在高级设置中勾选启用自动重新启动。
5、存储空间中 文件/文件夹选择新建立的zerotier目录,装在路径按照我的填写。
/var/lib/zerotier-one ## 装载路径
6、网络勾选使用与Docker Host相同的网络 即可。
7、其他保持默认,无需修改,然后点击下一步→完成。
8、登录ZeroTier,复制自己的netowrk id 一定要将下面命令的 网络id修改为自己的。网络id为最后面的那串(159924d630bbc72a)
zerotier-cli join 159924d630bbc72a
9、在容器列表中找到ZeroTier,选中容器点击容器右上角的详情。
10、点击终端机→新增边上的小箭头,选择通过命令启动。
11、在弹出的对话框中粘贴第8步的命令(切记一定要修改ID)。
12、点击确定,然后点击zerotier-cli,如果出现200 join ok的界面运行成功。
13、然后回到zerotier 官网,登录以后进入配置界面,在页面最下面对已经出现的设备进行授权,授权的方式为在□中打上√,取消打√即为取消授权。(如果没出现请稍等几秒之后刷新界面)
14、nas端配置完毕,其他nas大同小异,如果有相关套件或者软件程序直接安装使用,如果没有按照群晖的docker配置即可。
Windows端
1、ZeroTier为windows提供了相关的软件程序,打开ZeroTier官网,点击download。
2、下载好的程序直接安装就行,全程默认下一步,继续之类的操作即可。
3、安装好以后打开软件,在windows任务栏右下角会出现ZeroTier图标,右击图标,选择 Join new network,然后粘贴上网络id,点击join。
4、等待几秒之后登录ZeroTier,在后台进行授权即可。
5、window端配置完毕,在这个时候我们在远程已经可以使用分配的内网IP来访问nas了,在浏览器中输入http://192.168.192.245:5000
6、win端部署成功。
MAC端
mac端官网有提供相对应的软件,安装成功之后直接粘贴网络id,然后再后台授权即可。
Linux端
linux端类似乌班图之类的有应用商店的直接商店搜索ZeroTier安装之后执行加入网络命令步骤3及以后,其他发行版执行1-2步在执行步骤3及以后. 1、root用户登录以后输入下面命令进行安装。
curl -s http s : / /install.zerotier. com | sudo bash
2、安装成功以后如下图所示。
3、输入下面命令加入到网络。
zerotier-cli join 159924d630bbc72a
4、登录ZeroTier后台进行授权,配置完成。
移动端
苹果和安卓均有相对应的移动端,安装成功以后输入对应的网络id,然后在ZeroTier控制台中授权即可。
安卓端:
苹果端:(来自网络)
总结
ZeroTier组网相对于之前成功率高了很多,本次搭建教程各终端组网包括官网访问非常顺畅,推荐大家尝试一下,且ZeroTier各终端配置非常简单,总结步骤:注册账号→设备安装相对应平台的软件→加入网络→在ZeroTier后台授权即可。
访问的时候使用分配的内网ip即可,内网ip可以自定义且支持ipv6等设置,有兴趣的可以搜索一下。
以上教程借鉴与https://baijiahao.baidu.com/s?id=1738840233744208152&wfr=spider&for=pc
另一种实现方式,通过ipv6
我们知道现在大多数网络设备都已经支持ipv6了,ipv6的地址一般也是公网的ipv6地址
如何获取ipv6地址和测试自己是否支持ipv6,可以参照此教程https://ipw.cn/doc/ipv6/user/enable_ipv6.html
我们如果已经拿到到了ipv6的地址,那么我们怎么才能更好的利用这个ipv6的地址呢
不知道你有没有听过动态dns,就是将一个固定的域名绑定在ip地址上,然后如果ip地址发生变化,就通过脚本将ip同步更改
整个流程如下
那么我们就可以通过固定的ip地址来访问我们的路由器了。
路由器里有比较简单的ddns服务,稍微看一下就知道怎么操作了。
我们现在讲另外一个比较难解决的问题,端口转发,比如我们如何远程登录ssh,我们知道ssh默认的端口号是22,这时候我们肯定是无法访问的
这里也有两个做法,一个是通过iptables的命令实现端口转发,另一个是socat这个插件实现端口转发,通过研究发现iptables也不是很好用,反倒是socat十分好用,这里我将端口转发的命令贴出来
1 | socat TCP6-LISTEN:12345,reuseaddr,fork TCP4:192.168.6.1:9999 & |
这里解释一下这个命令,是将外网的ipv6端口12345 转发到内网的192.168.6.1 9999端口上 & 是保持后台运行,将这行命令粘贴到启动项里,就可以实现开机自启动了。
还有就是socat的安装其实也比较简单,如果在软件包里无法找到的话,就更新一下软件包的源,或者自己手动进行安装,我这里贴一下我使用的一些软件包的源
1 | # add your custom package feeds here |
然后实现的效果就如下:
固定域名访问
ssh连接