linux网络服务之【网络设置】

1,614 阅读11分钟

1、linux网络设置

网络是运维的基础。

1.1 网络设置包括四部分:

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

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

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

小拓展: 以前网卡的命名设置为 eth0、eth1等,eth0为第一块网卡,eth1为第二块网卡,如果把0拔掉,那么1就会变成0,这样就会容易造成混乱。为了解决这个问题,后来的网卡命名 都是按照接口进行设置,比如ens33,其中en是网卡,s是接口,33是接口的名字。

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 -aall 显示所有网卡,包括未开启的网卡
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
  1. 使用命令修改:

    hostnamectl set-hostname + 新主机名

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

2.5 ss和netstat

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

1、ss(socket statistics)

选项含义
-ttcp协议相关 ,只显示tcp
-uudp协议相关,只显示udp
-w套接字相关
-xunix sock相关
-llisten状态的连接
-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:内核态、速度快,推荐使用ss
  • netstat:用户态、速度慢

2.6 ping

测试网络连通性。

选项含义
-w超时时间
-ccount ,指定发送报文的次数
-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  lisi@192.168.91.101:/opt/passwd
               命令字 本地文件地址  对方用户名@地址冒号对面地址
 [root@kgc opt]#scp root@192.168.91.101:/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

第三步:编辑配置文件

 [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显示所有可用的列表
-iinterface 指定网卡

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 类型

  1. host 主机
  2. net 网段
  3. port 端口
  4. 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#输出格式拆解:1列:时分毫秒 11:53:55.2884762例:网络协议ip
 第3列:发送方IP地址+端口号  ip地址:192.168.91.1     端口号:47496     >表示数据流向
 第4列:主机名协议    主机名:localhost.localdomain     协议:ssh
 第5列: 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实验

  1. 添加网卡

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

  1. 编辑配置文件
  • 设置bond0
 [root@abc ~]#  vim /etc/sysconfig/network-scripts/ifcfg-bond0
 ​
 NAME=bond0  #描述
 TYPE=bond   #类型是bond
 DEVICE=bond0  #网卡名称bond0
 BOOTPROTO=none  #静态
 IPADDR=192.168.125.100  #ip地址,必须与主机同一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
 ​
 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
  1. 重启网络

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