我刚刚在服务器上设置了 ElasticSearch,但似乎无法远程连接到它(默认端口为 9200)。我可以通过 localhost 连接到它,但当我指定 IP 地址时无法远程连接到它。我猜这是因为端口已关闭(但我不确定)。因此,我想知道如何检查给定端口是否打开,以及如何打开可能已关闭的端口。
答案1
要检查服务器上的开放端口,您可以以 sudo 身份执行以下操作:
iptables --列表
打开 TCP 端口(端口 9200)
iptables -I 输入 -p tcp --dport 9200 --syn -j 接受
对于 UPD 端口,您可以使用(端口 9200)
iptables -I 输入 -p udp --dport 9200 -j 接受
最后,要保存更改,请使用:
服务 iptables 保存
但是,正如@Codezilla 提到的,您可能位于路由器后面,需要转发端口。
答案2
听起来你位于路由器后面,你可能需要转发端口。如果是这种情况,请查看此站点,了解如何设置端口转发的简单指南。你必须在路由器上转发端口,以便来自网络外部的人可以访问特定端口上的特定应用程序/服务。基本上,它告诉路由器,每当有人想要查看你 IP 地址上的 Web 服务器(或 ElasticSearch 应用程序)时,它就知道将该请求转发到路由器后面的相应计算机。
http://portforward.com/english/routers/port_forwarding/routerindex.htm
答案3
有几种方法可以做到这一点。
首先,您在哪个操作系统上托管 ElasticSearch?Windows 还是 Linux?您说的远程是指除您的计算机之外的其他计算机,还是指未连接到互联网上的 LAN 的计算机?
为方便将来参考,请在帖子中说明您使用的操作系统。直到我花了 20 分钟撰写有关如何在 Windows 中执行此操作的回复时,我才注意到 CentOS 标签...
尝试
sudo iptables -L
您是否在该列表中看到允许端口 9200 的规则?如果没有,您可能只需添加一条新规则以允许 9200 上的连接(我猜是 TCP)
尝试一下(以 root 身份)
iptables -A INPUT -m tcp -p tcp --dport 9200 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 9200 -j ACCEPT
答案4
如果您有权限问题,您可以尝试使用sh
来保存您的iptables
配置:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"