2017-10-28 12 views
0

인터넷을 통해 내 포트를 노출하려면 localtunnel을 사용하고 있지만 서버와 동일한 네트워크의 장치 만 서버에 액세스 할 수 있도록하려고합니다.Express-ip-filter를 사용하는 동일한 네트워크의 컴퓨터 만 허용

나는 다른 네트워크에있는 것을 걸러 내기 위해 express-ip-filter을 사용하고 있습니다. 나는 몇 가지 시도했다 : 먼저 웹 사이트에 액세스 할 수있는 유일한 ips로 192.168.1.0/24을 사용해 보았지만 아무것도 작동시키지 않았으므로 작동하지 않았다. 그런 다음 WhatsMyIp에서 얻은 IP를 사용하여 시도했지만 그 것이었다. 나는 어떤 기기를 안으로 들여 놓지 않을 것이다. 나는 그 다음에 express-ip-filter이라는 메시지가 특정 ip가 허용되지 않았으며, 모든 장치에서 독립적으로 그것이 연결된 네트워크에서 127.0.0.1이라는 메시지를 뱉어 냈다. 나는 단지 127.0.0.1을 허용함으로써 확인을 시도한 다음 모든 장치가 서버에 액세스 할 수있었습니다. 왜 ip-filter는 ip로만 127.0.0.1을 얻을 수 있습니까?

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

답변

0

localtunnel 내 제한된 이해에서 모든 사용자가 동일한 IP를 가질 원인이 localtunnel 소프트웨어를 통해 사용자에게 사용자 요청을 프록시를 것 같다 : 여기에 참조로 내 코드입니다. 연결 되는가 측면에서 :

  1. 사용자는 사용자가 요청 localtunnel
  2. localtunnel 복사를 통해 사이트에 연결하고 컴퓨터로 전송
  3. 응용 프로그램이 요청을 수신하지만 모든 트래픽이 localtunnel에서 오는 것 같습니다
  4. 때문에 localtunnel이 다른 사람의 IP를 모방하는 것이 불가능하지는 않더라도 엄청나게 어렵습니다. 그냥 같은 로컬 네트워크에있는 다른 컴퓨터에 액세스 할 경우에만 연결 같은 네트워크에있는 장치를 원하는 경우 모든 localtunnel를 사용하는 이유는

, 당신은 어떤 포트 포워딩 또는 DNS 설정을 수행 할 필요가 없습니다.

실제로 터널링 연결이 필요한 경우 localtunnel이 아닌 솔루션이 있습니다 (어느 쪽이 아픈 사람이 내 대답을 변경하는지 알고 있지만 forwading 헤더를 사용하지 않는다고 말할 수 있음). https://ngrok.com 대신 정확히 똑같은 일을하지만 모든 요청에서 약간의 데이터를 보내어 클라이언트에게 실제 IP가 무엇인지 알려줍니다.

  1. ngrok 설치
  2. 실행 ngrok http -subdomain=(the subdomain you want) 80
  3. 편집 실제 클라이언트 IP를

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

    ngrok을 찾을 수있는 응용 프로그램 코드는 훨씬 더 복잡하고 localtunnel에 비해 더 많은 기능을 가지고 있습니다, 그러나 , 그것은 freemium 소프트웨어이고 무료 계획은 아주 제한적입니다.

+0

대부분의 기능을 자유롭게 사용할 수 있다는 것을 제외하면 다음과 같습니다. P – Corrado