V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
miniliuke
V2EX  ›  问与答

Linux bridge 网络问题

  •  1
     
  •   miniliuke · 2018-08-29 08:45:08 +08:00 · 2035 次点击
    这是一个创建于 2257 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1、搭建了两台虚拟机通过 veth 设备对连接到网桥( IP:172.8.0.1/16 ),两台虚机地址为 172.8.0.4,172.8.0.5,都设置了默认路由为 172.8.0.1,设置 iptables 规则使得虚拟机可以上外网。
    2、现在网络情况是主机可以 ping 通两台虚拟机,虚拟机可以 ping 通 172.8.0.1 和外网。但是虚拟机不能 ping 通其他虚拟机,设置不能 ping 通自己的 ip,有大佬知道为啥不?是不是我设置 iptables 的问题?还是我设置默认路由的问题?
    19 条回复    2018-08-31 10:13:08 +08:00
    miniliuke
        1
    miniliuke  
    OP
       2018-08-29 08:59:21 +08:00
    没有人配置过吗?
    e1eph4nt
        2
    e1eph4nt  
       2018-08-29 09:01:02 +08:00
    听起来像是 iptables 的问题,自己的 ip 都 ping 不通很奇怪

    可以在虚拟机里面检查下 iptables,然后 ip r 显示下路由表
    miniliuke
        3
    miniliuke  
    OP
       2018-08-29 09:06:40 +08:00 via Android
    @e1eph4nt 我虚拟机 route 只有一条规则,默认路由为 172.8.0.1
    miniliuke
        4
    miniliuke  
    OP
       2018-08-29 09:10:33 +08:00 via Android
    还有,为什么我没有开 iptables,它也能起作用......
    Quarter
        5
    Quarter  
       2018-08-29 09:13:40 +08:00 via iPhone
    是因为网桥的问题?照道理,如果默认路由指向.1,如果是一个路由器,是可以获取到和路由器直接连接的设备网络地址的,是可以 ping 通的,但是网桥就不是很懂了,我也只是知道个皮毛,还有一个问题,如果路由有问题,数据包出去外网了应该就回不来了,不应该可以 ping 通外网地址才对,不懂不懂
    e1eph4nt
        6
    e1eph4nt  
       2018-08-29 09:15:47 +08:00
    一般还会有一条对应子网的,不确定。。

    ip r a 172.8.0.1/16 dev eth0
    miniliuke
        7
    miniliuke  
    OP
       2018-08-29 09:22:52 +08:00 via Android
    @e1eph4nt 的确有,没有写上去
    miniliuke
        8
    miniliuke  
    OP
       2018-08-29 09:33:52 +08:00 via Android
    我把 iptables 关了,外网上不了了,能 ping 其他虚拟机,但 ping 不通自己 ip
    msg7086
        9
    msg7086  
       2018-08-29 09:50:34 +08:00
    看你的说明有点迷,不如把更原始的数据贴出来。(例如网络配置文件内容,mtr 结果,ip a / ip r 等等)

    另外,类似 bridge 的结构上进行互联的话,应该是基于 arp 表发现的,不需要网关和路由表,只需要给小鸡网卡加上合适的 IP 即可。
    zrp1994
        10
    zrp1994  
       2018-08-29 10:44:45 +08:00
    @miniliuke 可以贴一下`ip route list table local`的执行结果么?
    miniliuke
        11
    miniliuke  
    OP
       2018-08-29 11:20:21 +08:00
    @zrp1994 图不太好发

    这是虚拟机 172.8.0.6 的:
    broadcast 172.8.0.0 dev veth1 proto kernel scope link src 172.8.0.6
    local 172.8.0.6 dev veth1 proto kernel scope host src 172.8.0.6
    broadcast 172.8.255.255 dev veth1 proto kernel scope link src 172.8.0.6

    这是主机的:

    broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
    local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
    local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
    broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
    broadcast 172.8.0.0 dev sgdocker0 proto kernel scope link src 172.8.0.1
    local 172.8.0.1 dev sgdocker0 proto kernel scope host src 172.8.0.1
    broadcast 172.8.255.255 dev sgdocker0 proto kernel scope link src 172.8.0.1
    broadcast 172.17.0.0 dev docker0 proto kernel scope link src 172.17.0.1
    local 172.17.0.1 dev docker0 proto kernel scope host src 172.17.0.1
    broadcast 172.17.255.255 dev docker0 proto kernel scope link src 172.17.0.1
    broadcast 172.21.0.0 dev eth0 proto kernel scope link src 172.21.0.16
    local 172.21.0.16 dev eth0 proto kernel scope host src 172.21.0.16
    broadcast 172.21.15.255 dev eth0 proto kernel scope link src 172.21.0.16

    其中 172.17 的是 docker 相关的,172.21 是这台主机在的网络
    LGA1150
        12
    LGA1150  
       2018-08-29 14:19:09 +08:00 via Android
    建议别拿公网 IP 当内网 IP 用
    miniliuke
        13
    miniliuke  
    OP
       2018-08-29 17:34:35 +08:00 via Android
    ping 自己 ping 不通也太骚气了
    zrp1994
        14
    zrp1994  
       2018-08-30 00:03:20 +08:00 via iPhone
    @miniliuke 虚拟机的 ip 不是.4 和.5 么?

    另外虚拟机的 iptables -S 的结果是什么
    miniliuke
        15
    miniliuke  
    OP
       2018-08-30 07:52:18 +08:00 via Android
    @zrp1994 又建了一台,重点是 ping 不通自己啊
    shelterz
        16
    shelterz  
       2018-08-30 08:19:41 +08:00 via iPhone
    iptables -F 清空所有规则,然后再试试。
    shelterz
        17
    shelterz  
       2018-08-30 08:21:14 +08:00 via iPhone
    楼主用的什么发行版,ubuntu 的 iptables 关不掉
    miniliuke
        18
    miniliuke  
    OP
       2018-08-30 08:32:41 +08:00 via Android
    @shelterz centos......应该关了虚拟机上不了外网,但互相能 ping 通了
    miniliuke
        19
    miniliuke  
    OP
       2018-08-31 10:13:08 +08:00
    使用 tcpdump -n -i veth1,tcpdump -n -i bridge
    172.8.0.6 发现 ping 172.8.0.6 没有包,同时 bridge 也监控着发现也没有包......
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2811 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 06:33 · PVG 14:33 · LAX 23:33 · JFK 02:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.