赞
踩
用Go写了一个网盘,之前一直是在局域网内调试,真正使用起来肯定还是需要能外网访问的。所以,就想着搞一个外网能访问的web服务器。
之前有了解过如何让外网访问局域网的主机,这样调试什么的都比较方便。当然也可以租个阿里云服务器,把网盘挂上去,这样最简单,看了一下,租个服务器一个月要花好几十,最后决定自己搭服务器。申请公网IP或者用花生壳的内网穿透服务应该可以搞定。
记录一下整个流程:
这个比较简单,直接打运营商客服就行了。我用的电信,直接10000号让客服给开通公网IP就好了。然后通过光猫的设置界面能查到WAN IP,这个IP如果和百度搜索本机IP
的结果一样的话,说明已经开通公网IP了。但是公网IP不是固定的,在重启光猫后,运营商分配的IP会改变。这里会导致域名解析后,IP地址已经更换了,后面需要设置动态域名解析配置可以解决这个问题的。
光猫拥有公网IP后,接入到光猫的设备,会被路由设置为局域网IP,这时,外网是没有办法访问到这些被分配局域网IP的设备的。可以通过将光猫配置桥接模式,然后通过拨号来实现外网设备访问内网设备。或者是通过端口映射或者是DMZ来配置。这里我尝试了光猫改桥接模糊,这时需要光猫的超级管理员账户登陆,通过网上的方法破解了超级管理员的密码,然后登陆进去了,改桥接模式需要拨号账户,也就是宽带账户,这个可以通过中国电信官网查询到的。但是我没有这样做,因为事前没有准备这个账户,修改后,没办法拨号上网。最后尝试了端口映射。这里外部端口应该要大于5000。一般这个设置不是叫端口映射就是脚虚拟主机服务。
找到一篇讲解的很详细的关于端口映射的文章。
这里又一个疑问,在我映射好后,不知道为什么从外网Ping不同这个主机。不知道是不是因为端口号的原因。尝试把内部端口号改为ssh的默认端口号,ssh服务也登陆不上。(原因:因为运营商对一些常用的端口号进行封禁了,所以我们的21,443,80都是用不了的,所以最好是使用端口映射,将内部的默认端口映射到一个大于5000的端口号)
DMZ是和端口映射类似的服务。只是相当于把内部端口和外部端口全部映射。这样就不用一个端口一个端口的配置了。测试了DMZ主机,同样也是能访问到内网主机的。并且ssh也能使用了,但是速度ssh的访问速度非常的慢,而且非常大概率的连不上。
这里我运行我的网盘程序netdisk
,然后通过另外一个外网设备(网络是通过联通卡手机开的热点)在地址栏输入http://公网IP:外部端口/login
,发现已经能访问我的netdisk服务了。说明映射是成功的。只是好奇为什么Ping不通。(运营商对ping服务也是封禁的)
域名我是通过阿里云万网申请的,花了点钱,然后设置域名解析,将这个域名和我的公网IP绑定(这里域名服务商平台有提供这个设置的)。这样访问这个域名就能跳转到我的公网IP下端口映射的服务器了。因为这个公网IP在光猫重启后会改变,所以肯定还是要想办法解决。
由于路由器一般都是内置的花生壳的动态域名解析服务。所以我申请的阿里云万网域名没有办法用。
但是,阿里云提供了修改DNS的接口。各个语言的SDK都有API,这里因为我的网盘是Go语言写的,所以我用Go写了一个DDNS的服务,用来实现动态域名解析,解决公网IP变化的问题。
之后,通过地址栏输入sault.top:外部端口/login
,也访问到了我的netdisk服务。
另外的问题就是,如果是两台设备在一个局域网中,通过公网IP和域名,都是没有办法访问到我的网盘服务的。网上说的是通过DMZ服务实现所有端口的映射就可以了。目前还没尝试。如果要是可以在局域网内进行域名解析的话,这样调试器来也会方便很多的。可以自己配合各DNS服务器,然后将这台DNS服务器作为局域网内的DNS服务器,这样应该就可以实现局域网内的域名解析了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。