本wiki 参考https://wiki.archlinux.org/index.php/Network_bridge

ip link 配置网桥接口

新建网桥接口:

root@phycore-am335x-1:~# ip link add name br0 type bridge
[   26.747911] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.

网卡eth0、eth1加入网桥连接

root@phycore-am335x-1:~# ip link set eth0 master br0
[   61.414369] br0: port 1(eth0) entered blocking state
[   61.419864] br0: port 1(eth0) entered disabled state
[   61.449214] device eth0 entered promiscuous mode
[   61.454233] audit: type=1700 audit(1521473806.430:2): dev=eth0 prom=256 old_prom=0 auid=4294967295 uid=0 gid=0 ses=4294967295
[   61.489977] audit: type=1300 audit(1521473806.430:2): arch=40000028 syscall=296 per=800000 success=yes exit=40 a0=3 a1=becc26cc a2=0 a3=0 items=0 ppid=213 pid=241 auid=4294967295 uid=0 g)
[   61.543910] audit: type=1327 audit(1521473806.430:2): proctitle=6970006C696E6B007365740065746830006D617374657200627230
root@phycore-am335x-1:~# ip link set eth1 master br0                                                                                                                                          
[   67.864523] br0: port 2(eth1) entered blocking state
[   67.869922] br0: port 2(eth1) entered disabled state
[   67.875232] net eth1: promiscuity not disabled as the other interface is still in promiscuity mode
[   67.905360] device eth1 entered promiscuous mode
[   67.910516] audit: type=1700 audit(1521473812.880:3): dev=eth1 prom=256 old_prom=0 auid=4294967295 uid=0 gid=0 ses=4294967295
[   67.947374] audit: type=1300 audit(1521473812.880:3): arch=40000028 syscall=296 per=800000 success=yes exit=40 a0=3 a1=bebca6cc a2=0 a3=0 items=0 ppid=213 pid=242 auid=4294967295 uid=0 g)
[   67.997811] audit: type=1327 audit(1521473812.880:3): proctitle=6970006C696E6B007365740065746831006D617374657200627230
root@phycore-am335x-1:~# bridge link
3: eth0 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state disabled priority 32 cost 19 
4: eth1 state UP : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state disabled priority 32 cost 19

网桥接口使能:

root@phycore-am335x-1:~# ip link set br0 up
[  108.673940] br0: port 2(eth1) entered blocking state
[  108.679355] br0: port 2(eth1) entered forwarding state
[  108.685040] br0: port 1(eth0) entered blocking state
[  108.690358] br0: port 1(eth0) entered forwarding state

查看网口信息,此时br0网桥接口已经连接

root@phycore-am335x-1:~# ip addr
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: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UNKNOWN group default qlen 10
    link/can 
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 90:70:65:6d:b4:19 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.11/24 brd 192.168.3.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.115/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::9270:65ff:fe6d:b419/64 scope link 
       valid_lft forever preferred_lft forever
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 90:70:65:6d:b4:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.11/24 brd 192.168.4.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::9270:65ff:fe6d:b41b/64 scope link 
       valid_lft forever preferred_lft forever
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
    link/sit 0.0.0.0 brd 0.0.0.0
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 90:70:65:6d:b4:19 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::9270:65ff:fe6d:b419/64 scope link 
       valid_lft forever preferred_lft forever

如果需要对网桥接口设置ip地址,使用以下命令设置

root@phycore-am335x-1:~# ip addr add dev br0 192.168.5.11/24

systemd服务配置网桥接口

使用上面ip link方式配置网桥接口,开发板重新开机后,相应的网桥配置都会没有了。如果需要网桥接口开机自动配置,需要在systemd-networkd.service中配置。

新建网桥接口:

在/etc/systemd/network目录下新增配置文件br0.netdev, 内容如下

[NetDev]
Name=br0
Kind=bridge

网卡eth0, eth1加入网桥连接:

修改/lib/systemd/network目录下eth0 和eth1的配置文件10-eth0.network、10-eth1.network,在[Network]的配置下增加Bridge配置

[Network]
Bridge=br0

网桥接口连接设置:

在/lib/systemd/network目录下新建网桥接口配置文件20-br0.network, 内容如下:

[match]
Name=br0

[Network]
DHCP=ipv4

经过以上设置后,重启systemd-networkd 服务即可。

root@phycore-am335x-1:~# systemctl restart systemd-networkd

使用这种方法,重新开机上电后,网桥接口配置便会自动连接。

  • No labels