目前,我在数字海洋服务器中运行 elasticsearch 5.2.0 。要远程访问elasticsearch的{{1}},我在{更改{ {1}}档案:
rest apis
通过此更改,我可以使用request:
从任何地方访问elasticsearch apisconfig/elasticsearch.yml
但是,我只想从network.host: 0.0.0.0
访问elasticsearch apis。
例如:仅从http://server_url:9200/......
和local and selected devices/computers
访问,我尝试配置为:
localhost(within server)
但它不起作用。如何配置以满足此要求?
答案 0 :(得分:2)
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'限制公众访问。
有关配置的更多详细信息,请参阅this和official 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 HTTPD或Nginx。
为什么你不能使用network.bind_host
指定节点应绑定到哪个网络接口 为了监听传入的请求。节点可以绑定到多个接口,例如,两个网卡,或站点本地地址和本地地址。
这意味着,如果您在某个服务器上部署ES,则可以将其绑定到localhost
或89.2.34.3
(仅作为示例)。在第一种情况下,它只能从localmachine访问,第二种情况可以允许从Internet访问它。但它无法帮助您创建一组规则,机器/设备可以达到这些规则,哪些不可以。