2.3 | kubernetes: Linux 常用网络命令的使用
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 地址
输出信息示例
1 | ifconfig ens33 |
字段解析
- 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
):
1 | feivxs @ k8s-node-3 in ~ [18:00:22] |
字段含义
列 | 含义 |
---|---|
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 网关路由:
1 | [root@VM_139_74_centos ~]# route -n |
- 网络路由
主机可以到达的网络。下面示例中,对于 10.0.0.0/24 这个网络,通过网关 10.139.128.1 网关路由:
1 | [root@VM_139_74_centos ~]# route -n |
- 默认路由
当目标主机的 IP 地址或网络不在路由表中时,数据包就被发送到默认路由(默认网关)上。默认路由的 Destination 是 default 或 0.0.0.0。
1 | [root@VM_139_74_centos ~]# route |
命令选项
- -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
1 | feivxs @ k8s-node-3 in ~ [21:21:23] C:255 |
字段与 ifconfig
基本类似。
ip route
/ip r
1 | ip route |
- 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/
2.3 | kubernetes: Linux 常用网络命令的使用