2.3 | kubernetes: Linux 常用网络命令的使用
ifconfigifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置,但是重启后会失效。-a:显示所有网络设备-s:显示简要信息iproutebrctl
ifconfig
ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置,但是重启后会失效。
命令概览
-a:显示所有网络设备-s:显示简要信息<interface> <operation> <parameters>:操作对应网卡up:启用网卡down:关闭网卡txqueuelen <NN>:设置网卡传输队列长度mtu <NN>:设置网卡最大传输单元add <address>[/<prefixlen>]:设置网卡地址del <address>[/<prefixlen>]:删除网卡地址netmask <address>:设置子网掩码tunnel <address>:网卡建立到address的隧道hw <HW> <address>:设置网卡 MAC 地址
输出信息示例
$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.214.5 netmask 255.255.255.0 broadcast 172.16.214.255
inet6 fe80::fd8f:e0f5:1f03:57ac prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:ee:fe:e0 txqueuelen 1000 (Ethernet)
RX packets 76848 bytes 54358432 (54.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 72546 bytes 52701758 (52.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$ ifconfig -s ens33
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 76956 0 0 0 72673 0 0 0 BMRU
字段解析
- ens33:网卡名称,例 lo 为 loopback 的名称
- flags:
4163=0x1043=0x1000+0x40+0x2+0x1- UP
0x1 - RUNNING
0x40 - BROADCAST
0x2 - MULTICAST
0x1000 - IPv4
- inet IPv4 地址
- netmask 子网掩码
- broadcast 广播地址
- IPv6
- inet6 IPv6 地址
- prefixlen
- scopeid
- ether:网卡硬件地址,即 MAC 地址
- txqueuelen:传输数据的缓冲区的储存长度
- RX & TX 共有字段
- packets 数据包数
- bytes 总数据量
- errors 数据包发生错误的数量
- dropped 数据包由于有问题而遭丢弃的数量
- overruns
- RX:数据包接收情况(由启动到目前为止)
- frame
- TX:数据包传送情况(由启动到目前为止)
- collisions 数据包碰撞的情况。太多次,表示网络状况不好
- carrier

route
route 命令可以显示或设置 Linux 内核中的路由表,主要是静态路由。
对于局域网中的 Linux 主机,要想访问 Internet,需要将局域网的网关 IP 地址设置为这个主机的默认路由。
在命令行中通过 route 命令添加的路由在网卡重启或机器重启后失效。可以在 /etc/rc.local 中添加 route 命令来保证路由设置永久有效。
通过 route 命令查看 Linux 内核的路由表(等同于 netstat -r):
# feivxs @ k8s-node-3 in ~ [18:00:22]
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 ens33
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 ens33
172.16.214.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 172.16.214.2 255.255.255.255 UGH 0 0 0 tunl0
192.168.0.0 172.16.214.2 255.255.255.0 UG 0 0 0 tunl0
192.168.1.0 - 255.255.255.0 ! 0 - 0 -
192.168.2.0 - 255.255.255.0 ! 0 - 0 -
192.168.3.0 - 255.255.255.0 ! 0 - 0 -
192.168.76.128 0.0.0.0 255.255.255.192 U 0 0 0 *
192.168.76.137 0.0.0.0 255.255.255.255 UH 0 0 0 calie2066d21eda
192.168.76.138 0.0.0.0 255.255.255.255 UH 0 0 0 cali3ef2c7cdd89
192.168.76.139 0.0.0.0 255.255.255.255 UH 0 0 0 calic440f455693
192.168.109.64 172.16.214.3 255.255.255.192 UG 0 0 0 tunl0
192.168.140.64 172.16.214.4 255.255.255.192 UG 0 0 0 tunl0
192.168.235.192 172.16.214.2 255.255.255.192 UG 0 0 0 tunl0
字段含义
| 列 | 含义 |
|---|---|
| Destination | 目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关(这里是 10.139.128.1) |
| Gateway | 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关 |
| Genmask | Destination 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255,是默认路由时会设置为 0.0.0.0 |
| Flags | 标记,含义参考表格后面的解释 |
| Metric | 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。) |
| Ref | 路由项引用次数 (不在Linux内核中使用。) |
| Use | 此路由项被路由软件查找的次数 |
| Iface | 网卡名字,例如 eth0 |
Flags 含义:
- U 路由是活动的
- H 目标是个主机
- G 需要经过网关
- R 恢复动态路由产生的表项
- D 由路由的后台程序动态地安装
- M 由路由的后台程序修改
- ! 拒绝路由
Linux 内核的路由种类
- 主机路由
路由表中指向单个 IP 地址或主机名的路由记录,其 Flags 字段为 H。下面示例中,对于 10.0.0.10 这个主机,通过网关 10.139.128.1 网关路由:
[root@VM_139_74_centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.10 10.139.128.1 255.255.255.255 UGH 0 0 0 eth0
- 网络路由
主机可以到达的网络。下面示例中,对于 10.0.0.0/24 这个网络,通过网关 10.139.128.1 网关路由:
[root@VM_139_74_centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 10.139.128.1 255.255.255.0 UG 0 0 0 eth0
- 默认路由
当目标主机的 IP 地址或网络不在路由表中时,数据包就被发送到默认路由(默认网关)上。默认路由的 Destination 是 default 或 0.0.0.0。
[root@VM_139_74_centos ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
命令选项
- -A:设置地址类型
- -C:打印 Linux 内核的路由缓存
- -v:显示详细信息
- -n:不执行 DNS 反向查找,直接显示数字形式的 IP 地址
- -e:netstat 格式显示路由表
- -net:到一个网络的路由表
- -host:到一个主机的路由表
命令参数
- add:增加路由记录
- del:删除路由记录
- target:目的网络或目的主机
- gw:设置默认网关
- mss:设置TCP的最大区块长度(MSS),单位MB
- window:指定通过路由表的TCP连接的TCP窗口大小
- dev:路由记录所表示的网络接口
ip
ip 几乎可以替代 route 和 ifconfig 命令,输出内容也比较类似。
ip address/ip a
# feivxs @ k8s-node-3 in ~ [21:21:23] C:255
$ ip -s -h address show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:ee:fe:e0 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 172.16.214.5/24 brd 172.16.214.255 scope global dynamic noprefixroute ens33
valid_lft 53810sec preferred_lft 53810sec
inet6 fe80::fd8f:e0f5:1f03:57ac/64 scope link noprefixroute
valid_lft forever preferred_lft forever
RX: bytes packets errors dropped overrun mcast
80.0M 138k 0 0 0 0
TX: bytes packets errors dropped carrier collsns
113M 149k 0 0 0 0
字段与 ifconfig 基本类似。
ip route/ip r
$ ip route
default via 172.16.214.1 dev ens33 proto dhcp metric 100
169.254.0.0/16 dev ens33 scope link metric 1000
172.16.214.0/24 dev ens33 proto kernel scope link src 172.16.214.5 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.0.0 via 172.16.214.2 dev tunl0 proto bird onlink
192.168.0.0/24 via 172.16.214.2 dev tunl0 proto bird onlink
unreachable 192.168.1.0/24 proto bird
unreachable 192.168.2.0/24 proto bird
unreachable 192.168.3.0/24 proto bird
blackhole 192.168.76.128/26 proto bird
192.168.76.137 dev calie2066d21eda scope link
192.168.76.138 dev cali3ef2c7cdd89 scope link
192.168.76.139 dev calic440f455693 scope link
192.168.109.64/26 via 172.16.214.3 dev tunl0 proto bird onlink
192.168.140.64/26 via 172.16.214.4 dev tunl0 proto bird onlink
192.168.235.192/26 via 172.16.214.2 dev tunl0 proto bird onlink
- proto:路由协定
- redirect 路由是由ICMP重定向加入的
- kernel 路由是由内核在自动配置期间加入的
- boot 路由是启动过程中加入的,如果一个路由监控程序将要启动,这些路由都会被清除;
- static 为了覆盖动态路由,由系统管理员手工添加的路由。路由监控程序也会优先考虑这类路由,甚至可能通告给其对端;
- ra 路由是通过路由发现协议加入的 (Router Discovery Protocol)
- scope:路由的范围
- link 与本设备有关的直接连接
brctl
Reference
- https://ittroubleshooter.in/ifconfig-ip-command-tips-tricks
- https://networkengineering.stackexchange.com/questions/57920/what-does-the-flag-and-mtu-means-in-here
- https://www.wumingx.com/linux/ipcommand.html
- https://blog.csdn.net/kikajack/article/details/80457841
- https://www.cyberciti.biz/faq/what-is-a-routing-table/