web-dev-qa-db-ja.com

IPv6でのみリッスンするElastic Search [CentOS]

CentOS 7.2にElastic Search 1.7.4を次のようにインストールしました。

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出力に2つのエントリが追加されますが、ローカルネットワークから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はNICのIPv6アドレスにバインドします。

ESをIPv4にバインドするにはどうすればよいですか?代替手段はありません。私のネットワークはIPv4のみであり、このバージョンを必要とするアプリケーションを実行しているため、この古いバージョンのESを使用する必要があります。

6
miloske85

から nix exchange。

これは、デフォルトでは、AF_INET6ソケットがIPv4とIPv6の両方で実際に機能するためです。 RFC 3493-IPv6の基本ソケットインターフェイス拡張のセクション3.7-IPv4ノードとの互換性を参照してください

ただし、ご存知のとおり、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
6
Jacob Evans

設定する必要があるtwoネットワーク設定があるため、これはESでの一般的な落とし穴です:network.bind_Host AND network.publish_Host。このため、ES開発者は次のショートカットを追加しました。

network.Host: 0.0.0.0

IPv6が有効になっているが構成されていない場合、ESで他のいくつかの問題が発生したため、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

1
mzhaase