掘金 阅读 ( ) • 2024-04-25 11:22

theme: z-blue highlight: gruvbox-light

1、linux网络设置

网络是运维的基础。

1.1 网络设置包括四部分:

  • 主机名
  • IP/netmask #想保持网络通讯,必须要ip地址和子网掩码。
  • 路由:默认网关 #不同网段之间的设备进行通讯,需要通过网关。
  • DNS服务器 #可以有多个DNS,与外网有关,设置了DNS,设备可以上外网。

1.2 CentOS网卡的配置文件位置:

vim /etc/sysconfig/network-scripts/ifcfg- ,后面的ens33 是网卡名字,网卡名字不是固定的。

ethtool -p命令,可以让网卡快速闪烁

1.3 如何将网卡名字从ens33改成eth0?

 mv ifcfg-ens33 ifcfg-eth0  
 vim ifcfg-eth0

image.png

最后再:重启网络 systemctl restart network

2、网络配置命令

2.1 ifconfig

ifconfig命令 来源于net-tools(网络工具)包。

ifconfig命令,可以查看网卡,但是默认只能查看已开启的网卡

ifconfig -a 与ip -a 都可以查看网卡信息。

 网卡信息拆分:
 [root@localhost ~]#  ifconfig    #查看所有已开启网卡的信息
 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
     ens33: 网卡名称
     up   : 网卡已开启
     BROADCAST: 广播
     running: 正在运行
     BROADCAST: 组播
     mtu 1500: 网络传输时的最大传输单元,一般最大为1500字节左右。
     
 inet 192.168.125.100  netmask 255.255.255.0  broadcast 192.168.125.255
      inet: ip地址
      netmask: 子网掩码
      broadcast: 广播地址
  
 ether 00:0c:29:95:55:89  txqueuelen 1000  (Ethernet)
     txqueuelen: 传输队列长度
     
 RX packets 163365  bytes 230325757 (219.6 MiB)
     报文个数、总字节
     
 RX errors 0  dropped 0  overruns 0  frame 0
     errors: 错误个数
     dropped: 丢包个数
     overruns: 溢出个数
     overruns: 冲突帧数
命令 功能描述 ifconfig 查看所有开启的网卡 ifconfig 网卡名称 查看单独的网卡 ifconfig down 关闭网卡 ifconfig up 开启网卡 ifconfig -a all 显示所有网卡,包括未开启的网卡 ifconfig 网卡名称 ip地址/子网 临时设置地址 ifconfig 网卡名称:0 ip地址/子网 虚拟网卡,设置临时网卡,主要用于测试使用。 ifconfig 网卡名称 0 取消网卡设置,0就代表没有

以上命令都是临时设置, 主要作用是查看网卡信息,临时修改网卡配置。

// 命令设置分为:

  • 临时设置
  • 永久设置

2.2 ip

ip命令非常有用,但是选项非常多,并且比较复杂。

  1. ip link 代表数据链路层
  • 临时修改网卡名称:
 ip link set ens33 down   #先关闭
 ip link set ens33 name ky36    #再改名
 ip link set ky36 up   #开启改名后的网卡
  • 永久修改网卡名称:

    grub2 配置文件位置:/etc/default/grub

 [root@localhost ~]#  vim /etc/default/grub  #进入配置文件
 ​
 GRUB_TIMEOUT=5
 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
 GRUB_DEFAULT=saved
 GRUB_DISABLE_SUBMENU=true
 GRUB_TERMINAL_OUTPUT="console"
 GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0"   #在最后面添加"net.ifnames=0"的配置信息
 GRUB_DISABLE_RECOVERY="true"
 ​
 [root@localhost ~]#  grub2-mkconfig -o /boot/grub2/grub.cfg    #重新生成配置文件
  1. ip addr 代表网络层

  2. ip a 可以查看网卡

2.3 route 路由

默认路由很重要,里面包含了网关,所以尽量不要动默认路由。

命令 功能描述 route -n 查看路由、网关,显示路由信息 -n是数字形式显示。 route del default 删除默认路由 route add default gw + ip地址 添加默认路由,加完需要重启网络,才会生效 route add -net + 网段 gw + 网关 添加静态路由,示例:route add -net 192.168.125.0/24 gw 192.168.125.100 route del -net + 网段 删除路由,示例:route del -net 192.168.125.0/24

// -net是静态路由,default是默认路由。

永久添加路由:

 via   网关
 #第一种方法:
 [root@localhost ~]#vim /etc/sysconfig/network-scripts/route-ens33
 10.0.0.0/24 via 192.168.91.2
 [root@localhost ~]#systemctl restart network
 ​
 #第二种方法:
 [root@localhost ~]#vim /etc/sysconfig/static-routes
 any  net 172.16.0.0/16  gw   172.16.1.2
 [root@localhost ~]#systemctl restart network

2.4 hostname 主机名

修改 hostname 后,用su 刷新 或者exit退出登录 或者重启。

临时修改主机名:

 [root@localhost ~]#  hostname   #查看主机名
 localhost.localdomain
 [root@localhost ~]#  hostname wxj   #修改主机名,为临时修改。
 [root@localhost ~]#  su  #切换
 [root@wxj ~]#         #可以看到主机名发生了变化
 [root@wxj ~]#  exit    #登出
 exit
 [root@localhost ~]#    #又变回了之前的主机名,所以设置是一次性的。
命令 功能描述 hostname 查看主机名 hostname 主机名 临时修改主机名 vim /etc/hostname 将主机名添加到该文件中,但是默认只有第一行生效 hostnamectl set-hostname + 主机名 永久修改主机名

永久修改主机名(两种方法):

  1. 修改配置文件:vim /etc/hostname

     [root@localhost ~]# vim /etc/hostname   #进入修改主机名的配置文件
     ​
     abc   #第一行
     localhost.localdomain    #第二行
     #将主机名添加到该文件中,但是只有第一行生效。
     ​
     [root@localhost ~]# reboot 
     [root@abc ~]#     #主机名改为第一行的abc
    
  2. 使用命令修改:

    hostnamectl set-hostname + 新主机名

 [root@abc ~]#  hostnamectl set-hostname wxj   #修改主机名
 [root@abc ~]#  cat /etc/hostname    #查看新主机名
 wxj

2.5 ss和netstat

查看本机网络链接状态 和本机端口状态。

1、ss(socket statistics)

选项 含义 -t tcp协议相关 ,只显示tcp -u udp协议相关,只显示udp -w 套接字相关 -x unix sock相关 -l listen状态的连接 -a 所有 -n 数字格式 -p 相关的程序及Pid -e 扩展的信息 -m 内存用量 -o 计时器信息 -r - -resolve 把ip解释为域名,把端口号解释为协议名称。

2、netstat

选项 含义 -a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) -n 以数字的形式显示相关的主机地址、端口等信息 -r 显示路由表信息 -l 显示处于监听(Listening)状态的网络连接及端口信息 -t 查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息 -u 显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息 -p 显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)

ss和netstat组合选项:

ss和netstat的选项, 一般采用组合方式,最常见的组合方式为:

  • -natp:t是tcp协议

  • -naup:u是udp协议

ss -natp |grep ”:80” #查看tcp协议下的80端口。

ss和netstat的区别:

  • ss:内核态、速度快

  • netstat:用户态、速度慢

推荐使用ss

2.6 ping

测试网络连通性。

选项 含义 -w 超时时间 -c count ,指定发送报文的次数 -i 指定收发信息的间隔时间 -s 设置数据包的大小 -n 只输出数值 -p 设置填满数据包的范本样式 -q 不显示指令执行过程 -R 记录路由过程 -t 设置存活数值TTL的大小 -v 详细显示指令的执行过程

2.7 traceroute

路由追踪。

 通式:
     traceroute + ip地址

2.8 nslookup 域名解析

示例:

 [root@abc ~]#  nslookup www.baidu.com    //将域名解析为IP地址
 Server:     8.8.8.8
 Address:    8.8.8.8#53
 ​
 Non-authoritative answer:
 www.baidu.com   canonical name = www.a.shifen.com.
 Name:   www.a.shifen.com
 Address: 36.155.132.76
 Name:   www.a.shifen.com
 Address: 36.155.132.3

小拓展:dig(需要安装)

可以显示出更多详细信息。

2.9 scp 远程拷贝

 [root@kgc opt]#scp /opt/passwd  [email protected]:/opt/passwd
               命令字 本地文件地址  对方用户名@地址冒号对面地址
 [root@kgc opt]#scp [email protected]:/opt/passwd  /opt/
                命令字 对方用户名@地址冒号对面地址        本地地址

2.10 ethtool

查看网卡信息

选项 含义 -p 可以让网卡快速闪烁 -i 显示网卡的详细信息

ethtool -i ens33

2.11 永久修改网络相关配置文件

 [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36 
 ​
 B00TPROT0=static
 #地址获取方式,分为静态和动态,静态又分为static 、none ;动态是 dhcp
 ​
 NAME=ens36
 #描述,等号后面的网卡名,前后设置要保持一致。
 ​
 DEVICE=ens36
 #设备名,同样保持一致。
 ​
 0NB00T=yes
 #是否开启
 ​
 IPADDR=192.168.125.105
 #ip地址
 NETMASK=255.255.255.0
 #子网掩码,另一种写法:PREFIX=24
 GATEWAY=12.0.0.1
 #网关
 DNS1=8.8.8.8
 #DNS服务器地址

实验一:双网卡 永久配置

第一步:添加网卡

image.png

image.png

第二步:查看网卡信息

image.png

第三步:编辑配置文件

  • 设置ens33配置
 [root@abc ~]#  cd /etc/sysconfig/network-scripts/
 [root@abc network-scripts]# vim ifcfg-ens33
 ​
 BOOTPROTO=static
 NAME=ens33
 DEVICE=ens33
 ONBOOT=yes
 IPADDR=192.168.125.101    #设置一个未被使用的ip地址
 NETMASK=255.255.255.0
 GATEWAY=192.168.125.2
 DNS1=8.8.8.8
 DNS2=114.114.114.114
  • 设置ens36配置
 [root@abc ~]#  cd /etc/sysconfig/network-scripts/
 [root@abc network-scripts]#  cp ifcfg-ens33 ifcfg-ens36   #复制ens33,并命名为ens36
 [root@abc network-scripts]#  vim ifcfg-ens36
 ​
 BOOTPROTO=static
 NAME=ens36
 DEVICE=ens36
 ONBOOT=yes
 IPADDR=192.168.125.101    #设置一个未被使用的ip地址
 NETMASK=255.255.255.0
 GATEWAY=192.168.125.2
 DNS1=8.8.8.8
 DNS2=114.114.114.114

第四步:重启网络 并查看

 [root@abc network-scripts]#  systemctl restart network
 #重启网络
 ​
 [root@abc network-scripts]#  ifconfig ens36  #查看ens36网卡信息

2.12 tcpdump(重点!!!)

抓包工具

 通式:
     tcpdump  option  proto   dir     type
       命令     选项    协议  数据的方向 抓取的数据类型

2.12.1 option选项

选项 含义 -D 显示所有可用的列表 -i interface 指定网卡

2.12.2 proto 协议

  • tcp、udp、icmp
  • ipv4 、ipv6
  • arp协议

2.12.3 dir 方向

  1. src 源地址
  2. dst 目的地址
  3. src and dst:在源地址和目的地址的区间内。

2.12.4 type 类型

  • host 主机
  • net 网段
  • port 端口
  • port range 端口范围
 [root@localhost data]#tcpdump -i ens33
 ​
 输出格式
 11:53:55.288476 IP 192.168.91.1.47496 > localhost.localdomain.ssh: Flags [P.], seq 261:313, ack 1688848, win 4106, length 52
 ​
 #输出格式拆解:
 第一列:时分毫秒 11:53:55.288476
 第二例:网络协议ip
 第三列:发送方IP地址+端口号  ip地址:192.168.91.1     端口号:47496     >表示数据流向
 第四列:主机名协议    主机名:localhost.localdomain     协议:ssh
 第五列: seq号 ack号  win窗口长度  tcp的标志位   #滑动窗口代表AB双方可以协商,比如协商发送数据包的大小

2.12.5 过滤规则

1、基于ip地址/网段过滤

 [root@localhost data]#tcpdump -i ens33  host 192.168.91.101
 #只关心 和 192.168.91.101 有关的流量
 ​
 [root@localhost ~]#tcpdump -i ens33  dst 192.168.91.101
 #抓取主机ens33中,目的地址为192.168.91.101 的流量
 [root@localhost ~]#tcpdump -i ens33  src 192.168.91.101
 #抓取主机ens33中,源地址为192.168.91.101 的流量

2、基于端口过滤

port端口号

 [root@localhost ~]#tcpdump -i ens33 port 80   #抓取端口号为80的流量
 [root@localhost ~]#tcpdump -i ens33 port 80 -n   #抓取端口号为80的流量,并显示端口号。
 ​
 ​
 [root@localhost ~]#tcpdump -i ens33  src port 80 or port 22
 #抓取主机ens33中,源 为80或者22的端口号
 [root@localhost ~]#tcpdump -i ens33  dst port 80 or port 22
 #抓取主机ens33中,目的 为80或者22的端口号

3、基于协议

 [root@localhost ~]#tcpdump -i ens33 icmp
 #抓取主机ens33中的icmp协议包
 [root@localhost ~]#tcpdump -i ens33 tcp
 #抓取主机ens33中的tcp协议包

4、指定输出位置(类似标准输出重定向)

 tcpdump -i ens33 icmp -w /data/test.cap
 #把抓取的数据存放到/data/test.cap文件,可以在抓包软件中进行分析。

示例:

 [root@abc ~]#  tcpdump -i ens36 icmp and src 10.0.0.6 and dst 10.0.0.7   #多个选项之间必须要加and
 #抓取经过ens36网卡的icmp协议包中,地址为10.0.0.6到10.0.0.7之间的流量

2.13 bond 多网卡绑定

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。

bond功能强大,共有七种模式,分别是0-6。其中常用的是0 1 3 6

  • 0是轮询模式,流量平分;

  • 1是主-备份模式

实验二:bond实验

第一步:添加网卡

将ens33和ens36 两个网卡,绑定到bond0上。

第二步:编辑配置文件

  • 设置bond0
 [root@abc ~]#  vim /etc/sysconfig/network-scripts/ifcfg-bond0
 ​
 NAME=bond0  #描述
 TYPE=bond   #类型是bond
 DEVICE=bond0  #网卡名称bond0
 BOOTPROTO=none  #静态
 IPADDR=192.168.125.102  #ip地址
 PREFIX=8    #子网掩码,等于netmask
 GATEWAY=192.168.125.2
 DNS1=8.8.8.8
 BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"   #每100毫秒检测一次主设备是否活着,fail_over_mac=1是永远使用活着网卡的mac地址。
  • 设置ens33
 [root@abc ~]#  vim /etc/sysconfig/network-scripts/ifcfg-ens33
 ​
 [root@abc network-scripts]#  vim ifcfg-ens33
 BOOTPROTO=static
 NAME=ens33
 DEVICE=ens33
 MASTER=bond0
 SLAVE=yes
 ONBOOT=yes
  • 设置ens36
 [root@abc network-scripts]#  cp /ifcfg-ens33 /ifcfg-ens36
  #复制33,改名为36
 ​
 [root@abc network-scripts]#  vim ifcfg-ens36  #修改36里的信息
 BOOTPROTO=static
 NAME=ens36
 DEVICE=ens36
 MASTER=bond0
 SLAVE=yes
 ONBOOT=yes

第三步:重启网络

systemctl restart network

查看bond0状态:

 cat  /proc/net/bonding/bond0

删除bond0:

 ifconfig bond0 down
 rmmod bonding

3、总结:网络相关的文件

文件类型 文件位置 文件作用 网卡文件 /etc/sysconfig/network-scripts/ifcfg-* 修改ip地址 dns 网关 获取方式等设置 主机名 /etc/hostname 永久修改主机名 注意只有第一行生效 dns文件 /etc/resolv.conf 记录了dns服务的地址 路由 /etc/sysconfig/network-scripts/route-ens33 永久记录路由 挂载 /etc/fstab 用户 /etc/passwd 密码 /etc/shadow