请教一个如何配置局域网固定机器与虚拟机互访的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
flamhaze5946
V2EX    宽带症候群

请教一个如何配置局域网固定机器与虚拟机互访的问题

  •  
  •   flamhaze5946 2020 年 12 月 21 日 2916 次点击
    这是一个创建于 1861 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有两台物理机 AB, A 用作便携式虚拟机集群, B 用作互联网提供端.

    A 是 Win10 系统, 通过 Hyper-V 虚拟若干台在同一内部交换机 192.168.20.0/24 的虚拟机, A 作为其网关, 地址为 192.168.20.1

    A 有一张物理网卡, 它是网口网卡, 用于连接 B 实现互访, 地址为 192.168.15.2/24, 网关设置为 192.168.15.1/24

    B 是 Windows 或 Mac 系统, 有两张物理网卡, 一张是无线网卡用于连接互联网, 一张是网口网卡用于连接 A, 地址是 192.168.15.1/24, 系统配置无线网卡将网络共享给网口网卡.

    B 设置了 route 192.168.20.0 mask 255.255.255.0 192.168.15.2 A 设置了 route 192.168.10.0 mask 255.255.255.0 192.168.15.1

    以上设置后 A 中虚拟机能够 ping 通 B, 但是 B 并不能 ping 通 A 中的虚拟机. 在 A 中 ping -S 192.168.15.2 192.168.20.1 也不能 ping 通.

    请问下这种场景有什么好的解决方案吗???谢谢啦!

    第 1 条附言    2020 年 12 月 21 日

    网上找到个图, 和我这种情况比较匹配, 大家可以参考一下. img

    第 2 条附言    2020 年 12 月 22 日
    非常感谢大家, 昨天晚上我将宿主机的软路由功能打开就成功了.
    实际上原来从外部机器过来的 ping 已经到了宿主机的 192.168.15.2 网卡, 只是缺少了软路由功能的系统无法将这个网卡的数据包转发到 192.168.20.1 上....
    24 条回复    2020-12-24 11:48:45 +08:00
    Tianao
        1
    Tianao  
       2020 年 12 月 21 日 via iPhone   1
    能 ping 通证明双向路由都没问题,建议检查防火墙配置是否响应 ICMP Echo request 或者先行以 192.168.20.1 作为源地址 ping 同段虚机测试。
    flamhaze5946
        2
    flamhaze5946  
    OP
       2020 年 12 月 21 日
    @Tianao
    我把防火墙中的 ICMP 拦截都关闭了.
    A 和 B 在 192.168.15.0/24 能互相 ping 通的, 同时宿主机 A 也能 ping 通虚拟机.
    但是 B 不能 ping 通 A 的 192.168.20.1 地址, 也不能 ping 通 A 中的虚拟机.
    Tianao
        3
    Tianao  
       2020 年 12 月 21 日 via iPhone   1
    B 上路由跟踪一下 192.168.20.1 看看?
    flamhaze5946
        4
    flamhaze5946  
    OP
       2020 年 12 月 21 日
    @Tianao B 上使用 tracert 显示的是 * * * 超时
    Tianao
        5
    Tianao  
       2020 年 12 月 21 日 via iPhone   1
    第一跳是 192.168.15.2 并且显示 *?是不是 Hyper-V 给虚机网络做了源 NAT ?
    ungrown
        6
    ungrown  
       2020 年 12 月 21 日   1
    初步感觉是 NAT +1
    flamhaze5946
        7
    flamhaze5946  
    OP
       2020 年 12 月 21 日
    @Tianao
    第一跳没有显示 192.168.15.2, 而是直接显示的 * * * 超时
    这张网卡是 Hyper-V 创建出来的虚拟网卡, 要怎么看是不是源 NAT 呢?
    flamhaze5946
        8
    flamhaze5946  
    OP
       2020 年 12 月 21 日
    @ungrown
    可以详细说说吗, 我一个周末都还没弄好 = =
    谢谢
    zerohzd
        9
    zerohzd  
       2020 年 12 月 21 日   1
    别找别人的图。。自己手绘个拓扑,标好网卡和 IP

    如果 192.168.15.0/24 网段的 IP 可以自己管理的话,全部的虚拟机网卡改桥接,IP 都配在 192.168.15.0/24,默认网关用 192.168.15.1
    sujin190
        10
    sujin190  
       2020 年 12 月 21 日   1
    Hyper-V 安装的虚拟机默认使用的内部网络是 nat 模式吧,外部 ping 肯定 ping 不通啊,你应该改为外部网络使用 A 的物理网卡,然后内部主机就能获取到 192.168.15.0/24 的地址了吧,和 B 在同一个网络肯定就可以 ping 通了
    sujin190
        11
    sujin190  
       2020 年 12 月 21 日   1
    nat 模式下想访问内部主机需要端口转发的吧,但是 windows 的端口转发似乎不是很好设置
    cpstar
        12
    cpstar  
       2020 年 12 月 21 日   1
    目测是 IP 转发的问题,设置了路由表,也只能解决 PC1 往两个网段的互通问题。
    至于 PC1如果是 Windows 系统的话设置 IP 转发好像比较复杂,可能需要开启路由功能,相当于 Windows 作为路由器存在于两个网段中间,而 Linux 则简单的多,echo 1 > /proc/sys/net/ipv4/ip_forward,或者 sysctl -p net.ipv4.ip_forward=1 即可
    或者就在 PC1 上做 NAT,把内网的服务映射到网卡 B 上

    以上仅就图片内容论述,文字内容跟图片好像对不上,懒得仔细看了/div>
    flamhaze5946
        13
    flamhaze5946  
    OP
       2020 年 12 月 22 日
    @zerohzd
    好的, 不过虚拟机不能用 192.168.15.0/24, 因为这个网卡一旦没有插线会丢失 IP, 不能做网关.
    flamhaze5946
        14
    flamhaze5946  
    OP
       2020 年 12 月 22 日
    @sujin190
    不能使用物理网卡, 因为虚拟机内部通信不能断, 需要一个可靠的网关, 物理网卡一旦没有连接外部设备就会失去做网关的资格...
    flamhaze5946
        15
    flamhaze5946  
    OP
       2020 年 12 月 22 日
    @cpstar
    正解, 昨天晚上我打开了宿主机的软路由功能, 然后就通了 = =
    flamhaze5946
        16
    flamhaze5946  
    OP
       2020 年 12 月 22 日
    @cpstar
    今天在公司机器上试了下, 公司机器 mac 作为 B, B 开启了路由转发.
    B 中也运行有虚拟机, B 中的虚拟机可以 ping 通 A 中的虚拟机, 但是 A 中的虚拟机不能 ping 通 B 中的虚拟机, 有没有可能是安全策略导致的呢? 因为即使我有管理员权限, 但是仍然无法关闭防火墙中的禁 ping 规则...
    B 通过 route add -net 192.168.30/24 -gateway 192.168.15.2 -link 192.168.15.1 语句添加路由后, 部分网络访问出现了问题, 同时路由表中新增项为 0.0.4&0x3040 192.168.15.2 UGSc en8, 而不是 192.168.30/24 192.168.15.2 UGSc en8, 请问下 0.0.4&0x3040 和 192.168.30/24 有什么关系呢, 网络访问问题是否是出在这个 0.0.4&0x3040 上呢, 如果要正确添加路由应该用什么命令...谢谢~
    flamhaze5946
        17
    flamhaze5946  
    OP
       2020 年 12 月 22 日
    @cpstar
    又试了下, 不加-link 就不会出现网络问题, 我也忘了是哪里看到的加一个-link 了, 是为了指定网卡...
    cpstar
        18
    cpstar  
       2020 年 12 月 22 日   1
    @flamhaze5946 16#
    route add -net 192.168.30/24 -gateway 192.168.15.2 -link 192.168.15.1
    第一个-net 写的是 192.168.30/24,应该是 192.168.30.0/24,少了一个.0 ?

    另外
    A 的虚机网是 192.168.20.0/24,本机网关 20.1,外网是 192.168.15.2
    B 的虚机网是 192.168.30.0/24,本机网关 30.1,外网是 192.168.15.1
    我的理解对么?
    flamhaze5946
        19
    flamhaze5946  
    OP
       2020 年 12 月 22 日
    @cpstar
    mac 上的语法可以不用写全, 会自动补 0, 我之前是加了-link 这个参数后才出现奇怪的路由条目的, 不加就没事了。

    A 的虚拟机组是 192.168.30.0/24, 网关 192.168.30.1; 网口 IP 192.168.15.2
    B 的虚拟机组是 192.168.20.0/24, 网关 192.168.20.1; 网口 IP 192.168.15.1

    我觉得是 B 的路由转发设置因为公司策略无法生效, 要不然没道理从 A 出来的去往 192.168.20.0/24 的请求会超时, 但反过来不会。。。
    cpstar
        20
    cpstar  
       2020 年 12 月 23 日   1
    @flamhaze5946 19# trace 一下呢?我觉得你公司的网络应该不会限制这个东西,除非限制了 icmp 包,如果 15.2 与 15.1 直接连接,那公司网络根本不会产生影响。
    这么判断一下,用 30.x 的去 ping 20.x 的,看数据包有没有达到 15.1,可以在 15.1 上 tcpdump 拦包,甚至尝试发起 tcp 连接(有可能交换机禁止了 icmp )
    if 收到
    > B 上没有实现路由转发
    > 继续在 20.1 上做拦包以确认没有实现转发
    else if 没收到
    > A 上没有实现路由转发
    > 在 15.2 上拦包以确认没有实现转发

    反向 20.x->30.x 如果问题类似,则在 15.2 上拦包做类似工作
    flamhaze5946
        21
    flamhaze5946  
    OP
       2020 年 12 月 23 日
    @cpstar
    公司机器禁止了 ICMP 协议的包处理, 但是 A 可以访问到 B 上启的 HTTP 服务, 所以请求肯定是到了 15.1 的, 但是 ping 192.168.20.0/24 虚拟机是 ping 不通的, 所以我认为是路由转发功能也被禁止了, 不知道有没有什么方法看路由的转发过程.

    A 是有路由转发的, 因为 B 可以 ping 通 A 上的虚拟机.
    cpstar
        22
    cpstar  
       2020 年 12 月 23 日   1
    ICMP 被禁了,那还 ping 个什么劲。但 B 能到 A-sub 的 ping,那你说的不对,ICMP 没有被禁用。到底是啥??

    B 上的 HTTP 服务,我理解应该指的是 B 上本机启动的 HTTP,或者 15.1 做的 NAT 转换出 20.x 的 HTTP 。所以,数据包只到达了 15.1,而没有继续往里走。所以还是 B 上没有启动数据包转发。

    A-sub --o--> A --o--> B --x--> B-sub,问题出在哪还不明显么?
    flamhaze5946
        23
    flamhaze5946  
    OP
       2020 年 12 月 24 日
    @cpstar
    B 被禁止相应 ICMP 的请求, 所以 B 能 ping 通 A, 但是 A 不能 ping 通 B

    是的, 虽然我设置了 forwarding=1, 但是转发仍然没有生效.

    所以我现在给 A 加了个 NAT 网关, 每个虚拟机都有两张网卡, 一张用来管理, 一张用来上网, 目前是解决了...
    flamhaze5946
        24
    flamhaze5946  
    OP
       2020 年 12 月 24 日
    @flamhaze5946

    相应 -> 响应
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     833 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 20:06 PVG 04:06 LAX 12:06 JFK 15:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86