前提
我的目的是想在家外边的时候,可以随时在外读取家中 NAS 中的文件,还想控制家里的设备下载电影回家就可以观看等等…因为NAS上有the movie db需要刮削影视信息,还有oneDrive和Google硬盘的数据同步,所以NAS本身需要科学上网.主路由是iKuai,旁路由是安装在MAC上的Surge, 且MAC常年不关机.
想实现这个目的的前提,是你可以在外面控制家里设备对吧,要想实现这个其实不难,有两个常用的方法,一是有公网 ip 做端口映射
,二是做内网穿透
;
今天我们探讨的问题是基于端口映射衍生的问题,如果有机会我会来说说内网穿透。
遇到的问题
我们先看下网络拓扑:
为了让不太了解网络基础的读者可以理解这张拓扑图,这里我来解释一下;
通过拓扑我们可知,在这个家庭网络中有两个路由器,如果你把图中的旁路由去掉就是现在大部分家庭的网络状态了,『用 wifi 连接路由器,路由器连接光猫』;现在增加了一台路由器(旁路由)你也可以叫它网关
,那么这个网关就可以实现一些网络处理、远程下载电影、运行一些程序…
有一些程序如果你想使用网关,你得把电脑连接网关例如” 电脑 2”、” 电脑 3”;
总结一下,因为我想实现远程下载电影、跑一些程序等等一些需求,所以我增加了一台旁路由,但我家人又没有这个需求,所以他们就不用连接旁路由,直接连接主路由就好了,例如” 电脑 1”、”iPad” 这两台设备;
假如拓朴中的设备是一直开机的,而我是有公网 ip 的,我想在家外面访问家里的电脑,这时就需要上面说到的端口映射
了;
端口映射是必要在主路由做的,一般路由器都有这个功能,这个时候做好端口转发后有意思的来了,你会发现” 电脑 1”、”iPad” 可以访问,而” 电脑 2”、” 电脑 3” 访问不了,而这就是我遇到的问题。
我使用的旁路由是基于一个名字叫「Surge」的程序,这里引用 Surge 团队给出的解释:
该问题与路由器的端口转发的实现方式有关:
- 若路由在转发时,将数据包的 SRC IP 修改为了路由的 IP 地址,则回向包将直接发给路由,可以正常工作。
- 若路由在转发时,未修改数据包的 SRC IP,则回向时该数据包将会交给 Surge 处理,但 Surge 没有对应的端口转发信息,只能抛弃该数据包。
看不懂?没关系我们解决它就可了。
解决的方法
这是一种我自己在用的方法,Surge 当网关的优势有很多,它基于 Mac 上才能运行所以 Mac 就可以被我当一个下载机,作一个小型的 Nas…
我的主路由是一个爱快路由系统,如果你是其他的路由器原理是一样的,需要在其中找到创建 NAT 转发的选项,点击新增一条规则,如下图所示
我们需要填写好下面几条选项:
- 动作:源地址 NAT
- 进接口:wan 口
- 目的 ip:需要映射的设备 ip
- NAT 地址:主路由 ip
做完这一步再去正常做端口映射就可以了。
上面说的方法是比较简单的,也是本次分享的重点,如果你还是解决不了,可以考虑用类似 socat 或者 Nginx 在 Mac 上做端口转发,总结就是主路由转发端口到 Mac,Mac 再转发到设备上,这里仅分享一种思路。
评论前必须登录!
立即登录 注册