2017-10-28 5 views
0

So localtunnel Ich verwende meine Ports über das Internet zu belichten, aber ich mag nur Geräte im selben Netzwerk wie der Server auf den Server zugreifen lassen.Nur erlauben Computer im gleichen Netzwerk mit Express-IP-Filter

Ich verwende express-ip-filter nichts zu filtern weg, die in einem anderen Netzwerk ist. Ich habe versucht, ein paar Dinge: Zuerst versuchte ich 192.168.1.0/24 als einzige ips verwenden, die auf die Website zugreifen können, aber das hat nicht funktioniert, da es nichts einlassen habe ich dann versucht, die IP verwenden ich von WhatsMyIp bekam, aber das. würde kein Gerät einlassen. ich fand heraus, dann, dass express-ip-filter sagte eine Nachricht ausspuckt, dass eine bestimmte IP nicht erlaubt und auf jedem Gerät wurde unabhängig auf dem Netzwerk es verbunden wurde, war die Adresse 127.0.0.1. Ich habe versucht, nur 127.0.0.1 zu bestätigen, und dann konnte jedes Gerät auf den Server zugreifen. Warum würde IP-Filter nur 127.0.0.1 als IP erhalten? Hier ist mein Code als Referenz:

// 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')) 

Antwort

0

Von meinem begrenzten Verständnis von localtunnel es scheint, wie es Benutzer Anfragen an Sie über die localtunnel Software-Proxys, die bewirkt, dass alle Benutzer die gleiche IP haben. In laymans Bedingungen:

  1. Benutzer eine Verbindung zu Ihrer Website durch localtunnel
  2. localtunnel kopiert die Benutzer anfordern und sendet sie an den Computer
  3. empfängt Ihre Anwendung die Anforderung, aber es sieht aus wie der gesamte Verkehr von localtunnel kommt, weil es ist unglaublich schwierig, wenn nicht unmöglich für localtunnel jemand anderes IP zu imitieren.

Warum localtunnel überhaupt verwenden, wenn Sie nur Geräte im gleichen Netzwerk eine Verbindung herstellen möchten, brauchen Sie keine Portweiterleitung oder DNS-Setup zu tun, wenn Sie nur eine andere Maschine auf dem gleichen lokalen Netzwerk zugreifen möchten.

Wenn Sie wirklich Verbindungen tun müssen, dann gibt es eine Lösung, nicht mit Localtunnel (was soweit ich weiß, verwendet keine Header, obwohl wenn jemand weiß, ob sie meine Antwort ändern), aber mit https://ngrok.com Stattdessen, die genau dasselbe tut, aber auch ein bisschen mehr Daten in jeder Anfrage sendet, die der Anwendung mitteilt, was die tatsächliche IP des Clients ist.

  1. Installieren ngrok
  2. Run ngrok http -subdomain=(the subdomain you want) 80
  3. Bearbeiten Sie Ihren Anwendungscode die realen Client-IP-

    var findProxyIP = function(req) { 
        var realIP = req.header('x-forwarded-for'); 
        return realIP; 
    } 
    app.use(ipfilter(ips, { 
        mode: "allow", 
        detectIP: findProxyIP 
    })); 
    

    ngrok ist viel komplexer und hat viel mehr Funktionen im Vergleich zu localtunnel zu finden, aber Es ist Freemium-Software und ihr freier Plan ist ziemlich einschränkend.

+0

Ja, außer es ist auch nicht frei, die meisten Funktionen zu verwenden: P – Corrado

Verwandte Themen