Docker网络
节点信息
1
2
3
4
5
6
7
8
9
10
11
12
|
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:32:83:16 brd ff:ff:ff:ff:ff:ff
inet 10.201.50.188/24 brd 10.201.50.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe32:8316/64 scope link
valid_lft forever preferred_lft forever
|
添加网络命令空间
增加 veth
1
|
ip link add veth0 type veth peer name veth1
|
通过 ip addr 命令查看,多了两个设备
1
2
3
4
|
3: veth1@veth0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether da:13:9f:3c:97:b5 brd ff:ff:ff:ff:ff:ff
4: veth0@veth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 32:2b:79:c6:1b:76 brd ff:ff:ff:ff:ff:ff
|
查看 veth0 连接的对端名称
1
2
|
ethtool -S veth0NIC statistics:
peer_ifindex: 3
|
ip netns exec netns1 ip addr 查看 netns1 空间内的情况,多了一个设备
1
2
3
4
|
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: veth1@if4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether da:13:9f:3c:97:b5 brd ff:ff:ff:ff:ff:ff link-netnsid 0
|
给 netns1 的设备添加 ip 地址,并启动设备
1
2
|
ip netns exec netns1 ip addr add 10.1.1.1/24 dev veth1
ip netns exec netns1 ip link set dev veth1 up
|
设置默认空间中的 veth0 设置,添加 ip 地址,并启动`
1
2
|
ip addr add 10.1.1.2/24 dev veth0
ip link set dev veth0 up
|
ping测试:
1
2
3
4
5
|
# 默认空间 ping netns1 空间地址
ping -c 4 10.1.1.1
# netns1 的ping 默认空间
ip netns exec netns1 ping -c 4 10.1.1.2
|
现在 两个 网络命名空间都可以连通了
网桥的执行过程
配置了3个 网络命名空间,3个 veth对,一个网桥,然后将3个空间连接起来,其网络拓扑如下
实验细节参考 -> 这里
tap tun 介绍
细节参考 -> 这里
参考
Docker 网络
Linux tun:tap 详解
Linux Bridge 详解