diff --git a/tests/network/index.md b/tests/network/index.md index 59735df..d047689 100644 --- a/tests/network/index.md +++ b/tests/network/index.md @@ -1,4 +1,5 @@ - [通过多 IP 达成单机百万连接](tests/network/test02) - [通过端口重用达成单机百万连接](tests/network/test03) -- [一个模拟 tcpdump 的简单抓包程序](tests/network/test04) \ No newline at end of file +- [一个模拟 tcpdump 的简单抓包程序](tests/network/test04) +- [用 bridge 连接本机上的多组 veth,使其可以互相通信](tests/network/test05) \ No newline at end of file diff --git a/tests/network/test05/Makefile b/tests/network/test05/Makefile new file mode 100644 index 0000000..b26a8a0 --- /dev/null +++ b/tests/network/test05/Makefile @@ -0,0 +1,42 @@ +.PHONY: create-net1 +create-net1: + ip netns add net1 + ip link add veth1 type veth peer name veth1_p + ip link set veth1 netns net1 + ip netns exec net1 ip addr add 192.168.0.101/24 dev veth1 + ip netns exec net1 ip link set veth1 up + ip netns exec net1 ip link list + ip netns exec net1 ifconfig + ip netns list + +.PHONY: create-net2 +create-net2: + ip netns add net2 + ip link add veth2 type veth peer name veth2_p + ip link set veth2 netns net2 + ip netns exec net2 ip addr add 192.168.0.102/24 dev veth2 + ip netns exec net2 ip link set veth2 up + ip netns exec net2 ip link list + ip netns exec net2 ifconfig + ip netns list + +.PHONY: create-br +create-br: + brctl addbr br0 + ip addr add 192.168.0.100/24 dev br0 + ip link set dev veth1_p master br0 + ip link set dev veth2_p master br0 + ip link set veth1_p up + ip link set veth2_p up + ip link set br0 up + brctl show + +.PHONY: clean +clean: + ip link delete br0 + ip link delete veth1_p + ip link delete veth2_p + ip link list + ip netns del net1 + ip netns del net2 + ip netns list diff --git a/tests/network/test05/index.md b/tests/network/test05/index.md new file mode 100644 index 0000000..7485e01 --- /dev/null +++ b/tests/network/test05/index.md @@ -0,0 +1,37 @@ + +本实验配套的 Makefile 位于本文件的同目录,其使用方法如下: + + +**创建网络环境1** + +```sh +# make create-net1 +``` + +**创建网络环境2** + +```sh +# make create-net2 +``` + +**创建 bridge**,并把 net1、net2中的“网线插头”给接上 + +```sh +# make create-br +``` + +从 net1 的网络环境中 ping 一下 net2 试试 + +```sh +# ip netns exec net1 ping 192.168.0.102 -I veth1 +PING 192.168.0.102 (192.168.0.102) from 192.168.0.101 veth1: 56(84) bytes of data. +64 bytes from 192.168.0.102: icmp_seq=1 ttl=64 time=0.037 ms +64 bytes from 192.168.0.102: icmp_seq=2 ttl=64 time=0.008 ms +64 bytes from 192.168.0.102: icmp_seq=3 ttl=64 time=0.005 ms +``` + +最后,清理实验所创建的各种虚拟网络设备 + +```sh +# make clean +``` \ No newline at end of file