本文目的主要是对学习 《Linux 实战技能 100 讲》过程中的内容做记录,防止忘记,即便忘记了也可以再回来查。

极客专栏地址: https://time.geekbang.org/course/intro/193

第三章: 系统管理篇

26 网络管理

网络状态查看工具

早期使用 net-tools 工具集,现在较新的 Linux 发行版使用 iproute2 工具集。

简要介绍如下:

1.net-tools
  • ifconfig
    • eth0 第一块网卡
    • ens33 PCI-E 网卡
    • enp0s3 无法获取物理信息的 PCI-E 网卡
    • CentOS 7 使用了一致性网络设备命名,以上都不匹配则使用 eth0
  • route
  • netstat
2.iproute2
  • ip
  • ss

网卡接口命名修改

  • 网卡命名规则受 biosdevnamenet.ifnames 两个参数影响
  • 编辑 /etc/default/grub 文件,增加 biosdevname=0 net.ifnames=0
  • 更新 grub
    • #grub2-mkconfig -o /boot/grub2/grub.cfg
  • 重启
    • #reboot
biosdevname net.ifnames 网卡名
默认 0 1 ens33
组合 1 1 0 em1
组合 2 0 0 eth0

systemd 网络端口命名规则

https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

27 查看网络配置

ifconfig 输出

ifconfig
/sbin/ifconfig
enp0s31f6: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether e8:6a:64:44:77:3c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xee300000-ee320000

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1425567  bytes 5078552462 (4.7 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1425567  bytes 5078552462 (4.7 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.9  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::92ed:8a43:7e6:6880  prefixlen 64  scopeid 0x20<link>
        ether 1c:1b:b5:3f:4b:4d  txqueuelen 1000  (Ethernet)
        RX packets 78354285  bytes 111604642686 (103.9 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 40923681  bytes 4766853522 (4.4 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • inet 网卡的 ipv4 地址
  • inet6 网卡的 ipv6 地址
  • ether 网卡的 MAC 地址
  • RX TX 发送、接收数据包统计
  • lo 代表本地环回 网卡,本地地址永远是 127.0.0.1

查看网卡物理链接状态

mii-tool - view, manipulate media-independent interface status

# sudo mii-tool enp0s31f6
enp0s31f6: no link

查看网关命令

  • route -n
  • 使用 -n 参数不解析主机名
-->$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    600    0        0 wlp2s0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-a1bd391f73c0
192.168.1.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp2s0
  • default 表示默认网关

28 修改网络配置

网络配置命令

  • ifconfig <接口> <IP地址> [netmask 子网掩码]
  • ifup <接口>
  • ifdown <接口>

网关配置命令

添加网关

添加默认网关:
route add default gw <网关ip>
添加明细路由:
route add -host <指定ip> gw <网关ip>
route add -net <指定网段> netmask <子网掩码> gw <网关ip> 访问某个网段的明细路由

ip 命令

  • ip addr ls = ifconfig
  • ip link set dev eth0 up = ipup eth0
  • ip addr add 10.0.0.1/24 dev eth1 = ifconfig eth1 10.0.0.1/24 netmask 255.255.255.0
  • ip route add 10.0.0.1/24 via 192.168.0.1 = route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.1

29 网络故障排除

排除命令:

  • ping 检测网络是否可达 , -c 指定次数
  • traceroute 检测每一跳的情况 ; -w 等待时间
  • mtr 检测包是否丢失 My traceroute
  • nslookup 域名查看 ip
  • telnet 检查端口连接状态 telnet www.baidu.com 80
  • tcpdump 抓取数据包 tcpdump -i any -n port 80 tcpdump -i any -n host 10.0.0.1 tcpdump -i any -n host 10,0.0.1 and port 80 -w /tmp/dump.txt
  • netstat 端口查看状态 -n 显示 ip 地址, t tcp -p 进程 l listen
  • ss 参数与 netstat 类似

30 网络管理和配置文件

网络服务管理

网络服务管理程序分为 SysV 和 systemd, 下面是常用的一些命令:

  • service network start/stop/restart
  • chkconfig -list network chkconfig --level 2345 network off/on
  • systemctl list-unit-files NetworkManager.service
  • systemctl start/stop/restart NetworkManager
  • systemctl enable/disable NetworkManager

配置文件:

  • /et/sysconfig/network-scripts/ifcfg-**
    • BOOTPROTO=dhcp/static/none
    • ONBOOT="yes"/"no"
    • IPADDR NETMASK GATEWAY DNS1 DNS2 DNS3
  • /etc/hosts

主机名

  • hostname # 展示主机名
  • hostname NAME # 临时设置主机名
  • hostnamectl set-hostname NAME # 永久设置主机名