Linux macvlan接口桥接模式配置疑问及优化咨询
Linux macvlan接口桥接模式配置疑问及优化咨询
我目前在Synology DS1019+ NAS上做Linux网络配置,涉及macvlan接口和Docker容器,但更关心操作系统层面的网络(二层/三层)逻辑。现有一套配置能满足需求,但我没搞懂背后的原理,担心系统更新可能会破坏功能,而且不懂原理的话出问题也没法修复。另外也想听听更规范的配置方案,欢迎各位分享经验。
背景:之前的桥接配置理解
之前我通过在/etc/sysconfig/network-scripts/中放置配置文件,基于eth0创建了br0接口。此时br0和eth0的MAC地址相同,eth0不再持有IPv4地址,只有br0有子网内可路由的IP。我觉得这个逻辑是合理且符合预期的。
当前疑问:用ip命令创建macvlan桥接的特殊情况
后来我改用ip命令直接创建macvlan接口,执行的命令如下:
ip link add link eth0 name br0 type macvlan mode bridge ip addr add 192.168.10.1/24 dev br0 ip link set br0 up
但结果和我预期的不一样,有几个点完全搞不懂:
- 物理接口eth0仍然保留了原来的IPv4地址(192.168.1.5/24)
- 新创建的br0拥有独立的MAC地址,而且和eth0不在同一个子网(br0是192.168.10.1/24)
神奇的是两个接口都能正常工作:本地能访问,局域网内远程设备也能访问(只是需要在路由器上添加一条指向NAS的静态路由,对应br0的子网)。另外br0接口的状态显示为UNKNOWN,但实际功能完全正常。
配置前后的接口信息对比
配置前的接口状态(执行ip a输出)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1 link/sit 0.0.0.0 brd 0.0.0.0 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:11:32:c0:fb:37 brd ff:ff:ff:ff:ff:ff inet 192.168.1.5/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::211:32ff:fec0:fb37/64 scope link valid_lft forever preferred_lft forever 4: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether 00:11:32:c0:fb:38 brd ff:ff:ff:ff:ff:ff inet 169.254.6.42/16 brd 169.254.255.255 scope global eth1 valid_lft forever preferred_lft forever 5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 02:42:ad:6c:d4:7f brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:adff:fe6c:d47f/64 scope link valid_lft forever preferred_lft forever
配置后的接口状态(执行ip a输出)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1 link/sit 0.0.0.0 brd 0.0.0.0 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:11:32:c0:fb:37 brd ff:ff:ff:ff:ff:ff inet 192.168.1.5/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::211:32ff:fec0:fb37/64 scope link valid_lft forever preferred_lft forever 4: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether 00:11:32:c0:fb:38 brd ff:ff:ff:ff:ff:ff inet 169.254.6.42/16 brd 169.254.255.255 scope global eth1 valid_lft forever preferred_lft forever 5: br0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1 link/ether 76:31:e6:37:27:97 brd ff:ff:ff:ff:ff:ff inet 192.168.10.1/24 scope global br0 valid_lft forever preferred_lft forever inet6 fe80::7431:e6ff:fe37:2797/64 scope link valid_lft forever preferred_lft forever 6: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 02:42:ad:6c:d4:7f brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:adff:fe6c:d47f/64 scope link valid_lft forever preferred_lft forever
核心疑问总结
- 为什么用
ip命令创建macvlan桥接模式时,eth0还能保留自己的IPv4地址? - 为什么br0会有独立的MAC地址?这和我对macvlan桥接模式的理解不符
- br0状态显示
UNKNOWN但功能正常,这是什么原因? - 有没有更规范、更稳定的配置方式(避免系统更新后失效)?
备注:内容来源于stack exchange,提问作者Kelvin
相关产品推荐
相关产品推荐

