linux网络命令和DHCP

310 阅读10分钟

一、linux网络命令

1. ifconfig 查看网络接口信息

ifconfig命令来自于net-tools包

命令1.png

常用格式:

  • ifconfig:显示当前主机中已启用(活动)的网络接口信息。
  • ifconfig -a:显示所有网络接口(包括没有启动的网卡)
  • ifconfig 具体网卡名称:只显示具体网卡的详细信息(无论是否启用)
  • ifconfig -s:查看通讯情况

ifconfig三种修改类命令

1.1 临时修改网卡名称(重启后失效)

ifconfig 网卡名 ip地址/子网掩码

例子

1.2 开启和关闭网卡

ifconfig up 开启

ifconfig down 关闭

1.3 设置虚拟网卡

设置虚拟网卡:

ifconfig 网卡名(虚拟):数字 IP地址/子网掩码

取消虚拟网卡:

ifconfig 网卡名(虚拟):数字 down

2.ip

2.1 ip link

ip link命令用于显示和管理Linux系统中的网络接口信息。它提供了比较简洁的输出,包括接口名称、状态、MAC地址等。

命令2.png

部分释义:

  1. name:这是接口的名称,例如eth0、wlan0等。
  2. mtu:这是接口的最大传输单元(Maximum Transmission Unit),表示一次传输的数据包的最大尺寸。
  3. qdisc:这是用于流量调度的队列算法。常见的值有pfifo、htb等。
  4. state:这是接口的状态。常见的值有UP(接口已启用)、DOWN(接口已禁用)等。
  5. link/ether:这是网卡的物理地址(MAC地址),格式为XX:XX:XX:XX:XX:XX。

2.2 ip addr

ip addr命令在Linux系统中用于显示网络接口的配置信息

命令3.png

2.3 ip route

ip route命令在linux系统中用于显示路由表信息

命令4.png

3.hostname 查看或设置当前主机名

命令格式:hostname 主机名

这是临时修改主机名(需要登出或su),重启后失效,如果想要永久修改主机名称(即在修改后重启依旧生效) 有两个办法,但其实是同一个方式,就是修改配置文件

  1. 编辑配置文件/etc/hostname(该文件只对第一行生效)
  1. :使用命令hostnamectl set-hostname 新主机名 (该命令实际还是修改了配置文件)

4.route 查看或设置主机中路由表信息

格式:route

选项:

只有一个选项 -n 将路标记录中的地址信息显示为数字形式

区别在于默认路由,只隐藏默认路由

  • -n:将路由记录中的地址信息显示为数字形式

常用命令

  • 添加 指定网段的路由记录

route add -net  网段地址 gw IP地址

  • 删除指定网段的路由记录

route del -net 网段地址

  • 向路由表中添加默认网关记录

route add default gw IP地址

  • 删除路由表中默认的网关记录

route del default gw  IP地址

PS:注意route并不会开启路由转发功能,需要去/etc/sysctl.conf中添加一条 net.ipv4.ip_forward = 1 命令,之后使用sysctl -p 读取配置信息,开启IP路由转发。

5. ss(socket statistics)与netstat查看主机的连接状态

ss = netstat

但ss是内核中的功能,netstat速度比ss要慢,

主要查看三次握手的状态等

两者选项差不多

-n:显示协议的端口号,如果不加会显示格式的名称

-a:所有

-t:tcp相关协议

-p:相关的程序以及PID

-u:udp相关协议

可以在家目录~proc文件中查看

常用命令:

ss -ntap |grep 端口号 :查看TCP协议下的xx端口号是否开启

6.ping 检测网络联通性

在linux中默认长ping,Ctrl+C停止(使用icmp协议)

选项:

-c:指定ping几个包

-W:指定超时等待时间(默认单位秒)超时之后再等待

-w:如果ping不通,在指定时间后返回(默认时间秒)超时秒返回

7. traceroute 跟踪数据包

测试从当前主机到目的地址经过多少个地址

使用是icmp协议

格式:traceroute IP地址

8.nslookup 与 dig域名解析

两者都是将域名解析成ip地址,dig显示的信息会比nslookup更详细一些。

为什么要用域名

由于用户访问服务器是通过ip地址访问,但是ip地址繁多,难以记忆且所有网络环境中,最终使用地址都是ip地址,但考虑到IP地址过于难记,通常使用IP地址的 域名(通过域名服务器例如8.8.8.8)

域名服务器:

举例:

当某一用户访问百度的时候,会先去访问域名服务器,然后域名服务器会返回一个相对应的ip地址供用户访问

www.baidu.com 180.101.50.188

nslookup www.baidu.com 该命令可以查看使用的dns服务器地址

dns 地址解析成 ip地址

s1.png

nslookup

格式:nslook 域名

dig

格式:dig 域名

9.域名解析配置文件和本地主机映射文件

域名解析配置文件

/etc/resolv.conf文件,保存本机需要使用的DNS服务器的IP地址。

本地主机映射文件

/etc/hosts 文件,保存主机名与IP地址的映射记录

hosts文件和DNS服务器的比较

  • 默认情况下,系统首先从 hosts 文件查找解析记录
  • hosts 文件只对当前的主机有效
  • hosts 文件可减少 DNS 查询过程,从而加快访问速度

10.scp 远程同步

[root@yyds ~]#scp /opt/aaa zhangsan@192.168.1.10:/opt/
             命令   本地文件   对方用户   对方地址     对方路径
             #需注意使用此命令要输入对方用户的密码

11.ssh与telnet 远程连接协议

这两者都是远程连接的协议,可以测试网络的联通性(端口是否打开)

ssh是远程连接协议,是密文的(只能测试22端口)

telnet也是一个远程连接协议,是明文的(能测试任何端口)该命令在linux中需要安装,windows中需要去管理中开启

12.ethtool 查看网卡信息

格式:ethtool 选项 网卡

选项:

  • -i:显示网卡信息
  • -p:使网卡快速闪烁(实际出现问题时快速找到对应网卡)

13.tcpdump 抓包工具

格式:

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

一般抓取的数据非常多,为了方便观察,会配合grep过滤来查看

数据类型 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 端口范围

以上的协议,方向与类型,都可以直接作为选项跟在tcpdump命令后,抓取对应的包

部分选项示例:

tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<
数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
参数说明:
-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络接口> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。

直接使用tcpdump -i 网卡抓包

[root@yyds ~]#tcpdump -i ens33
17:30:20.385675 IP www.yyds.com.ssh > 192.168.82.1.64166: Flags [P.], seq 762912:763068, ack 73, win 261, length 156
17:30:20.387419 IP www.yyds.com.ssh > 192.168.82.1.64166: Flags [P.], seq 763068:763328, ack 73, win 261, length 260
17:30:20.389558 IP 192.168.82.1.64166 > www.yyds.com.ssh: Flags [.], ack 763328, win 4100, length 0
17:30:20.389570 IP www.yyds.com.ssh > 192.168.82.1.64166: Flags [P.], seq 763328:763484, ack 73, win 261, length 156
17:30:20.392538 IP www.yyds.com.ssh > 192.168.82.1.64166: Flags [P.], seq 763484:763744, ack 73, win 261, length 260
17:30:20.394338 IP 192.168.82.1.64166 > www.yyds.com.ssh: Flags [.], ack 763744, win 4098, length 0
17:30:20.394366 IP www.yyds.com.ssh > 192.168.82.1.64166: Flags [P.], seq 763744:763900, ack 73, win 261, length 156
17:30:20.397402 IP www.yyds.com.ssh > 192.168.82.1.64166: Flags [P.], seq 763900:764160, ack 73, win 261, length 260
...........
第一列:时分毫秒 11:53:55.288476

第二例:网络协议ip

第三列:发送方IP地址+端口号  ip地址:192.168.91.1     端口号:47496     >表示数据流向

第四列:主机名协议    主机名:localhost.localdomain     协议:ssh

第五列: seq号 ack号 win窗口长度   tcp的标志位

基于ip地址/网段过滤 host选项

tcpdump -i ens33 host ip地址只关注与

二、DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),用于自动获取IP地址(但需要先手动分配地址池)

1.DHCP的一次完整的过程(四步)

1.当客户机加入到局域网中,没有地址时,会发送一个DHCP discover报文,寻找DHCP服务器(广播)

2.收到报文的DHCP服务器会回复一个DHCP offer报文,并将配置信息(IP、子网、网关、dns等)放在DHCP offer报文(客户端只会接收第一个的回复的DHCP服务器的报文)

3.客户机收到DHCP offer报文后,会将地址等配置信息配置好,会回复一个DHCP request报文

4.服务器收到DHCP requesst 报文后,会发送一个DHCP ack报文再次确认

2.DHCP服务器演练

2.1 将本机作为DHCP服务器分配地址给另一台机器,使其正常联网

2.png

3.png

4.png

5.png

6.png

7.png

8.png

9.png

10.png

PS:windows系统中需要使用的命令:

  • ipconfig:查看网卡信
  • ipcongfig /release :释放地址
  • ipcongfig /renew:重新获取地址
  • ipconfig /all:显示全部信息

2.2 时间同步

有时因为主机的时间不与互联网的同步可能导致网页打不开

所以要做时间同步

需要使用chrony服务(systemctl start chronyd),该服务需要安装

安装命令:yum install chrony.x86_64 -y

只要一台主机可以连接外网,其他主机就通过与这台主机同步时间

时间同步服务器,与阿里云同步
[root@localhost ~]#vim /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
//以上三行为添加的内容,向阿里云服务器同步
​
​
# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 192.168.1.0/24
//添加允许同步的网段
[root@localhost ~]#systemctl restart chronyd
//重启
​
客户机
[root@localhost ~]#vim /etc/chrony.conf   //修改配置文件
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 192.168.1.13 iburst   //向服务器同步
​
[root@yyds ~]#systemctl restart chronyd
//重启
[root@yyds ~]#ntpdate 192.168.1.13
 2 Aug 19:00:43 ntpdate[9981]: adjust time server 192.168.1.13 offset -0.000010 sec
//手动同步