赞
踩
小明苦学web技术,终于在自己主机上搭了服务器,做了一个网站。
此时,小明想要向他的朋友们炫耀一下,于是把本机ip和端口号发给了小伙伴们,
但小伙伴却反馈网址打不开。。。
小明心想怎么可能?于是打开命令行输入ipconfig确认了自己的ip地址,接着确认了服务器暴露的端口。发现没问题啊,也把防火墙关了,小伙伴怎么访问不了呢?
小明百思不得其解,或许,屏幕前的你也有这样的困惑,接下来,我来讲讲如何让你的小伙伴访问你的网站
首先要解决一个问题,就得清楚问题原因所在!!!
小伙伴访问不了小明的网站,最主要的问题就是ip是错的!
什么?ip不是在命令行查出来了吗?难道你的主机会骗你?
hh,主机没骗你,但它只是显示你的私网ip
看到这,你可能会有疑问,既然我的主机是私网ip,那不就不能访问互联网?那我平时上网是怎么回事?
私网ip:192.168.*、10.*等,这些ip是无法被直接访问的
私网主机访问公网主机的过程其实是ip转换的过程,通俗讲就是你的ip在请求的时候会转换成公网ip,然后再进行通信
转换ip的过程称为nat技术,而nat的出现就是为了节省ip,还能保证一定的安全
例如你的ip是192.168.110.65,这是一个私网ip
你的上网过程就是下面这张图
首先你要访问百度,然后在主机输入www.baidu.com
接着dns会解析网址,得到百度的ip,例如是1.2.3.4
接着你的请求发到nat-router上,其实就是发到你家的路由器上,这是过程1
接着nat-router解包发现目标ip是1.2.3.4,不是本网络的ip,他就会转换源ip
此时源ip变成路由的ip,例如134.243.123.42,且端口号也会改变
(私网主机一个ip和一个port对应nat-router上的ip和某个port,nat-router会记录这个映射,当然不同的nat技术是有差别的)
此时,发往百度的请求变成上图的过程2
通过网络后,到达百度的服务器,百度处理后返回包,这就是过程3
再次通过网络后,回到nat-router,nat-router查看映射,再次将包的ip和端口号转换(查看映射)
这就是过程4,然后你的主机收到回复,且你认为就是百度发给你的。
可以发现,想要收到外界的回复,需要在router上有映射关系,否则即使router收到response,它也不知道发给谁。
这就是你的小伙伴访问不了你网站的原因
怎么解决呢?
既然要通过router,那我们就在router上面添加映射
1. windows+R,输入cmd打开命令行,输入ipconfig查看你的ip
2. 在浏览器网址格输入默认网关
3. 找到nat服务(端口映射、虚拟服务器等等,不同router叫法可能不一样)
4. 一般会有外部端口、内部端口、外部ip、内部ip,内部ip
内部端口写你服务器的端口,外部端口随便写一个例如80,添加映射之后,你的小伙伴应该就能访问了
不能访问是怎么回事?
1. 你服务器开了没有?用手机在局域网内登入你的网站看看能不能进去
2. 主机防火墙关了没有?或者设了白名单没有?
3. 检查路由的防火墙
4. 你的主机没有公网ip
第四点出现的概率比较大,怎么查看呢?
打开百度,输入‘ip地址’,会弹出来你的公网ip,比较一下你的默认网关的ip,相同就说明你有公网ip,否则没有。(为什么这么比较,你看看上面那张图就知道)
等等?什么?这时候又弹出来公网ip了?不是没有吗?
原因如下图:
看的出来,你的nat-router外面还有nat-router,也就是你的第一层外网其实也是内网
即使你设了端口映射,但外网还是访问不了你的网站,不过在上图中最大圈圈里面的主机(比如你的隔壁宿舍,如果运营商相同的话)都可以访问你的网站,至于原因,相信你在看了文章后已经知道了。
此时没有什么好的办法,除非你有办法一层层在nat-router添加映射
其他方法
1. 干脆点,买个云服务器
2. 下载个内网穿透的软件
搞完以后,你就可以暴露自己的网站了
可以跟你朋友说:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。