如何在内外网使用相同地址访问内网上的服务

未分类1周前更新 micktiger
21 0

本文转载自:博客左手平凡,https://blog.perass.com/archives/749.html

 

在Nas上搭建了Git服务,在内网(局域网)环境下要使用,出门在外也想使用,用过git的朋友都知道,最好是使用同一个git地址,不要频繁更改,否则就很麻烦。或者一个服务我只想记一个地址,不要外网一个地址,内网一个地址,比如手机APP需要配置服务地址的时候,这很麻烦。

这就产生了一个问题:如何在内外网使用相同地址访问内网上的服务?

我尝试过很多方案,目前只推荐本方案,因为从使用的角度上看应该是最方便的,无感切换。我相信很多朋友会感兴趣,下面就来介绍下

 

1、实现原理

如何在内外网使用相同地址访问内网上的服务

 

2、具备的条件

  1. 一个域名
    允许配置ddns,比如阿里云的域名。
  2. 内网宽带具有独立IP
    可以配合ddns做端口转发,当然家里的猫和路由器可以做端口转发。

 

3、实现步骤

 

3.1、在NAS上安装GIT服务

部署流程这里不介绍了。

需要注意的是:在外网提供服务的端口要和安装git的服务端口要保持一致,一般选择大一点,比如20020

安装好后,你可以通过 http://192.168.31.5:20020 正常访问

 

3.2、配置外网访问

3.2.1、配置访问服务的域名

打算使用 s.perass.com 这个二级域名作为访问NAS服务的基础域名,先在阿里云上进行域名解析(任何一个支持ddns的域名服务商都可以),类型选用 A记录,地址先随便填一个,比如: 192.168.1.3

3.2.2、配置DDNS服务

DDNS是动态DNS的意思,就是把s.perass.com解析到你的光猫上。那为啥是动态的呢,因为你家庭宽带的IP是动态的,每隔几天就会换,我们需要实时进行检测和调整。

需要在你的内网中建立一个DDNS客户端,每隔几分钟就检查一次你当前光猫的IP是多少,如果发现换了就通知阿里云DNS解析切换到新的IP上。

建立DDNS客户端有多种方案:

  1. 有些路由器直接支持,在路由器后台配置就可以了。
  2. 在nas上运行一个脚本。需要你懂一些Linux脚本的基础,教程:Linux部署阿里云解析ddns
  3. 运行一个docker,内置了服务。

3.2.3、在光猫上配置端口转发

外网访问的端口要和git部署服务的端口保持一致,比如:20020

在光猫上配置端口转发,把外网的20020端口 转发到 路由器的IP上 192.168.1.3

3.2.4、在路由器上配置端口转发

把20020端口 转发到 NAS的IP上 192.168.31.5

好了,到此为止,你可以在外网环境下通过 http://s.perass.com:20020 来访问你的服务了。

在内网上大概率你还是访问不了,你可以连接手机热点进行测试。

 

3.3、配置内网访问

这里也有几个方案:

  1. 配置路由环路。我猜家里的环境大概率配置不了,算了。
  2. 配置Dnsmasq服务。
  3. 配置本机host。

3.3.1、配置路由环路

略过

3.3.2、配置Dnsmasq服务

原理是:你在内网部署一个私有的dns服务,解析192.168.31.5 与 s.perass.com的关系,并在路由器上设置优先使用。当你的电脑/手机连接wifi时候,自动使用内网的dns服务,当你出门在外的时候则使用阿里云的dns服务。

(1)在nas上安装Dnsmasq服务,网络上教程很多,不展开了

(2)配置域名解析(注意下格式)

如何在内外网使用相同地址访问内网上的服务

(3)在路由器上配置dns(安装了Dnsmasq服务的IP一定要写第一行,就是DNS1的这行)

如何在内外网使用相同地址访问内网上的服务

3.3.3、配置本机hosts

如果你觉得配置Dnsmasq服务太过于麻烦,你也可以通过手动修改本机hosts文件的方案进行访问。

原理是:在内网的环境下,手动配置 192.168.31.5 与 s.perass.com 的域名解析,因为host文件的解析优先级最高,所以忽略掉了阿里云的域名解析。在外网环境下,你把hosts文件的域名解析注释掉,那就使用阿里云的域名解析了。

当然有自动化脚本了,详见:window/mac切换hosts域名DNS

缺点是:切换网络的时候,需要双击一下执行脚本。然后手机端不好弄。

 

所有配置都完成后,无论是内网还是外网都通过:http://s.perass.com:20020 访问,切换是无感的。

© 版权声明

相关文章

暂无评论

暂无评论...