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

Elastic Search прослушивает только IPv6 [CentOS]

Я установил Elastic Search 1.7.4 на CentOS 7.2 следующим образом:

wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.4.noarch.rpm
sudo rpm -ivh elasticsearch-1.7.4.noarch.rpm

Служба запущена, и ES работает (проверено с помощью curl), однако он слушает только IPv6 с конфигурацией по умолчанию. netstat -na дает мне следующее:

tcp6       0      0 :::9200                 :::*                    LISTEN     
tcp6       0      0 :::9300                 :::*                    LISTEN 

Используя nmap с других серверов, я вижу, что порты 9200 и 9300 отфильтрованы, брандмауэр отключен.

Редактирование /etc/elasticsearch/elasticsearch.yml и установка:

network.bind_host: 0.0.0.0

ничего не меняет. Установка этого на внешний IPv4-адрес сервера добавляет две дополнительные записи в вывод netstat -na, но мне нужно, чтобы ES был доступен для моей локальной сети, поэтому это бесполезно, и netstat по-прежнему регистрирует это как tcp6.

tcp6       0      0 192.168.0.54:9200       :::*                    LISTEN     
tcp6       0      0 192.168.0.54:9300       :::*                    LISTEN

настройка:

network.bind_host: _eth0:ipv4_

Заставляет ES привязываться к локальному IPv4, и тогда он, конечно, доступен только с локального сервера. Отсутствие части «ipv4» приводит к привязке ES к IPv6-адресу сетевой карты.

Как включить привязку ES к IPv4? У меня нет альтернативы, моя сеть работает только с IPv4, и мне нужно использовать эту старую версию ES, потому что я запускаю некоторые приложения, для которых требуется эта версия.

Из обмен unix.

Это происходит потому, что по умолчанию сокеты AF_INET6 фактически работают как для IPv4, так и для IPv6. См. Раздел 3.7 - Совместимость с узлами IPv4 в RFC 3493 - Расширения базового интерфейса сокета для IPv6.

Но, как вы уже догадались, firewalld включен из коробки.

создайте этот файл на свой /etc/firewalld/services/elasticsearch.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Elasticsearch</short>
  <description>Elasticsearch is a distributed, open source search and analytics engine, designed for horizontal scalability, reliability, and easy management.</description>
  <port protocol="tcp" port="9300"/>
  <port protocol="tcp" port="9200"/>
</service>

Обновить разрешения

chmod 0400 /etc/firewalld/services/elasticsearch.xml
chown root: /etc/firewalld/services/elasticsearch.xml

Запустите эти команды

firewall-cmd --zone=public --add-service=elasticsearch --permanent
firewall-cmd --reload

Это обычная ошибка ES, потому что есть два сетевые настройки, которые необходимо установить: network.bind_host И network.publish_host. Из-за этого разработчики ES добавили этот ярлык:

network.host: 0.0.0.0

У меня были другие проблемы с ES, когда IPv6 был включен, но не настроен, поэтому вы можете отредактировать sysctl.conf:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

И делай sysctl -p.

Попробуйте отключить брандмауэр, который поставляется с centos

systemctl disable firewalld
systemctl stop firewalld

https://bytefreaks.net/gnulinux/how-to-startstop-or-enabledisable-firewalld-on-centos-7

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