您当前的位置: 首页 >  编程语言

Linux网络命令

一、网络配置命令 1.1ifconfig查看当前活着的网络接口信息
[root@localhost ~]#ifconfig -a    #表示显示所有网卡包括没有启动的网卡
[root@localhost ~]#ifconfig ens33 down    #关闭网卡
[root@localhost ~]#ifconfig ens33 up        #开启网卡
[root@localhost ~]#ifconfig ens36:0 192.168.10.200    #设置临时虚拟网卡
[root@localhost ~]#ifconfig -s            #网络通讯情况

补充1:nmcli(绿色代表正在用的)

补充2:ip address修改IP地址

[root@feizirui ~]#ip address add 192.168.10.100/24 dev ens33
[root@feizirui ~]#ip address del 192.168.10.10/24 dev ens33

1.2hostname查看或设置主机名

查看主机名:[root@localhost ~]#hostnamelocalhost.localdomain

通过hostnamectl来修改主机名:[root@localhost ~]#hostnamectl set-hostname feizirui[root@localhost ~]#bash[root@feizirui ~]#

1.3route查看或设置主机中的路由表

[root@localhost ~]#route

[root@localhost ~]#route -n

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

1.5ss查看网络连续情况 ss命令主要用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。但ss命令的优势在于它能够显示更多更详细的有关TCP和UDP连接状态的信息,而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/,执行速度都会很慢。ss命令快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss命令的快捷高效。 ss命令是Linux CentOS 7中iproute软件包的一部分,默认已经安装。
ss [选项] 
-t:tcp协议相关
-u:udp协议相关
-w:裸套接字相关
-x:unix sock相关
-l:listen状态的连接
-a:所有
-n:数字格式
-p:相关的程序及PID
-e:扩展的信息
-m:内存用量
-o:计时器信息
-r:把IP解释为域名,把端口号解释为协议名称

1.6ping测试网络连通性(使用ICMP协议)
ping [选项] 目标主机

1.7traceroute路由追踪
traceroute IP地址

1.8nslookup域名解析
nslookup 域名

补充:dig可以显示出更多详细信息

1.9永久配置网络相关配置文件

(1)配置网卡

[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 

BOOTPROTO=static    ##获取地址静态方式
ONBOOT=yes        ##开机自启
IPADDR=192.168.10.10    ##IP地址
NETMASK=255.255.255.0    ##子网掩码
GATEWAY=192.168.10.2    ##网关
DNS1=8.8.8.8        ##DNS1:谷歌的
DNS2=114.114.114.114    ##DNS2:三大运营商

[root@localhost ~]#systemctl restart network    ##重启网卡
[root@localhost ~]#ping www.baidu.com -c4

 (2)红帽修改网卡命令:

1 [root@localhost ~]#nmcli con mod ens33 ipv4.addresses 192.168.10.100/24 ipv4.gateway 192.168.10.2 ipv4.dns 8.8.8.8 ipv4.method manual connection.autoconnect yes
2 [root@localhost ~]#nmcli con reload    ##重新加载
3 [root@localhost ~]#nmcli con up ens33   ##开启网卡

(3)域名解析配置文件:/etc/hosts

hosts文件和DNS服务器的比较

默认情况下,系统首先从hosts文件查找解析记录 hosts文件只对当前的主机有效 hosts文件可减少DNS查询过程,从而加快访问速度 1.10scp远程同步
[root@localhost ~]#scp /etc/passwd root@192.168.10.20:/opt/passwd

1.11多网卡绑定

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。

实验环境:CentOS7
实验目的:bond将多块网卡根据排列组合的功能的不同当成一块网卡使用
1、添加一块网卡
2、修改配置文件
cd /etc/sysconfig/network-scripts/
配置1:
vim ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.10.100
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"

配置2:
vim ifcfg-ens33
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
MASTER=bond0
SLAVE=yes
ONBOOT=yes

配置3:
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
BOOTPROTO=none
NAME=ens36
DEVICE=ens36
MASTER=bond0
SLAVE=yes
ONBOOT=yes

3、重启服务:systemctl restart network

4、测试:先ping查看bond0的正常情况:ping 192.168.10.100 -c4     然后去虚拟机断掉一块网卡不影响bond0
      最后重新开启一个端口验证:ssh 192.168.10.100

操作:

1、添加网卡

2、修改配置文件

配置1:创建并修改bond0虚拟网卡

配置2:修改ens33网卡

 配置3:创建并修改ens36网卡

3、重启网卡

4、测试先ping,bond0查看的正常情况:ping 192.168.10.100 -c4

然后去虚拟机断掉一块网卡不影响bond0

最后重新开启一个端口验证:ssh 192.168.10.100

1.12tcpdump

网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句帮助去除无用的信息。

参数说明:
-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<数据包文件>:把数据包数据写入指定的文件。
 1 案例:
 2 [root@server ~]#tcpdump -D        #tcpdump查看网卡:不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。
 3 [root@server ~]#tcpdump -i ens33    #指定查看ens33 网卡
 4 [root@server ~]#tcpdump host 192.168.10.10 -i ens33    #监听特定主机,监听主机192.168.10.10的通信包,注意:出、入的包都会被监听。
 5 [root@server ~]#tcpdump src host 主机地址    #特定来源
 6 [root@server ~]#tcpdump dst host 主机地址    #特定目标地址
 7 [root@server ~]#tcpdump host hostname    #如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
 8 [root@server ~]#tcpdump -i ens33 -nn icmp and src host 192.168.10.20 and dst host 192.168.10.10    #面试题
 9 [root@server ~]#tcpdump ip host 192.168.10.10 and 192.168.10.20 -i ens33    #只抓取特定主机之间的数据包
10 [root@server ~]#tcpdump port 80
11 [root@server ~]#tcpdump tcp port 22 and src host 192.168.10.10 -i ens33