Создание .local разрешения IP-адреса и порта (mdns)

Я использую модуль узла multicast-dns, чтобы попытаться выполнить эту работу.

Поиск custom.local в браузере дает мне консольное сообщение, которое я настроил, но я не могу увидеть, что мой реальный сервер работает (который делает это в localhost:12345, где 12345 — это динамическое число). Я хочу иметь возможность видеть свой локальный сервер при посещении custom.local. Это возможно?

Вот код:

mdns.on("query", query => {
  if (query.questions[0] && query.questions[0].name === "custom.local") {
    console.log(query);

    mdns.respond({
      answers: [
        {
          name: "custom.local",
          type: "SRV",
          data: {
            port: n.get("p"), // dynamic port
            weight: 0,
            priority: 10,
            target: ip // local IP
          }
        }, {
          name: "custom.local",
          type: "A",
          data: ip,
          ttl: 300
        }
      ]
    });
  }
});

РЕДАКТИРОВАТЬ: я могу нормально подключиться к своему локальному серверу, это не проблема.


person NetOperator Wibby    schedule 09.10.2017    source источник
comment
Если вы не можете подключиться к своему серверу через localhost:12345 (или через любую комбинацию IP/порта, на которой он работает), то проблема не в MDNS, а в вашем реальном сервере.   -  person Andrew Marshall    schedule 09.10.2017
comment
Вы не можете указать номера портов в DNS. DNS предназначен только для поиска IP по имени. Чтобы ваш браузер видел его только по имени, вам нужна прокси-программа перед вашей службой или вам нужно запустить саму службу на порту 80. Номера портов действительно не должны быть динамическими. Вы должны указать это в настройках вашего сервиса   -  person Cfreak    schedule 09.10.2017
comment
@Cfreak А, хорошо, спасибо за информацию!   -  person NetOperator Wibby    schedule 09.10.2017


Ответы (1)


Цитируя cfreak:

Нельзя указывать номера портов в DNS. DNS предназначен только для поиска IP-адресов по имени. Чтобы ваш браузер видел его только по имени, вам нужна прокси-программа перед вашей службой или вам нужно запустить саму службу на порту 80. Номера портов действительно не должны быть динамическими. Вы должны указать это в настройках вашего сервиса.

Это отвечает на мой вопрос и предлагает следующие шаги. Спасибо!

ОБНОВЛЕНИЕ: Понял, что я пытался сделать. Вот код!


НАШЕЛ РЕШЕНИЕ, УУУУУУП!

Я использую этот модуль, но изменил исходный код бит (только потому, что у меня динамические порты, потому что мне так хочется).

/* jshint undef: true, unused: true, esversion: 6, node: true */



"use strict";



//
//  G E T
//  P A C K A G E S

import express from "express";
import http from "http";
import local from "./server/local";

const n = express();



n.get("/", (req, res) => {
  res.send("Welcome home");
});



//
//  L A U N C H

const server = http.createServer(n);

server.listen(0, () => {
  const port = server.address().port;
  local.add(port, "custom.local");
});

Надеюсь, это поможет и вам, будущий интернет-искатель! :D Не позволяйте негативным людям на других сайтах SE сбить вас с толку. :виртуальный удар кулаком:

person NetOperator Wibby    schedule 09.10.2017