Не удается подключиться к локальному серверу с помощью dnsmasq с рельсами

У меня есть приложение rails, которое я пытаюсь запустить в локальной среде с помощью dnsmasq. Когда я запускаю сервер rails, он запускается без каких-либо ошибок:

[18973] Puma starting in cluster mode...
[18973] * Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
[18973] * Min threads: 10, max threads: 10
[18973] * Environment: development
[18973] * Process workers: 1
[18973] * Phased restart available
[18973] * Listening on tcp:0.0.0.0:3001
[18973] * Listening on ssl:0.0.0.0:3000 cert=config/ssl.crt&key=config/ssl.key&verify_mode=none
[18973] Use Ctrl-C to stop
[18973] * Starting control server on unix:///tmp/puma-status-1580448227758-18973
[18973] - Worker 0 (pid: 19010) booted, phase: 0

Я запустил службу dnsmasq, и это ее статус

● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-01-31 11:05:18 IST; 2s ago
  Process: 19529 ExecStop=/etc/init.d/dnsmasq systemd-stop-resolvconf (code=exited, status=0/SUCCESS)
  Process: 19605 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
  Process: 19596 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
  Process: 19595 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS)
 Main PID: 19604 (dnsmasq)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/dnsmasq.service
           └─19604 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -r /run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old

Jan 31 11:05:18 BEAST dnsmasq[19595]: dnsmasq: syntax check OK.
Jan 31 11:05:18 BEAST dnsmasq[19604]: started, version 2.79 cachesize 150
Jan 31 11:05:18 BEAST dnsmasq[19604]: DNS service limited to local subnets
Jan 31 11:05:18 BEAST dnsmasq[19604]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC
Jan 31 11:05:18 BEAST dnsmasq[19604]: no servers found in /run/dnsmasq/resolv.conf, will retry
Jan 31 11:05:18 BEAST dnsmasq[19604]: read /etc/hosts - 7 addresses
Jan 31 11:05:18 BEAST dnsmasq[19604]: reading /run/dnsmasq/resolv.conf
Jan 31 11:05:18 BEAST dnsmasq[19604]: using nameserver 127.0.0.53#53
Jan 31 11:05:18 BEAST dnsmasq[19605]: /etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resol
Jan 31 11:05:18 BEAST systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

Я добавил файл dev в папку /etc/resolver/ с его содержимым как

file: /etc/resolver/dev
nameserver 127.0.0.1

Я также добавил одну строку в файл конфигурации по адресу /etc/dnsmasq.conf.

address=/.dev/127.0.0.1

но я не могу подключиться к серверу из браузера.

Вот мой файл /etc/resolv.conf во время работы dnsmasq

nameserver 172.16.10.1
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 127.0.0.1

И это изменение, которое я сделал в файле /etc/dnsmasq.conf, остальное по умолчанию

address=/.dev/127.0.0.1

Вывод netsatat -na | grep LISTEN, пока мой сервер rails работает вместе с dnsmasq

tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:3001            0.0.0.0:*               LISTEN     
tcp6       0      0 :::53                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN  

ОБНОВЛЕНИЕ для команд dig:

Выход dig www.example.dev

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> www.example.dev
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 18574
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.example.dev.       IN  A

;; AUTHORITY SECTION:
dev.            300 IN  SOA ns-tld1.charlestonroadregistry.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300

;; Query time: 321 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Feb 03 13:28:54 IST 2020
;; MSG SIZE  rcvd: 146

Выход dig @127.0.0.1 www.example.dev

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> @127.0.0.1 www.example.dev
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48569
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.example.dev.       IN  A

;; ANSWER SECTION:
www.example.dev.    0   IN  A   127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Feb 03 13:29:50 IST 2020
;; MSG SIZE  rcvd: 53

Выход dig example.dev

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> example.dev
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 27586
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.dev.       IN  A

;; AUTHORITY SECTION:
dev.            211 IN  SOA ns-tld1.charlestonroadregistry.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300

;; Query time: 271 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Feb 03 13:38:03 IST 2020
;; MSG SIZE  rcvd: 142

Выход dig @127.0.0.1 example.dev

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> @127.0.0.1 example.dev
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36026
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.dev.       IN  A

;; ANSWER SECTION:
example.dev.    0   IN  A   127.0.0.1

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Feb 03 13:38:09 IST 2020
;; MSG SIZE  rcvd: 49

person MAK    schedule 31.01.2020    source источник
comment
Какой URL вы вводите в браузере? Этот браузер работает на одном компьютере с приложением Rails и dnsmasq? Если нет, то находятся ли коробка с браузером и коробка с Rails в одной и той же IP-подсети?   -  person Lyzard Kyng    schedule 31.01.2020
comment
Я хочу запустить localhost с расширением .dev. Поэтому я использую www.example.dev:3000 в своем браузере. Как узнать, что браузер работает на одном компьютере с dnsmasq и сервером? Пожалуйста, направь меня.   -  person MAK    schedule 31.01.2020


Ответы (1)


Если я правильно понимаю, у вас есть только один компьютер (или виртуальная машина) со средой разработки, на которой запущено приложение Rails и окно вашего браузера. Так что вам вообще не нужен dnsmasq, просто добавьте в свой файл /etc/hosts

127.0.0.1 www.example.dev

Затем вы указываете в браузере http://www.example.dev:3001 или https://www.example.dev:3000, потому что вы настроили два порта (3000 для ssl и 3001 для доступа без SSL) — см. puma сообщения при запуске.

ОБНОВЛЕНИЕ

Как хотите dnsmasq:

  1. Файл /etc/resolver/dev должен состоять только из одной строки (без двоеточия!)
nameserver 127.0.0.1
  1. Похоже, что dnsmasq связывается с 127.0.0.53 (см. третью строчку снизу установочных сообщений dnsmasq), а не с 127.0.0.1
person Lyzard Kyng    schedule 31.01.2020
comment
На самом деле у меня несколько поддоменов, поэтому мне нужен dnsmasq. Я попытался изменить файл /etc/hosts на 127.0.0.1 *.example.dev, но он все еще не работает. - person MAK; 31.01.2020
comment
/etc/hosts не разрешает доменные имена с подстановочными знаками. Пожалуйста, смотрите мой обновленный ответ. - person Lyzard Kyng; 31.01.2020
comment
Ой! Мне очень жаль, что в заданном вопросе была опечатка, и в моем файле нет двоеточия. Поскольку я новичок в использовании dnsmasq, как мне исправить это, как вы упомянули? - person MAK; 31.01.2020
comment
Пожалуйста, покажите свои /etc/resolv.conf, /etc/dnsmasq.conf и вывод netstat -na | grep LISTEN, когда dnsmasq работает - person Lyzard Kyng; 31.01.2020
comment
Я обновил вопрос с обоими файлами и выводом netstat. Пожалуйста, посмотрите - person MAK; 01.02.2020
comment
Ваша конфигурация, кажется, в порядке. Давайте проверим, правильно ли разрешается dnsmasq. Предоставьте вывод dig www.example.dev и dig @127.0.0.1 www.example.dev. Также dig example.dev и dig @127.0.0.1 example.dev. - person Lyzard Kyng; 03.02.2020
comment
Ну, вы на Linux или OS X? Linux не поддерживает пересылку через /etc/resolver файлы - person Lyzard Kyng; 03.02.2020
comment
Я на Линуксе. Я обновил вопрос с выводами команд dig. Что мне делать, так как я использую Linux? - person MAK; 03.02.2020
comment
Просто переместите nameserver 127.0.0.1 на первую строку в /etc/resolv.conf. Вы также можете удалить каталог /etc/resolver, так как он не используется. - person Lyzard Kyng; 03.02.2020
comment
затем снова запустите dig www.example.dev, он должен указать ;;SERVER: 127.0.0.1 внизу - person Lyzard Kyng; 03.02.2020
comment
Говорится ;; СЕРВЕР: 8.8.8.8#53(8.8.8.8) - person MAK; 03.02.2020
comment
Убедитесь, что /etc/resolv.conf не является символической ссылкой. Убедитесь, что первым nameserver в этом файле является 127.0.0.1. Перезапустите службу systemd-resolved, если она у вас есть. После этого убедитесь, что первая nameserver строка /run/systemd/resolve/resolv.conf указывает на 127.0.0.1. Запустите dig example.dev еще раз и посмотрите, что сообщает SERVER. - person Lyzard Kyng; 03.02.2020
comment
Это сработало для меня после того, как я отключил символическую ссылку. Спасибо за помощь - person MAK; 04.02.2020