nodejs如何检查哪个IP访问80端口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs如何检查哪个IP访问80端口相关的知识,希望对你有一定的参考价值。

参考技术A 由于linux的系统限制,普通用户是无法打开1024以下端口的,这里面就包括http的默认端口80,这就使得很多用户使用root权限来执行node,这带来了不可预计的安全问题,所以这并不是一个好办法。
其实我们可以使用iptables的端口转发功能来解决这个问题:

1,首先将node的主程序绑定到高于1024端口,比如8090,这样普通用户就可以启动这个http server了,只不过不是在默认的80端口上监听;

2,配置iptables将80端口转发到8090上,如下命令:

#iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8090

该命令的意思就是在iptable中添加一条端口转发规则,如果删除该规则,重新绑定,则先查找出:
#iptables --line-numbers --list PREROUTING -t nat

然后使用行号删除:
#iptables -t nat -D PREROUTING 行号

3,记得添加8090端口到iptables的INPUT ACCEPT规则中
#iptables -I INPUT -p tcp --dport 8090 -j ACCEPT

4,第2步和第3步添加的这些规则,都是临时性的,重启服务器之后就无效了,所以需要保存起来
#/sbin/service iptables save

端口转发配置完成
————————————————
版权声明:本文为CSDN博主「newborn2012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/newborn2012/article/details/23860687

论自己电脑如何搭建服务器

一. 如何实现外网访问本机

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

 

以上是关于nodejs如何检查哪个IP访问80端口的主要内容,如果未能解决你的问题,请参考以下文章

如何解决访问Apache 80端口出现超时的问题

电信固定ip宽带80与8080端口踩坑

服务器上的tomcat正常开启,别的机器无法访问80端口,服务器本机可访问80端口。访问其余端口正常。

阿里云服务器无法访问80端口或8888等端口解决办法

mac无法使用80端口问题

H3C 18-63-1 如何禁止访问一个外网IP的一个端口?