Linux bridge 网络问题

2018-08-29 08:45:08 +08:00
 miniliuke
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 的问题?还是我设置默认路由的问题?
2048 次点击
所在节点    问与答
19 条回复
miniliuke
2018-08-29 08:59:21 +08:00
没有人配置过吗?
e1eph4nt
2018-08-29 09:01:02 +08:00
听起来像是 iptables 的问题,自己的 ip 都 ping 不通很奇怪

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

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

另外,类似 bridge 的结构上进行互联的话,应该是基于 arp 表发现的,不需要网关和路由表,只需要给小鸡网卡加上合适的 IP 即可。
zrp1994
2018-08-29 10:44:45 +08:00
@miniliuke 可以贴一下`ip route list table local`的执行结果么?
miniliuke
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
2018-08-29 14:19:09 +08:00
建议别拿公网 IP 当内网 IP 用
miniliuke
2018-08-29 17:34:35 +08:00
ping 自己 ping 不通也太骚气了
zrp1994
2018-08-30 00:03:20 +08:00
@miniliuke 虚拟机的 ip 不是.4 和.5 么?

另外虚拟机的 iptables -S 的结果是什么
miniliuke
2018-08-30 07:52:18 +08:00
@zrp1994 又建了一台,重点是 ping 不通自己啊
shelterz
2018-08-30 08:19:41 +08:00
iptables -F 清空所有规则,然后再试试。
shelterz
2018-08-30 08:21:14 +08:00
楼主用的什么发行版,ubuntu 的 iptables 关不掉
miniliuke
2018-08-30 08:32:41 +08:00
@shelterz centos......应该关了虚拟机上不了外网,但互相能 ping 通了
miniliuke
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 也监控着发现也没有包......

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/484128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX