vmware上centos中安装rabbitmq作为服务端,宿主机客户端程序尝试推送消息显示连接超时

Yashonlin 发布于 2014/12/09 12:26
阅读 1K+
收藏 0

我在windows系统中用vmware虚拟机另装了个centos 7.0 系统。

做操作如下:

1. 我在虚拟机上部署了RabbitMQ 服务端,开放默认端口5672,已安装网页管理插件, 在虚拟机内置浏览器能够正常访问网页管理;
2. 我在主机上,用JAVA程序作为客户端,通过设置setHost(ip地址), setPort(端口号) 尝试推送消息到RabbitMQ, 一直碰到上述问题。

虚拟机中已做设置如下:
1. 关闭防火墙,关闭selinux
2. 网络连接方式已尝试过bridged、NAT、host-only

在主机上做过如下操作:
1. 终端ping过虚拟机上三种方式下的ip地址,均可以ping通
2. 在浏览器端使用ip:port的方式尝试访问虚拟机,显示连接超时
3. 在Java程序中,尝试连接虚拟机中的程序服务端,显示连接超时报错如下:

   Exception in thread "main" java.net.ConnectException: Connection timed out: connect

请问,有什么设置我是没注意到的吗?

加载中
0
ghui_dev
ghui_dev

bridged 应该就相当于两台真机连到同一个路由上, nat的话可以做端口转发,  不过我用的是Virtualbox哈, 这两个虚拟机都差不多

0
Y
Yashonlin
嗯啊,是这样的没错。但两种方法应该都不会影响到主机去访问虚拟机的端口才对吧?!我这刚入门接触计算机网络,不懂这块呀
0
朱宏青
朱宏青

用的Virtualbox

用的桥接 把ip段都设置到一起

使用2年多 没有任何问题 最多一台机器三个虚拟环境CentOS6.5

Y
Yashonlin
我桥接方式也试过了,设置成和主机的ip段,更是直接ping不通
0
酷酷的就
酷酷的就

如果家里有路由器,用桥接,就相当于你和虚拟机是一个局域网 ,ip设置同段 ;

net 地址转发 看下你虚拟网卡的ip和dhcp设置.

你telnet下虚拟机的端口, 或者trace看下路由.

Y
Yashonlin
关于今天无法ping通桥段方式的ip问题,是由于我自己的设置问题,但ping通之后同样碰到telnet命令下,无法访问端口的问题
Y
Yashonlin
也尝试过bridged,vm_ip设置成和主机ip同个段,但昨天在这个模式下还ping得通,今天上机就ping不通了
Y
Yashonlin
NAT模式下,可以PING得通,但就是telnet 端口时出问题,无法连接上,请问这是哪里的问题呢?
0
Y
Yashonlin

引用来自“zp-wmhx”的评论

如果家里有路由器,用桥接,就相当于你和虚拟机是一个局域网 ,ip设置同段 ;

net 地址转发 看下你虚拟网卡的ip和dhcp设置.

你telnet下虚拟机的端口, 或者trace看下路由.

NAT模式下,可以PING得通,但就是telnet 端口时出问题,无法连接上,请问这是哪里的问题呢?

同样的在bridged的模式下,依旧可以很快的就PING通,使用命令telnet时也是无法连接的问题。

因为刚刚开始接触网络与虚拟机这块,不太明白一些命令的意义。网上查询了关于使用命令telnet无法连接的问题,尝试过一些方法,还没得到比较好的解决方案,麻烦能否告知应该采用什么方法解决这个问题呢?

0
无踢
很怀疑你真的关了防火墙
0
Y
Yashonlin

引用来自“Yoker”的评论

很怀疑你真的关了防火墙

您看看我理解防火墙的关闭对不对。

我执行命令service iptables stop, 接着执行service iptables status查看当前状态,得到如下信息:

Redirecting to /bin/systemctl status  iptables.service
iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled)
   Active: inactive (dead)

其中的Active:inactive(dead)我把它理解为已经将防火墙关闭,不知这样理解是否正确?

0
老钱II
老钱II
iptables -l -n可以查看当前生效的防火墙规则。
0
Y
Yashonlin

引用来自“老钱II”的评论

iptables -l -n可以查看当前生效的防火墙规则。

这个命令得到的提示是

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

......

老钱II
老钱II
最后有一个REJECT all 。忘记是不是后面的能覆盖掉前面的了。。要不然执行iptabls -F而后 iptabls -X然后在-l -n试试呢?前面2个命令是可以清空规则的。
0
Y
Yashonlin

引用来自“老钱II”的评论

iptables -l -n可以查看当前生效的防火墙规则。

太感谢了!!!

我在执行了这个清理规则的两个命令后,终于在主机终端执行telent ip port 成功,并在主机浏览器端可以访问。非常感谢!!!

只是我这刚入门,对这命令不是很了解,还存有两个疑问:

1. 清理规则清理的是防火墙的规则?

2. 是哪条命令起了作用呢?还是两条都必须执行?

3. 这证明了我之前是哪步工作是没做到位的?是在关闭防火墙的时候吗?还是系统默认会有什么规则?

但这些问题我想自己先弄懂,但是如果实在搞不懂,或者还有什么疑惑,可能还要麻烦您,您看方便吗?

老钱II
老钱II
果然是防火墙没有关闭。。有的资料说是-F是清除内建规则,-X是清除自定义规则。我没有尝试过。。。
返回顶部
顶部