Назад | Перейти на главную страницу

почему я не могу получить доступ к порту только с локального хоста?

Я пытаюсь настроить elasticsearch на моей виртуальной машине redhat, выпущенной mapR. Он поставляется с предварительно загруженной экосистемой mapR. Я установил elasticsearch через yum.

Я могу слушать его из виртуальной машины:

[root@maprdemo elasticsearch]# curl -XGET 'localhost:8080/?pretty'
{
  "name" : "QYCiQJi",
  "cluster_name" : "sdc-search",
  "cluster_uuid" : "bMSLPA3uR5WKbtwKP0Sl7g",
  "version" : {
    "number" : "5.0.1",
    "build_hash" : "080bb47",
    "build_date" : "2016-11-11T22:08:49.812Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.1"
  },
  "tagline" : "You Know, for Search"
}

... но не извне машины. Я могу получить доступ к другим портам, которые он транслирует, например, к пользовательскому интерфейсу HUE, извне виртуальной машины, поэтому я считаю, что есть проблема с брандмауэром.

У меня нет определенных правил iptables:

[root@maprdemo elasticsearch]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Что-то заметил при отладке:

[root@maprdemo elasticsearch]# netstat -anp | grep 8080
tcp        0      0 :::18080                    :::*                        LISTEN      16987/java
tcp        0      0 ::ffff:127.0.0.1:8080       :::*                        LISTEN      31852/java

//A Port im able to access from outside the machine fine
[root@maprdemo elasticsearch]# netstat -anp | grep 8443
tcp        0      0 :::8443                     :::*                        LISTEN      13569/java

Порт, который я могу видеть за пределами машины (8443), выглядит немного иначе при проверке netstat.

Я просто не уверен, где еще заниматься отладкой. Если бы кто-нибудь мог указать мне направление для решения этой проблемы, это было бы здорово. Я всего лишь разработчик и мои познания в области сетей ограничены.

Вы видите только фильтр iptables по умолчанию с командой, которую вы использовали, поэтому все еще возможно, что он работает. Взгляните на очень хорошо сформулированные ответы в этой теме для параметров iptables (очень быстро попробуйте 'iptables -S', который, я считаю, должен показать вам все): https://unix.stackexchange.com/questions/205867/viewing-all-iptables-rules

Если не iptables, иногда selinux вызывает неприятности, поэтому отключение его на время тестирования может быть вариантом ('setenforce 0'). Вы можете проверить текущий статус с помощью «sestatus». Чтобы включить снова, используйте «setenforce 1», иначе перезагрузка снова включится.

И последнее, но не менее важное: когда я набираю это, я понимаю, что это может быть ответ, проверьте, какой IP-адрес действительно прослушивает служба. Я не знаком с этим приложением, но в целом у вас может действительно быть служба, прослушивающая данный порт только для локальных подключений, так что это может быть просто изменение конфигурации, которое вам нужно. Фактически, при перечитывании вашего сообщения присутствие адреса обратной связи (127.0.0.1) в выводе netstat для порта 8080, который вы опубликовали, заставляет меня задаться вопросом, что происходит.