文章目录
在Linux系统中,可以使用以下命令来进行网卡的桥接操作:
1. brctl
-
brctl addbr
:创建一个桥接设备,例如:brctl addbr br0
。 -
brctl addif
:将网卡添加到桥接设备中,例如:brctl addif br0 eth0
。 -
brctl delif
:将网卡从桥接设备中移除,例如:brctl delif br0 eth0
。 -
brctl delbr
:删除桥接设备,例如:brctl delbr br0
。 -
brctl show
:此命令用于显示当前系统上的所有网桥以及接口信息$ brctl show bridge name bridge id STP enabled interfaces docker0 8000.0242ecc68e18 no vethf614473 dockerBridge 8000.024201c0ad6d no veth0d2c6d2 veth0f9c09e veth1a5f548 veth1d24aaa
2. ip link
另外,还可以使用ip命令来进行桥接的操作,以下是一些常用的命令:
ip link add type bridge
:创建一个桥接设备,例如:ip link add br0 type bridge
。ip link set master
:将网卡添加到桥接设备中,例如:ip link set eth0 master br0
。ip link set nomaster
:将网卡从桥接设备中移除,例如:ip link set eth0 nomaster
。ip link delete
:删除桥接设备,例如:ip link delete br0
。
ip link没有直接查看网桥的命令,
但是ip link 可以查看所有网卡和接口信息,其中包含网桥和网桥的接口
3。 bridge link
bridge link 可以单独过滤出 网桥相关的接口
# bridge link
9: veth3601676 state UP @(null): <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br-2b8a275e488d state forwarding priority 32 cost 2
11: vethb651430 state UP @(null): <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br-2b8a275e488d state forwarding priority 32 cost 2
以上是常用的Linux桥接网卡命令,通过这些命令可以实现网卡间的桥接操作。
4. docker network 命令
docker network ls 查看网桥
# docker network ls
NETWORK ID NAME DRIVER SCOPE
eddae4cf1bad docker0 bridge local
34b7574b98c2 host host local
00f4601cd1c0 none null local
注意:一般情况下 docker0,对应 ip addr 中的docker0 ,但是也不一定,因此通过名字 ,可能不准
docker network inspect [bridgeName] 查看详情
bridgeName是通过 brctl show 或 docker network ls 查询到的name
# docker network inspect bridge
[
{
"Name": "bridge", //通过 brctl show 或 docker network ls 查询到的name
"Id": "d6179376f0c4dc0af7090be5d751ce53af44122b743a975fe193f216705c2e54",
"Created": "2024-04-07T09:11:11.431449886+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": true,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
},
{
"Subnet": "2022:711::/112",
"Gateway": "2022:711::1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"1dff3550d16f3b633c2f1385b25d0cd835ea47753d0cfcc0de2932c4130a4723": {
"Name": "kubia-container5",
"EndpointID": "08b3f84ac1b631babc59236e416a94d383178fbcf5d5e7e2a22a88d6a0de377d",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": "2022:711::2/112"
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0", //这个是ip a 看到的虚拟网卡
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
“com.docker.network.bridge.name”: “docker0”, //这个是ip a 看到的虚拟网卡,我们发现可能和网桥名称不一致。不过没关系,只要172.17.0.1/16
即可,因为这个是docker默认的配置
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:a0:a6:0d:27 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
Containers列表 是你启动在当前网桥下的docker