没有到端口 6379 的主机路由

没有到端口 6379 的主机路由

当我将远程服务器连接到另一台服务器上的 Redis 实例时,出现“无路由到主机”错误。

Redis 肯定正在运行并监听端口 6379。我可以在本地连接到它。

带有 Redis 的服务器已配置为iptables -S

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N FORWARD_IN_ZONES
-N FORWARD_IN_ZONES_SOURCE
-N FORWARD_OUT_ZONES
-N FORWARD_OUT_ZONES_SOURCE
-N FORWARD_direct
-N FWDI_public
-N FWDI_public_allow
-N FWDI_public_deny
-N FWDI_public_log
-N FWDO_public
-N FWDO_public_allow
-N FWDO_public_deny
-N FWDO_public_log
-N INPUT_ZONES
-N INPUT_ZONES_SOURCE
-N INPUT_direct
-N IN_public
-N IN_public_allow
-N IN_public_deny
-N IN_public_log
-N OUTPUT_direct
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct
-A INPUT -j INPUT_ZONES_SOURCE
-A INPUT -j INPUT_ZONES
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -j FORWARD_direct
-A FORWARD -j FORWARD_IN_ZONES_SOURCE
-A FORWARD -j FORWARD_IN_ZONES
-A FORWARD -j FORWARD_OUT_ZONES_SOURCE
-A FORWARD -j FORWARD_OUT_ZONES
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -j OUTPUT_direct
-A FORWARD_IN_ZONES -g FWDI_public
-A FORWARD_OUT_ZONES -g FWDO_public
-A FWDI_public -j FWDI_public_log
-A FWDI_public -j FWDI_public_deny
-A FWDI_public -j FWDI_public_allow
-A FWDI_public -p icmp -j ACCEPT
-A FWDO_public -j FWDO_public_log
-A FWDO_public -j FWDO_public_deny
-A FWDO_public -j FWDO_public_allow
-A INPUT_ZONES -g IN_public
-A IN_public -j IN_public_log
-A IN_public -j IN_public_deny
-A IN_public -j IN_public_allow
-A IN_public -p icmp -j ACCEPT
-A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

netstat -rn打印出:

0.0.0.0         178.xxx.xxx.1   0.0.0.0         UG        0 0          0 eth0
10.10.0.0       0.0.0.0         255.255.0.0     U         0 0          0 eth0
10.136.0.0      0.0.0.0         255.255.0.0     U         0 0          0 eth1
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U         0 0          0 br-e071bb9e15A
178.xxx.xxx.0   0.0.0.0         255.255.240.0   U         0 0          0 eth0

这里是否存在配置错误?我该如何修复它以便远程服务器可以连接到端口6379

答案1

从链名称来看,您的配置正在使用firewalld它使用iptables作为后端并iptables从其自己的配置生成规则。Redhat 提供了很多文档以供使用。对于您的情况,应使用以下命令提供访问权限:

firewall-cmd --add-port=6379/tcp

这在规则上大概会体现得这样iptables

# iptables -S -t filter | grep -w 6379
-A IN_public_allow -p tcp -m tcp --dport 6379 -m conntrack --ctstate NEW -j ACCEPT

这将临时授予对主机上运行的 redis 的访问权限。如果您认为犯了错误,可以使用以下命令恢复配置:

firewall-cmd --reload

一旦结果满意,您可以再次运行相同的注释,并使用附加选项--permanent来编写配置,而不是改变规则,就像这样进行永久设置:

firewall-cmd --permanent --add-port=6379/tcp

为了以后,您总是需要两个命令来永久地改变它:一个用于配置,一个用于运行防火墙(一个firewall-cmd --reload接一个firewall-cmd --permanent ...就足够了)。

相关内容