Elastic Search ouvindo apenas o IPv6 [CentOS]

6

Eu instalei o Elastic Search 1.7.4 no CentOS 7.2 desta maneira:

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

O serviço é iniciado e o ES funciona (verificado com o curl), no entanto, ele só escuta o IPv6 com a configuração padrão. netstat -na me dá o seguinte:

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

Usando o nmap de outros servidores, vejo que as portas 9200 e 9300 são filtradas e o firewall está desativado.

Editando /etc/elasticsearch/elasticsearch.yml e definindo:

network.bind_host: 0.0.0.0

não muda nada. Configurar isso para o endereço IPv4 externo do servidor adiciona as duas entradas adicionais na saída netstat -na, mas eu preciso que o ES esteja acessível à minha rede local, então isso é inútil e o netstat ainda registra isso como tcp6.

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

configuração:

network.bind_host: _eth0:ipv4_

Faz com que o ES se vincule ao IPv4 local e, como é óbvio, só está disponível no servidor local. Omitir a parte "ipv4" faz com que o ES se vincule ao endereço IPv6 da NIC.

Como faço para ativar o ES para vincular ao IPv4? Eu não tenho alternativa, minha rede é apenas IPv4 e eu tenho que usar esta versão antiga do ES porque eu estou executando alguns aplicativos que exigem esta versão.

    
por miloske85 22.10.2016 / 21:44

3 respostas

5

De troca unix.

This is happening because by default, AF_INET6 sockets will actually work for both IPv4 and IPv6. See section 3.7 - Compatibility with IPv4 Nodes of RFC 3493 - Basic Socket Interface Extensions for IPv6

Mas, como você descobriu, o firewalld é ativado imediatamente.

crie este arquivo para seu /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>

Atualizar permissões

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

Execute estes comandos

firewall-cmd --zone=public --add-service=elasticsearch --permanent
firewall-cmd --reload
    
por 28.10.2016 / 22:29
1

Essa é uma armadilha comum com o ES, porque há duas configurações de rede que precisam ser definidas: network.bind_host AND network.publish_host . Por causa disso, os desenvolvedores de ES adicionaram este atalho:

network.host: 0.0.0.0

Eu tive alguns outros problemas com o ES quando o IPv6 foi habilitado, mas não configurado, então você pode querer editar o sysctl.conf:

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

E faça sysctl -p .

    
por 27.10.2016 / 16:27
-1

Tente desabilitar o firewall que vem pré-embalado com centos

systemctl disable firewalld
systemctl stop firewalld

link

Eu recomendo um firewall de hardware dedicado na frente da máquina, eu NÃO confiaria em um firewall de software na máquina que você está usando. Se um invasor está atingindo a máquina, já é tarde demais.

    
por 04.10.2018 / 20:18