Javascript 仅允许同一网络上的计算机使用Express ip筛选器

Javascript 仅允许同一网络上的计算机使用Express ip筛选器,javascript,node.js,express,ip,localtunnel,Javascript,Node.js,Express,Ip,Localtunnel,因此,我使用localtunnel在internet上公开我的端口,但我只想让服务器所在网络上的设备访问服务器 我正在使用express ip filter过滤掉不同网络上的任何内容。我尝试了几件事:首先,我尝试使用192.168.1.0/24作为唯一可以访问该网站的IP,但这不起作用,因为它不允许任何东西进入。然后我试着使用我从WhatsMyIp获得的ip,但那不会让任何设备进入。然后我发现express ip filter会弹出一条消息,说某个ip是不允许的,并且在它连接到的网络上的每个设备

因此,我使用
localtunnel
在internet上公开我的端口,但我只想让服务器所在网络上的设备访问服务器

我正在使用
express ip filter
过滤掉不同网络上的任何内容。我尝试了几件事:首先,我尝试使用
192.168.1.0/24
作为唯一可以访问该网站的IP,但这不起作用,因为它不允许任何东西进入。然后我试着使用我从WhatsMyIp获得的ip,但那不会让任何设备进入。然后我发现
express ip filter
会弹出一条消息,说某个ip是不允许的,并且在它连接到的网络上的每个设备上,地址都是
127.0.0.1
。我尝试通过只允许
127.0.0.1
来确认,然后每个设备都可以访问服务器。为什么ip筛选器只能获得127.0.0.1作为ip?以下是我的代码作为参考:

// Init dependencies 
var express = require('express'),
    ipfilter = require('express-ipfilter').IpFilter

app = express()

// Blacklist the following IPs 
var ips = ['192.168.1.0/24']

// Create the server 
app.use(ipfilter(ips, { mode: "allow" }))
app.get('/', function (req, res) {
    res.send('Hi')
})

app.listen(8080, () => console.log('Up'))

从我对
localtunnel
的有限理解来看,它似乎通过localtunnel软件代理用户向您发出的请求,从而使所有用户都拥有相同的IP。用外行的话说:

  • 用户通过
    localtunnel
  • localtunnel
    复制用户请求并将其发送到您的计算机
  • 您的应用程序收到请求,但看起来所有流量都来自
    localtunnel
    ,因为
    localtunnel
    模仿其他人的IP非常困难
  • 为什么要使用
    localtunnel
    如果您只想连接同一网络上的设备,而只想访问同一本地网络上的另一台机器,则不需要执行任何端口转发或DNS设置

    如果您真的需要隧道连接,那么有一个解决方案,而不是使用localtunnel(据我所知,localtunnel不用于涉水标题,尽管如果有人知道他们是否需要,我会更改我的答案)但是使用,它做的事情完全相同,但在每个请求中也会发送一点额外的数据,告诉应用程序客户端的实际IP是什么

  • 安装ngrok
  • 运行
    ngrok http-subdomain=(您想要的子域)80
  • 编辑应用程序代码以查找真正的客户端IP

    var findProxyIP = function(req) {
      var realIP = req.header('x-forwarded-for');
      return realIP;
    }
    app.use(ipfilter(ips, {
      mode: "allow",
      detectIP: findProxyIP
    }));
    
    与localtunnel相比,ngrok要复杂得多,具有更多的功能,但是,它是freemium软件,其免费计划非常有限


  • 是的,除了它也不是免费使用的大多数功能:P