精华内容
下载资源
问答
  • 使用虚拟机启动docker镜像之后,外部宿主机无法访问指定端口服务 宿主机是a ,虚拟机是b 。虚拟机没有可视化界面,在b上启动docker服务后发现A不能访问 1,排查防火墙firewall-cmd --state 如果输出的是“not ...

    使用虚拟机启动docker镜像之后,外部宿主机无法访问指定端口服务

    宿主机是a ,虚拟机是b 。虚拟机没有可视化界面,在b上启动docker服务后发现A不能访问

    1,排查防火墙firewall-cmd --state

    如果输出的是“not running”则FirewallD没有在运行,且所有的防护策略都没有启动,那么可以排除防火墙阻断连接的情况了。

    如果输出的是“running”,表示当前FirewallD正在运行,则关闭防火墙

    二、ip转发没有打开

    执行 sysctl net.ipv4.ip_forward

    显示net.ipv4.ip_forward=0则表示未打开。

    cat /proc/sys/net/ipv4/ip_forward0

    如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开,

    要想打开IP转发功能,可以直接修改上述文件:echo 1 > /proc/sys/net/ipv4/ip_forward

    把文件的内容由0修改为1。禁用IP转发则把1改为0。

    上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改

    /etc/sysctl.conf文件,修改下面一行的值:

    net.ipv4.ip_forward = 1

    修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效:

    sysctl -p /etc/sysctl.conf

    进行了上面的配置后,IP转发功能就永久开启了。

    展开全文
  • 最近开始写ruby的教程,在虚拟机搭建了rails之后,发现在虚拟机中可以访问,但是外网无法访问,这里说一下具体的问题把,这是因为rails server的默认监听设置造成的。  我们可以使用rails server -h来查看它的默认...

        最近开始写ruby的教程,在虚拟机搭建了rails之后,发现在虚拟机中可以访问,但是外网无法访问,这里说一下具体的问题把,这是因为rails  server的默认监听设置造成的。

        我们可以使用rails  server  -h来查看它的默认监听设置,它默认监听的是'localhost‘这个主机名,导致我们无法访问,解决思路就是设置为绑定为一个ip地址,比如虚拟机的内网地址。

        下面是我的测试范例(下面的GET是一次网页的访问请求):

    root@newstar:~/blog# rails server -b 192.168.31.114
    Warning: Running `gem pristine --all` to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring.
    => Booting WEBrick
    => Rails 4.2.4 application starting in development on http://192.168.31.114:3000
    => Run `rails server -h` for more startup options
    => Ctrl-C to shutdown server
    [2015-11-10 17:40:04] INFO  WEBrick 1.3.1
    [2015-11-10 17:40:04] INFO  ruby 2.1.2 (2014-05-08) [i386-linux-gnu]
    [2015-11-10 17:40:04] INFO  WEBrick::HTTPServer#start: pid=13044 port=3000




    Started GET "/" for 192.168.31.238 at 2015-11-10 17:40:07 +0800
    Cannot render console from 192.168.31.238! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
    Processing by Rails::WelcomeController#index as HTML
      Rendered /var/lib/gems/2.1.0/gems/railties-4.2.4/lib/rails/templates/rails/welcome/index.html.erb (1.1ms)
    Completed 200 OK in 17ms (Views: 6.5ms | ActiveRecord: 0.0ms)

    展开全文
  • kong启动后,在虚拟机上访问localhost:8001可以访问,但是外部机器通过[虚拟机IP:8001]无法访问 通过docker方式安装的kong,在启动之后就不存在这个问题,外部主机通过IP端口可以轻松访问 问题排查分析 ubuntu...

    问题描述

    1. kong启动后,在虚拟机上访问localhost:8001可以访问,但是外部机器通过[虚拟机IP:8001]无法访问
    2. 通过docker方式安装的kong,在启动之后就不存在这个问题,外部主机通过IP端口可以轻松访问

    问题排查分析

    ubuntu虚拟机下情况

    刚安装的kong,默认监听的地址是127.0.0.1:8001,127.0.0.1:8443,可以通过查看/usr/local/kong/nginx-kong.conf来查看,如图所示:
    kong.conf
    也可以通过查看虚拟机端口的监听状况来看,如图所示:
    端口监听状态

    docker容器版本下情况

    启动docker容器版本的kong,进入kong的容器内部,查看容器的端口监听状况,如图所示:
    端口监听状况
    也可以通过查看虚拟机端口的监听状况来看,如图所示:
    端口监听状况

    问题分析

    问题的根本原因就是因为nginx监听的端口,kong默认将admin的管理端口只允许服务器本机访问,不允许给外部机器访问,这样很安全,但是一方面就会不方便。
    仔细分析docker版本的kong启动命令:

    docker run -d --name kong \
         --network=kong-net \
         -e "KONG_DATABASE=postgres" \
         -e "KONG_PG_HOST=kong-database" \
         -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
         -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
         -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
         -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
         -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
         -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
         -p 8000:8000 \
         -p 8443:8443 \
         -p 8001:8001 \
         -p 8444:8444 \
         kong
    

    就会发现容器在启动的时候设置了一个环境变量KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl,可以参照官网说明

    解决方案

    修改kong的配置,让kong启动后的8001端口不再是只监听127.0.0.1下的8001端口
    直接修改kong的配置文件无法生效,除非修改kong的源码

    • 方案一:设置环境变量

    export KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl

    • 方案二:指定kong的启动文件,在启动文件中配置这个值

    # vim /apps/kong/kong.conf
    
    添加以下内容
    admin_listen = 0.0.0.0:8001, 0.0.0.0:8444 ssl
    
    # 保存退出,重启kong
    kong start -c /apps/kong/kong.conf
    

    这个时候查看服务器的端口监听状态已经改变了,监听端口状态:截图所示
    也可以以debug方式的启动,直接查看启动的输出日志,如图所示:
    kong start -c /apps/kong/kong.conf --vv
    输出日志

    展开全文
  • KVM虚拟机之网络配置

    2019-10-11 13:40:08
    两种模式区别如下:1)NAT模式:也是用户模式,数据包由NAT方式通过主机的接口进行传送,可以访问公网,但是无法外部访问虚拟机网络,所以一般不会用到。2)Bridge:也就是桥接模式,这种模式允许虚拟机像一个独立...

    kvm虚拟机的网络配置有两种模式:桥接模式和NAT模式。

    两种模式区别如下:
    1)NAT模式:也是用户模式,数据包由NAT方式通过主机的接口进行传送,可以访问公网,但是无法从外部访问虚拟机网络,所以一般不会用到。
    2)Bridge:也就是桥接模式,这种模式允许虚拟机像一个独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持,一般有线网卡都支持。

    一、NAT模式配置

    nat模式配置比较简单,只需要在启动虚拟机后,更改其虚拟机的网卡配置文件,将“ONBOOT”配置项默认的“no”改为“yes”即可实现ping通外网,这里就不多写了,(它是借助KVM服务器的防火墙规则及IPtables规则来实现的,关闭KVM服务器的防火墙不会影响虚拟机ping外网,但是其iptables的默认配置必须存在,否则,虚拟机无法ping通外网)。

    二、bridge模式配置

    Bridge有两种配置方法,第一种比较繁琐,不推荐使用,在我之前的博文:Centos7部署KVM虚拟化平台详解中有写出来,可以进行参考,这里来写出来第二种方法,比较简单的一种方法。

    [root@kvm ~]#  systemctl stop NetworkManager    #停止此服务
    [root@kvm ~]# virsh iface-bridge ens33 br0    #执行此命令时,若提示以下信息,不用在意,因为其已经存在了
    使用附加设备 br0 生成桥接 ens33 失败
    已启动桥接接口 br0
    [root@kvm ~]# ls /etc/sysconfig/network-scripts/ | grep br0   
    ifcfg-br0        #确定有此文件就行
    [root@kvm ~]# virsh destroy test01     #关闭虚拟机
    域 test01 被删除
    [root@kvm ~]# virsh edit test01      #编辑虚拟机的配置文件,定位到interface
    <interface type='bridge'>      #将此处改为bridge
     <mac address='52:54:00:a9:cc:5f'/>      #删除Mac地址这行
          <source bridge='br0'/>          #将此处更改为这样
    #保存退出即可

    至此就配置完成了,运行虚拟机,更改其网卡配置文件,注意:虚拟机中配置的网关和kvm宿主机是一样的,它们现在处于同一个网段,虚拟机的网卡配置文件如下:

    KVM虚拟机之网络配置

    保存退出后,重启网络服务,即可实现虚拟机和外网互相通信了!!!自行测试吧!

    ———————— 本文至此结束,感谢阅读 ————————

    展开全文
  • 也启动了nginx,但是返回windows后,浏览器无法访问nginx。 (二)Linux中测试nginx是否能正常启动 这里的ip注意替换个人ip curl http://192.168.174.101/ 如果本地机器nginx能正常启动,显示如下: <!...
  • 今天尝试着写了一个最简单的django 服务程序,使用虚拟机(Ubuntu16.02 LTS)上的浏览器访问程序没有问题。但是在物理机器上(win10 Home) 就出现错误 解决方法 在 django 项目的 setting.py 文件里,加入...
  • only方式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连,仅将虚拟机和主机连上了,默认情况下,虚拟机只能到主机访问,可以与主机相互共享文件,但是虚拟机无法访问外部互联网;...
  • only方式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连,仅将虚拟机和主机连上了,默认情况下,虚拟机只能到主机访问,可以与主机相互共享文件,但是虚拟机无法访问外部互联网;...
  • VM出现问题时,表现出来的情况是外部监控系统无法访问,猜测可能是由于系统假死,OVS链路问题等等。但是在出现网络问题的时候,HV统一的表现为iowait较高。 排除过程 这是一个艰难的过程,由于无法重现现场,...
  • VM出现问题时,表现出来的情况是外部监控系统无法访问,猜测可能是由于系统假死,OVS链路问题等等。但是在出现网络问题的时候,HV统一的表现为iowait较高。 排除过程 这是一个艰难的过程,由于无法重现现场,导致...
  • 但是可以和局域网内所有物理机通信,局域网内的所有物理机也能访问centos7的虚拟机,如下图: ![通过putty可以远程ssh连接到虚拟机上,虚拟机也能ping通局域网的物理机,但无法ping网关和外网]...
  • Docker端口映射

    2019-09-25 14:34:17
     在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。 docker指令:  docker run -p ip:hostPort:containerPort redis 参数讲解:  使用-p参数会分配宿主机的...
  • 六、Docker 端口映射

    2019-07-07 16:16:00
    在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。 6.1 端口映射指令 # docker run -p ip:hostPort:containerPort tomcat 使用-p参数会分配宿主机的端口映射到...
  • Docker学习笔记-Docker端口映射

    千次阅读 2017-11-03 14:11:20
    在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。 端口映射的指令是什么? docker指令:docker run -p ip:hostPort:containerPort redis 使用-p参数会分配...
  • 反复测试后发现原因:端口映射原因:在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。 1、docker启动redis的步骤: su root systemctl start docker docker run -...
  • 在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。 端口映射的指令是什么? docker指令:docker run -p ip:hostPort:containerPort redis 使用-p参数...
  • Docker 端口映射

    千次阅读 2018-03-24 22:11:14
    在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。实现外界和Docker容器进行通讯,要么做link要么做Port映射端口映射:docker指令:docker run -p ip:hostPort:...
  • 在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。 端口映射的指令是什么? docker指令:docker run -p ip:hostPort:containerPort redis 使用-p参数会分配宿主机...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

外部机器无法访问虚拟机