许吉友 - 运维

一次网络命令实践

《Kubernetes 权威指南 (第四版)》第七章,p415 开始。

$ sudo ip netns add xujiyou # 创建一个名为xujiyou的网络命名空间

在命名空间中执行ip a命令:

$ sudo ip netns exec xujiyou ip a

也可以先通过 bash 命令进入内部的 shell 界面,然后再执行各种命令:

$ sudo ip netns exec xujiyou bash

如果退出,输入exit

移动网络设备到其他网络命名空间

手贱,执行了以下命令:

$ sudo ip link set eth0 netns xujiyou

把 eth0 设备移动到了xujiyou的网络命名空间下,之后就是ssh进不去了,重启不管用,去云平台重建了下实例变好了。。。

查看网络设备是否可迁移:

$ sudo ethtool -k eth0
netns-local: off [fixed]

netns-local 为 off 说明可以迁移。

Veth 设备对

创建 Veth 设备对:

$ sudo ip link add veth0 type veth peer name veth1

创建后,查看 Veth 设备对信息:

$ sudo ip link show
6: veth1@veth0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 3a:6d:f7:17:59:67 brd ff:ff:ff:ff:ff:ff
7: veth0@veth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether fa:41:12:e0:72:34 brd ff:ff:ff:ff:ff:ff

把 Veth 设备的一端甩到另一个网络命名空间:

$ sudo ip link set veth1 netns xujiyou

这时再用 ip link show 就只能看到 veth0 了。查看另一端的设备:

$ sudo ip netns exec xujiyou ip link show

然后给他们分别分配 ip 地址:

$ sudo ip addr add 10.1.1.1/24 dev veth0
$ sudo ip netns exec xujiyou ip addr add 10.1.1.2/24 dev veth1

然后启动他们:

$ sudo ip link set dev veth0 up
$ sudo ip netns exec xujiyou ip link set dev veth1 up

现在两端就可以通信了!:

$ ping 10.1.1.2
$ sudo ip netns exec xujiyou ping 10.1.1.1

完美!!!

Veth 设备如何额查看对端

[admin@fueltank-1 ~]$ sudo ip netns exec xujiyou ethtool -S veth1
NIC statistics:
     peer_ifindex: 7

然后各个命名空间查找设备号为 7 的设备:

$ sudo ip link | grep 7

路由

查看路由表:

$ sudo ip show table local type local
$ sudo ip route list
$ netstat -rn