一、linux网络命令
1. ifconfig 查看网络接口信息
ifconfig命令来自于net-tools包
常用格式:
- 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地址等。
部分释义:
- name:这是接口的名称,例如eth0、wlan0等。
- mtu:这是接口的最大传输单元(Maximum Transmission Unit),表示一次传输的数据包的最大尺寸。
- qdisc:这是用于流量调度的队列算法。常见的值有pfifo、htb等。
- state:这是接口的状态。常见的值有UP(接口已启用)、DOWN(接口已禁用)等。
- link/ether:这是网卡的物理地址(MAC地址),格式为XX:XX:XX:XX:XX:XX。
2.2 ip addr
ip addr命令在Linux系统中用于显示网络接口的配置信息
2.3 ip route
ip route命令在linux系统中用于显示路由表信息
3.hostname 查看或设置当前主机名
命令格式:hostname 主机名
这是临时修改主机名(需要登出或su),重启后失效,如果想要永久修改主机名称(即在修改后重启依旧生效) 有两个办法,但其实是同一个方式,就是修改配置文件。
- 编辑配置文件
/etc/hostname(该文件只对第一行生效)
- :使用命令
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地址
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(协议):**
- tcp udp icmp
- ip ipv6
- arp
dir(方向):
- src
- dst
- src and dst
type(类型)
- host 主机
- net 网段
- port 端口
- 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服务器分配地址给另一台机器,使其正常联网
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
//手动同步