如何仅在选定的设备/计算机中启用Elasticsearch 5.2.0中的远程访问?

时间:2017-02-03 08:29:27

标签: elasticsearch digital-ocean

目前,我在数字海洋服务器中运行 elasticsearch 5.2.0 。要远程访问elasticsearch的{​​{1}},我在{更改{ {1}}档案:

rest apis

通过此更改,我可以使用request:

从任何地方访问elasticsearch apis
config/elasticsearch.yml

但是,我只想从network.host: 0.0.0.0 访问elasticsearch apis。

例如:仅从http://server_url:9200/...... local and selected devices/computers访问,我尝试配置为:

localhost(within server)

但它不起作用。如何配置以满足此要求?

2 个答案:

答案 0 :(得分:2)

elasticsearch.yml中的

elasticsearch network.host设置是为传入的http流量和节点到节点通信设置绑定地址。

从您的一些代码看起来,您似乎是用ip过滤的客户端的IP地址错误解释它。

在elasticsearch.yml配置中,您可以执行以下操作 -

1)使用http.port: 9200更改传入http流量的http流量端口(默认为9200)。

2)使用transport.tcp.port: 9300更改传输客户端的tcp端口以进行节点到节点的通信。

3)您可以使用network.bind_host: 192.168.0.1更改elasticsearch服务器的elasticsearch绑定地址,以监听流量。您可以将其更改为' network.bind_host:localhost'限制公众访问。

有关配置的更多详细信息,请参阅thisofficial documentation

现在要实现您的目标,我建议您使用现在免费提供X-Pack的shield plugin。 Shield提供IP过滤支持,您可以在其中定义可以访问弹性搜索的IP地址。

Shield插件将允许您阻止,通过扩展相同的elasticsearch.yml文件来允许IP地址访问您的elasticsearch服务器。成功安装shield插件后,您将能够在elasticsearch.yml文件中使用shield模块。

shield.transport.filter.enabled: false
shield.http.filter.enabled: true
shield.transport.filter.allow: [ "192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4" ]
shield.transport.filter.deny: _all

现在,elasticsearch.yml中的这些设置将是硬设置,每次更改后您都可能需要重新启动服务器。由于您提到了所选设备和计算机,以及这些设备的IP地址是否动态变化。然后,弹性还通过其REST api公开设置/配置/更改IP过滤的IP地址,如下所示,您可以在不重启的情况下即时更改IP地址

curl -XPUT localhost:9200/_cluster/settings -d '{
    "persistent" : {
        "shield.transport.filter.allow" : "172.16.0.0/24"
    }
}'

curl -XPUT localhost:9200/_cluster/settings -d '{
    "persistent" : {
        "shield.transport.filter.enabled" : false
    }
}'

这个用于动态更改弹性IP地址的REST api以及身份验证,授权,文档级角色等其他屏蔽功能可以帮助您构建一个非常精美的控制台界面/应用程序来管理您的弹性搜索群集。

另请参阅elasticsearch shield ip filtering documentation以获取更多配置信息。

希望这有帮助。

答案 1 :(得分:1)

不,你不能从Elasticsearch配置中做到这一点。一种可能的方法是使用一些HTTP服务器,它将提供防火墙功能,例如, Apache HTTPDNginx

为什么你不能使用network.bind_host

  

指定节点应绑定到哪个网络接口   为了监听传入的请求。节点可以绑定到多个接口,例如,两个网卡,或站点本地地址和本地地址。

这意味着,如果您在某个服务器上部署ES,则可以将其绑定到localhost89.2.34.3(仅作为示例)。在第一种情况下,它只能从localmachine访问,第二种情况可以允许从Internet访问它。但它无法帮助您创建一组规则,机器/设备可以达到这些规则,哪些不可以。