--- title: "网络绑定地址配置" date: 2026-02-13 lastmod: 2026-02-13 description: "控制 Easysearch 绑定网络地址的配置项说明" tags: ["网络配置", "集群配置", "绑定地址"] summary: "配置项作用 # network.host 配置项指定 Easysearch 绑定的网络地址,决定节点监听哪些网络接口。此配置影响节点是否能被其他节点和客户端访问。 配置项类型 # 该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。 默认值 # 未配置(使用 _local_,即回环地址) 是否必需 # 生产环境必需(开发环境可选) 配置值说明 # 值 说明 _local_ 仅本地回环地址(127.0.0.1、[::1]) _site_ 本地站点地址(所有网卡) _global_ 所有地址(等同于 0.0.0.0) 特定 IP 绑定到指定 IP 地址 主机名 绑定到主机名解析的地址 使用示例 # 开发/测试环境: # 使用默认值(仅本地访问) # network.host: _local_ # 或明确配置 network.host: 127.0.0.1 生产环境(推荐):" --- ## 配置项作用 `network.host` 配置项指定 Easysearch 绑定的网络地址,决定节点监听哪些网络接口。此配置影响节点是否能被其他节点和客户端访问。 ## 配置项类型 该配置项为**静态配置**,需要在启动时设置,修改后需要重启节点才能生效。 ## 默认值 ``` 未配置(使用 _local_,即回环地址) ``` ## 是否必需 **生产环境必需**(开发环境可选) ## 配置值说明 | 值 | 说明 | |---|---| | `_local_` | 仅本地回环地址(127.0.0.1、[::1]) | | `_site_` | 本地站点地址(所有网卡) | | `_global_` | 所有地址(等同于 0.0.0.0) | | 特定 IP | 绑定到指定 IP 地址 | | 主机名 | 绑定到主机名解析的地址 | ## 使用示例 **开发/测试环境:** ```yaml # 使用默认值(仅本地访问) # network.host: _local_ # 或明确配置 network.host: 127.0.0.1 ``` **生产环境(推荐):** ```yaml # 绑定到所有网络接口 network.host: 0.0.0.0 # 或使用 _site_ network.host: _site_ # 或绑定到特定 IP network.host: 192.168.1.10 ``` **多网卡服务器:** ```yaml # 绑定到特定网卡 network.host: 192.168.1.10 # 绑定到多个地址(使用数组格式在某些版本) # network.host: ["192.168.1.10", "192.168.2.10"] ``` ## 特殊值说明 ### 1. _local_(默认) 仅绑定回环地址,只能本机访问: ``` ┌─────────────────────────────────────────────┐ │ 节点仅监听本地回环地址 │ │ 127.0.0.1 (IPv4) │ │ [::1] (IPv6) │ └─────────────────────────────────────────────┘ ↑ 仅本地 curl http://localhost:9200 ``` **适用场景:** - 开发测试 - 单机部署 - 本地验证 ### 2. _site_ 绑定到所有站点的网络接口: ``` ┌─────────────────────────────────────────────┐ │ 节点监听所有网卡 │ │ │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │ eth0 │ │ wlan0 │ │ docker0│ │ │ │10.0.1.│ │192.168.│ │172.17. │ │ │ └────────┘ └────────┘ └────────┘ │ └─────────────────────────────────────────────┘ ``` **适用场景:** - 单机多网卡 - 需要局域网访问 ### 3. 0.0.0.0 或 _global_ 绑定到所有可用网络接口: ``` ┌─────────────────────────────────────────────┐ │ 节点监听所有网络接口 │ │ │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │ eth0 │ │ wlan0 │ │ docker0│ │ │ │10.0.1.│ │192.168.│ │172.17. │ │ │ └────────┘ └────────┘ └────────┘ │ │ │ │ 公网 IP (如果有的话) │ └─────────────────────────────────────────────┘ ``` **适用场景:** - 生产服务器 - 需要公网访问(配置防火墙) - 多网卡服务器 ## 推荐设置建议 | 环境 | 推荐配置 | 说明 | |-----|---------|------| | 开发 | `_local_` 或不配置 | 仅本地访问 | | 测试 | `_local_` 或 `0.0.0.0` | 根据需要 | | 生产 | `0.0.0.0` 或 `_site_` | 允许外部访问 | | 容器 | `0.0.0.0` | 容器内通信 | ## 完整网络配置示例 ```yaml # 集群配置 cluster.name: production node.name: node-1 # 网络配置(重要) network.host: 0.0.0.0 # HTTP 服务端口 http.port: 9200 # 传输端口 transport.port: 9300 # 节点发现 discovery.seed_hosts: - 192.168.1.10:9300 - 192.168.1.11:9300 ``` ## 安全考虑 **生产环境安全配置:** 1. **使用防火墙**:限制访问来源 ```bash # 仅允许特定网段访问 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port protocol="tcp" port="9200" accept' ``` 2. **配合 xpack/security**:启用安全认证 ```yaml xpack.security.enabled: true xpack.security.http.ssl.enabled: true ``` 3. **内网部署**:生产节点通常部署在内网 ## 常见问题 **问题 1:节点无法被其他节点发现** 检查: - `network.host` 是否正确配置 - 防火墙是否开放传输端口(默认 9300) - 网络连接是否正常 **问题 2:只能本机访问** 原因:未配置 `network.host`,使用默认的 `_local_` **解决方案:** ```yaml network.host: 0.0.0.0 ``` **问题 3:多网卡绑定到错误地址** 明确指定要绑定的 IP 地址: ```yaml network.host: 192.168.1.10 ``` ## IPv6 支持 支持 IPv6 地址配置: ```yaml # IPv6 地址 network.host: "[::1]" # IPv6 全局地址 network.host: "[::]" # 同时指定 IPv4 和 IPv6 # network.host: ["0.0.0.0", "[::]"] ``` ## 验证网络配置 启动节点后验证: ```bash # 检查监听端口 netstat -an | grep -E '9200|9300' # 检查绑定的地址 curl http://localhost:9200/_cat/nodes?v # 查看节点网络信息 GET /_nodes ``` ## 相关配置项 | 配置项 | 作用 | 默认值 | |-------|------|-------| | `network.bind_host` | 绑定地址 | 同 network.host | | `network.publish_host` | 发布地址 | 同 network.host | | `http.port` | HTTP 端口 | 9200-9300 | | `transport.port` | 传输端口 | 9300-9400 | ## 注意事项 1. **静态配置**:修改网络配置需要重启节点 2. **安全第一**:生产环境务必配置防火墙 3. **网络测试**:配置后测试网络连通性 4. **多网卡**:使用 `0.0.0.0` 确保绑定所有接口 5. **Docker**:容器内使用 `0.0.0.0` 并正确映射端口