目录
频道首页
📚 linux网络
收藏
0
xy20118 最近修改于 2024-04-30 15:15:22

前言

image

将Linux主机接入到网络,需要配置网络相关设置 一般包括如下内容:

  • 主机名
  • IP/netmask
  • 路由:默认网关
  • DNS服务器 主DNS服务器 次DNS服务器 第三个DNS服务器
  • centos网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-*

网络配置命令

ifconfig

来自于net-tools包 此软件的详细可以使用rpm -qi 查看

[root@xyy ~]# rpm -qi net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.22.20131004git.el7
Architecture: x86_64
Install Date: 20202月28日 星期五4时14分40秒
Group       : System Environment/Base
Size        : 938986
License     : GPLv2+
Signature   : RSA/SHA256, 2017年08月11日 星期五 02时30分02秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : net-tools-2.0-0.22.20131004git.el7.src.rpm
Build Date  : 2017年08月03日 星期四 17时17分34秒
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://sourceforge.net/projects/net-tools/
Summary     : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.

!!#ffff00 ifconfig!! 显示当前系统中活跃的网卡

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  #up表示开区状态 
        inet 192.168.64.16  netmask 255.255.255.0  broadcast 192.168.64.255
        inet6 fe80::20c:29ff:fe6c:b61a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6c:b6:1a  txqueuelen 1000  (Ethernet)
        RX packets 6104  bytes 395419 (386.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1364  bytes 102999 (100.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

!!#ffff00 ifconfig -a!! 显示所有的网卡信息 image#264px #197px

!!#ffff00 ifconfig!! +网卡名称

[root@xyy1 ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.64.16  netmask 255.255.255.0  broadcast 192.168.64.255
        inet6 fe80::20c:29ff:fe6c:b61a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6c:b6:1a  txqueuelen 1000  (Ethernet)
        RX packets 6343  bytes 411862 (402.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1440  bytes 114011 (111.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

!!#ffff00 ifconfig 网卡 up!! 开启网卡 !!#ffff00 ifconfig 网卡 down!! 关闭网卡

[root@xyy1 ~]# ifconfig ens33 down 

[root@xyy1 ~]# ifconfig -a
ens33: flags=4098<BROADCAST,MULTICAST>  mtu 1500   #已经关闭状态
        inet 192.168.64.16  netmask 255.255.255.0  broadcast 192.168.64.255
        ether 00:0c:29:6c:b6:1a  txqueuelen 1000  (Ethernet)
        RX packets 6539  bytes 424432 (414.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1477  bytes 117457 (114.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
root@xyy1 ~]# ifconfig ens33 up  #开启网卡
[root@xyy1 ~]# ifconfig  #查看启动的网卡
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.64.16  netmask 255.255.255.0  broadcast 192.168.64.255
        inet6 fe80::20c:29ff:fe6c:b61a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6c:b6:1a  txqueuelen 1000  (Ethernet)
        RX packets 6540  bytes 424492 (414.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1502  bytes 121272 (118.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

!!#ffff00 ifconfig 网卡名:0 ip!! 设置临时虚拟网卡

[root@xyy1 ~]# ifconfig ens33:0 192.168.64.20
[root@xyy1 ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.64.16  netmask 255.255.255.0  broadcast 192.168.64.255
        inet6 fe80::20c:29ff:fe6c:b61a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6c:b6:1a  txqueuelen 1000  (Ethernet)
        RX packets 6845  bytes 447826 (437.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1614  bytes 134033 (130.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@xyy1 ~]# ifconfig ens33:0 0 #取消网卡设置 使用down也可以关闭。

image

!!#ffff00 ifconfig 网卡 ip!! 可以临时修改网卡ip 加一块新的网卡在虚拟机 目前还没有ip地址

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::9456:dda7:7d7f:905b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6c:b6:24  txqueuelen 1000  (Ethernet)
        RX packets 6  bytes 360 (360.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 1650 (1.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@xyy1 ~]# ifconfig ens36 192.168.64.20/24 #临时添加IP地址
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.64.20  netmask 255.255.255.0  broadcast 192.168.64.255
        inet6 fe80::20c:29ff:fe6c:b624  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6c:b6:24  txqueuelen 1000  (Ethernet)
        RX packets 81  bytes 4860 (4.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 76  bytes 12834 (12.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

image image

永久修改网卡配置

文件----/etc/sysconfig/network-scripts/ifcfg-ens33 ( 具体可以先到scripts目录查看自己机器对应的网卡名称)

vim /etc/sysconfig/network-scripts/ifcfg-ens36  #修改配置文件 按照格式 
DEVICE=ens36     #自定义名称
NAME=ens36      #网卡名称 一定要对应
BOOTPROTO=static  # 网卡获取地址模式 none dhcp static 
ONBOOT=yes      #开机启动
IPADDR=192.168.64.20  #ip地址 自定义
NETMASK=255.255.255.0  #子网掩码
GATEWAY=192.168.64.4   #网关
DNS1=8.8.8.8     #dns
wq
[root@xyy1 /]# systemctl restart network  #重启网络服务 
#如果重启服务有报错 可以使用systemctl status network.service" and "journalctl -xe 进行查看报错 进行处理
[root@xyy1 /]# ping 192.168.64.4 #ping通即修改配置成功。
PING 192.168.64.4 (192.168.64.4) 56(84) bytes of data.
64 bytes from 192.168.64.4: icmp_seq=1 ttl=128 time=0.560 ms
64 bytes from 192.168.64.4: icmp_seq=2 ttl=128 time=0.264 ms
64 bytes from 192.168.64.4: icmp_seq=3 ttl=128 time=0.156 ms
#可以重启后验证下是否会消失 进行验证是否是永久修改。

hostname

修改主机名 !!#ffff00 hostname!! 单独使用 查看主机名

[root@xyy1 ~]# hostname 
xyy1
[root@localhost ~]# hostname
localhost.localdomain

!!#ffff00 hostname 主机名!! 临时修改主机名 重启会消失

[root@localhost ~]# hostname niubi
[root@localhost ~]# exit
[root@niubi ~]#   #重新登录就会出现修改名称
[root@niubi ~]#   reboot #重启
[root@localhost ~]# 

!!#ffff00 vim /etc/hostname!! 将主机名添加该文件中 但是只有第一行生效

[root@localhost ~]# vim  /etc/hostname

localhost.localdomain  #这个删除 因为只有第一行生效
niubi

!!#ffff00 hostnamectl set-hostname 名字!! 永久修改主机名字

[root@localhost ~]# hostnamectl set-hostname niua

route

查看或设置主机中路由表信息 !!#ffff00 route -n!! 查看路由 可以查看到网关

[root@localhost ~]# route -n 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.64.4    0.0.0.0         UG    100    0        0 ens33
192.168.64.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

!!#ffff00 route del default!! 删除默认路由(正常人不会去操作这个了解即可) !!#ffff00 route add -net 网段 gw 网关!! 添加静态路由

root@localhost ~]#route add -net 192.168.64.0/24 gw 192.168.64.4
#给192.168.64.0/24段添加静态路由

!!#ffff00 route del -net 网段!! 删除路由

[root@localhost ~]#route del -net 192.168.64.0/24  #删除路由

永久添加路由 vim /etc/sysconfig/network-scripts/route-ens33 (ens33是对应网卡)

ss( socket statistics)

查看网络连接情况,主要用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。 和netstat相比,优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且更快速更高效 常用选项

  • t: tcp协议相关
  • u: udp协议相关
  • w: 裸套接字相关
  • x:unix sock相关
  • l: listen状态的连接
  • a: 所有
  • n: 数字格式
  • p: 相关的程序及PID
  • e: 扩展的信息
  • m:内存用量
  • o:计时器信息
  • r: --resolve 把 IP 解释为域名,把端口号解释为协议名称。 dns 服务 尝尝组合使用 !!#ffff00 ss -natp!! 查看tcp !!#ffff00 ss -naup!! 查看udp相关

scp

远程同步

[root@xyy1opt]#scp /opt/passwd  xyy@192.168.64.16:/opt/passwd

ethtool

查看对应网卡信息 !!#ffff00 ethtool -i 网卡!! 查看对应网卡信息

[root@xyy1 ~]# ethtool -i ens36 
driver: e1000
version: 7.3.21-k8-NAPI
firmware-version: 
expansion-rom-version: 
bus-info: 0000:02:04.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

tcpdump

抓包工具 首先了解下tcp建立连接和断开连接的过程 通常所说的三次握手 四次挥手。 image#472px #371px 状态详解:

CLOSED: 初始状态。

(三次握手)

LISTEN: 表示服务器端的某个socket处于监听状态,可以接受连接。

SYN_SENT: 这个状态与SYN_RCVD相呼应,当客户端socket执行连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的报文。SYN_SENT状态表示客户端已发送SYN报文。

SYN_RCVD: 这个状态表示服务端接收到了SYN报文,在正常情况下,这个状态是服务器端的socket在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本 上用netstat  ss 你是很难看到这种状态的,将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态 时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。

ESTABLISHED: 表示连接建立成功。

(send data  ......)

(四次挥手)

FIN_WAIT_1: 本质上FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。

CLOSE_WAIT: 这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个socket后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情,是查看你是否还有数据发送给对方,如果没有的话,可以直接 close这个socket,发送FIN报文给对方,即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。

FIN_WAIT_2: 实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方(比如client)要求close连接,但我(server)告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接。

TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文。如果FIN_WAIT_1状态下,收到了对方同时带 FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。 

LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,即可关闭连接。

tcpdump命令格式以及常用命令

tcpdump option proto dir type 选项 协议 数据的方向 抓取的数据类型 proto(协议):

  1. tcp udp icmp
  2. ip ipv6
  3. arp

dir(方向):

  1. src
  2. dst
  3. src and dst

type(类型)

  1. host 主机
  2. net 网段
  3. port 端口
  4. port range 端口范围
-a  将网络地址和广播地址转变成名字
-d  将匹配信息包的代码以人们能够理解的汇编格式给出
-dd  将匹配信息包的代码以c语言程序段的格式给出
-ddd 将匹配信息包的代码以十进制的形式给出
-D   显示所有可用网络接口的列表
-e  在输出行打印出数据链路层的头部信息
-f  将外部的Internet地址以数字的形式打印出来
-l  使标准输出变为缓冲行形式
-L   列出指定网络接口所支持的数据链路层的类型后退出
-n  不把网络地址转换成名字,即不做反向域名解析
-q   简洁地打印输出。即打印很少的协议相关信息, 从而输出行都比较简短
-t   在每行的输出中不输出时间
-tt  在每行的输出中会输出时间戳
-ttt 输出每两行打印的时间间隔(以毫秒为单位)
-tttt 在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)

-v   产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。
-vv  产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码。
-vvv 产生比-vv更详细的输出。比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来
-c  在收到指定的包的数目后,tcpdump就会停止
-F  从指定的文件中读取表达式,忽略其它的表达式
-i  指定监听的网络接口
-r  从指定的文件中读取包(这些包一般通过-w选项产生)
-w  直接将数据报写入文件中,并不分析和打印出来
-T  将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单 网络管理协议)
-s   tcpdump 默认只会截取前 `96` 字节的内容,要想截取所有的报文内容,可以使用 `-s number`, `number` 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。
-S  seq ack 使用绝对序列号,而不是相对序列号
-Z  后接用户名,在抓包时会受到权限的限制。如果以root用户启动tcpdump,tcpdump将会有超级用户权限

常用命令

tcpdump -i eth0   #捕获指定接口(网卡)的数据包 可通过 netstat -i查看网卡设备
tcpdump -i eth0 -c 3   #捕获指定个数的数据包(3个数据包)
tcpdump -A -i eth0    #用ASCII码格式输出捕获的数据包
tcpdump -D    #显示可用的系统接口
tcpdump -XX -i eth0   #用十六进制和ASCII码格式显示捕获的数据包
tcpdump -w tempDump.pcap -i eth0   #把捕获的数据包写入到一个.pcap后缀的文件中
tcpdump -r tempDump.pcap    #读取捕获数据包文件的内容
tcpdump -n -i eth0    # 单个 n 表示不解析域名,直接显示 IP
tcpdump -i eth0 tcp    #捕获TCP类型的数据包
tcpdump -i eth0 port 22   #捕获指定端口(这里是22)的数据包
tcpdump -i eth0 src 源ip地址   #捕获请求源是 192.169.12.101 的数据包
tcpdump -i eth0 dst 目标ip地址   #捕获指定目的IP的数据包
tcpdump -i eth6 dst host 目标ip地址 and port 8800 -w data.pcap  #抓取指定网卡,指定IP和端口的数据包 并写入到data.pcap文件中
tcpdump host 192.168.12.101 and 192.168.1.201 -w out &  #后台抓取两主机之间的数据
tcpdump -nn 单个 n 表示不解析域名,直接显示 IP;两个 n 表示不解析域名和端口。这样不仅方便查看 IP 和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度 

bond

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡 常用模式是0 1 3 6 mod=0 轮询模式 mod=1 主 -备份策略 mod=3 广播策略 mod=6 适配器适应性负载均衡

创建bonding设备的配置文件 详解: 1.手动添加一个网卡 使用ifconfig 查看网卡名称 信息

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::4b08:ea80:dfd3:4fd2  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:7c:5b:ed  txqueuelen 1000  (Ethernet)
        RX packets 6  bytes 360 (360.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 1650 (1.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2.创建配置文件ifcfg-bond0

code...

dhcp

DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。 功能:

  1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  2. DHCP应当可以给用户分配永久固定的IP地址。
  3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
  4. DHCP服务器应当向现有的BOOTP客户端提供服务。

DHCP有三种机制分配IP地址: 1.自动分配方式(Automatic Allocation) DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。 2.动态分配方式(Dynamic Allocation) DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。 3.手工分配方式(Manual Allocation) 客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

工作原理:discover -offer -request -ack

DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要手动安装并进行必要的配置。 1.需要先关闭防火墙后进行安装yum install dhcp -y

[root@localhost ~]# systemctl stop firewalld.service   #关闭防火墙
[root@localhost ~]# setenforce 0 #临时关闭selinux 
[root@xyy1 ~]# yum install dhcp -y  #安装软件dhcp 
[root@xyy1~]# rpm -qc dhcp #查看软件dhcp配置文件
/etc/dhcp/dhcpd.conf #配置文件
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
[root@localhost /]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example #提示去此路径下面查看配置文件
#   see dhcpd.conf(5) man page
[root@xyy1 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf 
#将对应的配置文本复制到配置文件下 
[root@xyy1 ~]# vim  /etc/dhcp/dhcpd.conf #编辑配置文件
#主要修改subnet这个局部配置
# This is a very basic subnet declaration.

subnet 10.254.239.0 netmask 255.255.255.224 {
  range 10.254.239.10 10.254.239.20;
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}

image 2.添加网段 子网掩码 地址池 DNS 这些基本配置 image 3.开启dhcp服务 systemctl start dhcpd

[root@xyy1 ~]# systemctl start dhcpd 

4、systemctl status dhcpd 查看服务进程 image 5.切换到虚拟机内部 修改网卡配置文件为dhcp获取 重启网络服务 systemctl restart network 后 ifconfig 查看网卡配置是否是地址池范围内的就可以。

内容大纲
批注笔记
📚 linux网络
ArticleBot
z
z
z
z
主页
会议室
Git管理
文章
云文档
看板