主机到虚拟机22端口不通_VirualBox虚拟机服务无法访问——No route to host 问题分析...

今天学习ansible自动部署,在自己的笔记本上用virtualBox启动了2台虚拟机,用来模拟ansible controller(ip:192.168.128.141)与target server(ip:192.168.128.143)。在ansible controller上运行playbook,playbook会在target server上部署一个简单的Flask服务。该服务监听5000端口,访问时会响应“welcome!”,但当我部署完了,准备测试部署结果的时候,我在ansible controller用curl访问target server却得到:

# curl 192.168.128.143:5000
curl: (7) Failed connect to 192.168.128.143:5000; No route to host

但是ping却可以ping通,所以ansible controller肯定是可以连通target server的

ping -c 1 192.168.128.143
PING 192.168.128.143 (192.168.128.143) 56(84) bytes of data.
64 bytes from 192.168.128.143: icmp_seq=1 ttl=64 time=0.768 ms

--- 192.168.128.143 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.768/0.768/0.768/0.000 ms

此外,在主机上通过ssh是可以连接到这2台虚拟机的,即22端口没问题。前段时间刚刚学的linux network与netfiler framework,正好借这次机会实践以下,于是有了这篇文章。这篇文章主要记录本次网络调试的过程。


问题综述

2台虚拟机ansible controller与target server,简称controller与target,ip分别为192.168.128.141与192.168.128.143。网络现状:

  • 从controller可以ping通target
  • 从主机可以ssh登陆到controller和target
  • 从主机和controller访问target的5000端口(即部署的Flask服务)得到No route to host

解决方案

在这里我先给出结论,方便碰到类似问题的朋友快速解决问题。感兴趣的朋友可以继续看看问题的解决过程。

结论是:从controller发往target的5000端口的数据包被target的iptables防火墙拦截,拦截时给的理由是icmp-host-prohibited,所以curl报错No route to host。因此,需要在target server上增加iptables规则,接受发往target的5000端口的数据包,在target server上执行命令:

iptables -A IN_public_allow -p tcp --dport 5000 -m state --state NEW -j ACCEPT

解决过程

1. 检查target server的服务是否正常

因为target server上的服务是ansible部署上去的,作为一个初学者,我不敢保证它一定正常运行。于是我干的第一件事就是去target上看看5000端口的状态:

# netstat -aln | grep 5000
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN

可以看到5000端口是被监听的状态,我们在target server访问5000端口发现服务是正常的:

# curl localhost:5000
Welcome!

这样可以排除target server不正常的可能性

2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值