一. 如何实现外网访问本机
1. 运行本机服务,如:NodeJS跑起来
2. 上一步我们只实现了自己访问,但如何让外网能访问到你机子。有两种情况
(1)你上网没有用路由,运营商单独分给你一个外网IP地址,那你直接可以用你的IP让外网的同学来访问你的网站,我这里启动NodeJs用的是3000端口,所以形式为:XX.XX.XX.XX:3000。那我们怎么知道自己的IP地址,只要在百度搜索“IP查询”,第一个就是。
(2)用了路由器,一个路由器带了好几台电脑,这就需要你去路由管理页面去设置一下,端口映射,让别人访问你们的IP地址时,映射到你的电脑,在浏览器中输入192.168.1.1(以你的路由为准),进入路由管理页面,找到端口映射,把(路由的端口)映射到你(本机的ip+端口),这样外网访问(路由的外网ip+端口)就能找到你的本机地址
二. 为什么设置了端口映射但是访问不了
1. 你能搜索到这里,没猜错的话,你已经百度过这些问题了,或许已经找遍了满地的教程。你想实现路由器端口映射,可是总是无法正常连上。可无论如何按部就班地照做,还是无法成功。甚至曾经一度可以,而最近怎么也不行了
因为——你没有了公网IP。
2. 为什么没有了?
无论是电信、联通、还是移动或铁通,从ADSL升级之后,就已经开始支持了共享公网IP的方式,通过一系列的网络框架,使得无需为每一个单独的用户分配一个IP地址,一是因为IP地址是非常稀缺的,二是为了更高的安全性。并且,对绝大多数宽带用户的绝大多数软件而言,公网IP并不是必须的,于是宽带有了这样的调整。
这样的网络框架,可以简单理解为在你的路由器外,又接了一层路由器,然后外面才是原来的公网环境。这样,按常规理解,需要成功设置端口映射,需要在两层路由器上都要设置,但是,外面那层路由,在电信机房,不开放给用户设置的。
不过,某些省份或某些城市,因为一些遗留问题,还没有实现这样的两层路由的框架,因此还可能存在公网IP,但是,这样的情况不多,当前有测试过的地区(2016年),安徽、福建的电信,一部分是可以的。其他地区,如四川、重庆、北京、浙江、江苏等等大多数省市,都已经没有了。
对于联通、移动、铁通等等网络,他们从基础架构上,就没有对用户开放公网IP服务。倒是老的ADSL,2M-4M带宽以下的那种,用电话线的,可能是支持的。
3. 如何验证这个情况呢?
进入路由管理界面找到路由的ip地址和百度ip地址比对是否一样,如果路由器里显示的地址,与百度里显示的不一样,那么就印证了这个情况。
4. 如何彻底解决?
彻底解决,得从原理说起,路由器让多个内部机器能共享IP,是采用了一个叫做NAT的技术,这也使得通常情况下,里面可以往外连,而外面不能往里连。
如果要外面能连进来,则需要单独设置,如同你在家用路由上做的设置一样,外面那个电信的大路由,也要做一层设置。但这是电信机房的管理范围,用户没有这个权限。
电信也有提供公网IP的服务,不过价格就不是一般水平了,一般10M的光纤,带公网IP,每月价格在1千到2千左右,这个业务,叫做:“专线”,如果确实愿意花这个费用解决问题,可以直接咨询电信开通。
对于普通情况下,想免费或廉价地解决,通常使用这个方法,技术上叫做:“隧道转发”
5. 何为隧道转发
原理是通过一台公网的服务器提供IP地址,让本地客户端预先与它取得连接,通过指定一定的转发规则,将外部请求转发到本地客户端,本地客户端再将请求发往原本需要映射的地址上,而外部连接地址,则使用此服务器提供的IP地址与端口即可。这样的方式,需要在机房额外托管一台服务器,并承担相应的服务器费用。
路由侠就是这样一款软件,由我们来提供服务器,用户只需要下载客户端,即可完成隧道转发。在一定带宽与流量的范围内,是完全免费的。对大流量用户也提供了额外的付费业务。
原文地址:http://bbs.luyouxia.com/thread-339-1-1.html
来源:https://www.cnblogs.com/dlm17/p/12590772.html