目录
一、配置命令
1. ifconfig
1.1 概述信息解析
1.2 常用格式
2. ip
2.1 ip link 数据链路层
2.2 ip addr 网络层
2.3 路由
3. hostname
3.1 临时修改主机名
3.2 永久修改主机名
4. route
5. netstat
6. ss
7. ping
8. traceroute
9. nslookup
10. 永久修改网络相关配置
11. 双网卡配置
12. bond 网卡绑定
12.1 概述
12.2 案例环境:mod=1,主备模式:可以解决单点故障
12.2.1 创建bonding设备的配置文件
12.2.2 修改从设备配置文件
12.2.3 查看目前bonding的状态
12.2.4 断开网络适配器1连接,重新查看bonding的状态
12.2.5 重新开启网络适配器1,查看bonding的状态
12.2.6 删除bond0
二、tcpdump 抓包工具
1. 概述
2. 参数说明
3. 示例
4. 抓包文件导出
查看网卡配置详情信息,在不带任何选项和参数执行ifconfig命令时,将显示当前主机中已启用(活动)的网络接口信息。
[root@localhost ~]# ifconfig
#“ens33”中的“en”是“EtherNet”的缩写,表示网卡以太网(局域网中的一种) 互联网类型为以太网,“s”表示热插拔插槽上的设备(hot-plug Slot),数字“33”表示插槽编号
ens33: flags=4163 mtu 1500
该接口已启用,支持广播、正在运行 支持组播 最大传输单元1500字节
inet 192.168.190.100 netmask 255.255.255.0 broadcast 192.168.190.255
IP地址 子网掩码 广播地址
inet6 fe80::e743:cb44:9825:6230 prefixlen 64 scopeid 0x20
IPV6地址 子网长度 作用域 link表示仅该接口有效
ether 00:0c:29:e1:cb:86 txqueuelen 1000 (Ethernet)
mac地址 传输队列长度(传输缓存大小) 接口类型
RX packets 963 bytes 73900 (72.1 KiB)
接收 报文个数 总和字节数
RX errors 0 dropped 0 overruns 0 frame 0
接收 错误 丢弃 溢出 冲突帧数
TX packets 334 bytes 37113 (36.2 KiB)
发送 报文个数 总字节数
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
错误 丢失 溢出 载荷数 冲突数
lo: flags=73 mtu 65536
回环测试、本地主机名解析和网络服务的访问权限控制等功能
virbr0: flags=4099 mtu 1500
虚拟的网络连接端口
[root@localhost ~]# ifconfig ens33 down 或者 ip link set ens33 down
#关闭网卡
[root@localhost ~]# ifconfig ens33 up 或者 ip link set ens33 up
#开启网卡
[root@localhost ~]# ifconfig ens33:0 192.168.190.200 | ifconfig ens33:0
#设置临时虚拟网卡
ens33:0: flags=4163 mtu 1500
inet 192.168.190.200 netmask 255.255.255.0 broadcast 192.168.190.255
ether 00:0c:29:e1:cb:86 txqueuelen 1000 (Ethernet)
[root@localhost ~]#ifconfig ens33:0 down
#关闭虚拟网卡
[root@localhost ~]# ifconfig -a
#查看所有网卡包括未开启的
[root@localhost ~]# ifconfig -s
#查看络通讯情况,跟ifconfig显示信息相似,一个横着一个竖着
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 1844 0 0 0 615 0 0 0 BMRU
ens33:0 1500 - no statistics available - BMRU
lo 65536 80 0 0 0 80 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
[root@localhost ~]# ip link
#可以看到网卡状态
相关功能(临时):
[root@localhost ~]# ip addr
#可以写成ip a,更高端的查看网卡信息
[root@localhost ~]# ip address add 172.19.8.211/16 dev ens33
#添加新的虚拟ip地址
[root@localhost ~]# ip address add 10.0.0.88/24 dev ens33 #临时添加IP
[root@localhost ~]# ip address del 10.0.0.8/24 dev ens33
[root@localhost ~]# ip route
#查找默认网关ip地址
default via 192.168.190.2 dev ens33 proto static metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
192.168.190.0/24 dev ens33 proto kernel scope link src 192.168.190.100 metric 100
查看或设置当前主机名
hostname [主机名],临时修改。
通过修改/etc/hostname文件来修改主机名
[root@localhost ~]# vim /etc/hostname
localhost.localdomain #修改第一行有效
~
通过hostnamectl来修改主机名
[root@localhost ~]# hostnamectl set-hostname newname
查看或设置主机中路由表信息
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.190.2 0.0.0.0 UG 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.190.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
#将路由记录中的地址信息显示为数字形式
路由表主要构成:
相关功能:
route -n:显示路由表,-n以数字形式显示路由表
route add -net 10.0.0.0/8 gw 192.168.190.2:添加一条去往10.0.0.0段的路由,通过网关192.168.190.2 转发
route del -net 10.0.0.0/8 gw 192.168.190.2:删除去往10.0.0.0段的路由
route add -net 0.0.0.0(default) gw 192.168.190.2:添加默认路由
route del -net 0.0.0.0(default) gw 192.168.190.2:删除默认路由
临时添加路由示例:
[root@localhost ~]# route add -net 10.0.0.0/8 gw 192.168.190.2
#临时添加一条去往10.0.0.0网段的路由器,通过192.168.190.2转发
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.190.2 0.0.0.0 UG 100 0 0 ens33
0.0.0.0 192.168.190.2 0.0.0.0 UG 101 0 0 ens36
10.0.0.0 192.168.190.2 255.0.0.0 UG 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.190.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.190.0 0.0.0.0 255.255.255.0 U 101 0 0 ens36
永久添加路由:
[root@localhost ~]# vim /etc/sysconfig/network-scripts/route-ens33
10.0.0.0/24 via 192.168.190.100
[root@localhost ~]# systemctl restart network
查看网络连接情况
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -ntap | grep 80
tcp 0 0 192.168.190.100:34062 39.155.141.16:80 TIME_WAIT -
tcp 1 1 192.168.190.100:52916 35.180.43.213:80 LAST_ACK -
tcp 0 0 192.168.190.100:34066 39.155.141.16:80 TIME_WAIT -
tcp 0 0 192.168.190.100:34844 202.38.97.230:80 TIME_WAIT -
tcp 0 0 192.168.190.100:22 192.168.190.1:8071 ESTABLISHED 3557/sshd: root@pts
tcp6 0 0 :::80 :::* LISTEN 38702/httpd
也可以查看网络连接情况,主要用于获取socket统计信息,它可以显示和netstat命令类似的输出内容。但ss的优势(更靠近内核)在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
选项:
[root@localhost ~]# ss -natp | grep 80
LISTEN 0 128 :::80 :::* users:(("httpd",pid=1850,fd=4),("httpd",pid=1849,fd=4),("httpd",pid=1848,fd=4),("httpd",pid=1847,fd=4),("httpd",pid=1846,fd=4),("httpd",pid=1844,fd=4))
测试网络连通性,ping [选项] 目标主机;-c选项是发送多少个包,-w表示等待10秒。
路由追踪,traceroute IP地址。
[root@localhost ~]# traceroute 192.168.190.101
traceroute to 192.168.190.101 (192.168.190.101), 30 hops max, 60 byte packets
1 192.168.190.101 (192.168.190.101) 3.411 ms !X 3.252 ms !X 3.206 ms !X
域名解析,验证dns服务器是否可以解析域名;dns域名解析的作用是:将域名翻译成ip地址。同时其他命令也可以查看,比如:dig,host,ping等。
[root@localhost ~]# nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 180.101.50.242
Name: www.a.shifen.com
Address: 180.101.50.188
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet #网卡的类型 网口
BOOTPROTO=static #ip地址获取方式 dhcp static (none)
NAME=ens33 #网卡的描述一般和 DEVICE一样
DEVICE=ens33 #网卡的名称,必须和 ifconfig 中看到的一样
ONBOOT=yes #开机自启动
IPADDR=192.168.190.100 #ip地址
NETMASK=255.255.255.0 #子网掩码,PREFIX=24
GATEWAY=192.168.190.2 #网关
DNS1=114.114.114.114 #dns服务器1
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
64 bytes from 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=128 time=2.17 ms
可手动添加网络适配器,参考ens33网卡配置,适当修改
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.190.136
NETMASK=255.255.255.0
GATEWAY=192.168.190.2
DNS1=114.114.114.114
[root@localhost network-scripts]# systemctl restart network
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-bond0
[root@localhost network-scripts]# vim ifcfg-bond0
BOOTPROTO=static
NAME=bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.190.200
NETMASK=255.255.255.0
GATEWAY=192.168.190.2
DNS1=114.114.114.114
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
主备模式 每100ms检测一次 使用活着的mac地址
[root@localhost network-scripts]# vim ifcfg-ens33
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
MASTER=bond0 #主人
SLAVE=yes
[root@localhost network-scripts]# vim ifcfg-ens36
NAME=ens36
DEVICE=ens36
BOOTPROTO=none #静态
MASTER=bond0
SLAVE=yes
PNBOOT=yes
[root@localhost network-scripts]# systemctl restart network
[root@localhost ~]# ifconfig bond0 dow
或者rmmod bonding
网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。
[root@localhost ~]# tcpdump -D #列出当前所有网卡
1.virbr0
2.nflog (Linux netfilter log (NFLOG) interface)
3.nfqueue (Linux netfilter queue (NFQUEUE) interface)
4.usbmon1 (USB bus number 1)
5.usbmon2 (USB bus number 2)
6.ens33
7.any (Pseudo-device that captures on all interfaces)
8.lo [Loopback]
[root@localhost ~]# tcpdump #默认抓第一块网卡数据,虚拟网卡没有流量
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on virbr0, link-type EN10MB (Ethernet), capture size 262144 bytes
[root@localhost ~]# tcpdump -i ens33 #指定网卡抓包
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:15:51.137151 IP localhost.localdomain.ssh > 192.168.190.1.8018: Flags [P.], seq 3160869659:3160869847, ack 1773325442, win 261, length 188
21:15:51.137618 IP 192.168.190.1.8018 > localhost.localdomain.ssh: Flags [.], ack 188, win 4095, length 0
21:15:51.138171 IP localhost.localdomain.40820 > public1.114dns.com.domain: 48951+ PTR? 1.190.168.192.in-addr.arpa. (44)
^C^C
-nn示例:直接显示IP和端口号
[root@localhost ~]# tcpdump -i ens33 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:22:03.841588 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 3161280743:3161280931, ack 1773326482, win 261, length 188
21:22:03.843031 IP 192.168.190.1.8018 > 192.168.190.100.22: Flags [.], ack 188, win 4096, length 0
21:22:03.843176 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 188:360, ack 1, win 261, length 172
21:22:03.843451 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 360:612, ack 1, win 261, length 252
21:22:03.843611 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 612:760, ack 1, win 261, length 148
tcpdump过滤
root@localhost ~]# tcpdump -i ens33 -nn src host 192.168.190.100
#代表过滤指定主机IP源地址的网络数据包,src 选项 源地址
root@localhost ~]# tcpdump -i ens33 -nn dst host 192.168.190.100
#代表过滤指定主机IP目标地址的网络数据包,dst 选项 目标地址
[root@localhost ~]# tcpdump -i ens33 -nn src host 192.168.190.101 and dst 192.168.190.100
#代表过滤ip100发给101的网络数据
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:32:27.091941 IP 192.168.190.101 > 192.168.190.100: ICMP echo request, id 3475, seq 1, length 64
21:32:28.093234 IP 192.168.190.101 > 192.168.190.100: ICMP echo request, id 3475, seq 2, length 64
[root@localhost ~]# tcpdump -nn -i ens33 icmp and src host 192.168.190.101 and dst host 192.168.190.100
#抓取源地址192.168.190.101,目的地址192.168.190.100经过ens33网卡的icmp协议包
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:40:50.617180 IP 192.168.190.101 > 192.168.190.100: ICMP echo request, id 3517, seq 224, length 64
21:40:51.619638 IP 192.168.190.101 > 192.168.190.100: ICMP echo request, id 3517, seq 225, length 64
[root@localhost ~]# tcpdump -nn -i ens33 port 22
#抓取ens33网卡22端口数据
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:44:41.672291 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 3163213563:3163213751, ack 1773345178, win 261, length 188
21:44:41.672693 IP 192.168.190.1.8018 > 192.168.190.100.22: Flags [.], ack 188, win 4096, length 0
21:44:41.673026 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 188:464, ack 1, win 261, length 276
21:44:41.673203 IP 192.168.190.100.22 > 192.168.190.1.8018: Flags [P.], seq 464:612, ack 1, win 261, length 148
注:基于协议ip arp icmp tcp udp,不支持抓取应用层七层协议。
[root@localhost data]# tcpdump -i any -w test.cap
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
^C50 packets captured
51 packets received by filter
0 packets dropped by kernel
[root@localhost data]# ls
test.cap
[root@localhost data]# sz test.cap #选择保存路径
使用Wireshark打开查看图形化界面
读取上述文件test.cap
[root@localhost data]# tcpdump -r test.cap
reading from file test.cap, link-type LINUX_SLL (Linux cooked)
21:55:03.469404 IP localhost.localdomain.ssh > 192.168.190.1.8018: Flags [P.], seq 3163266231:3163266355, ack 1773347998, win 261, length 124
21:55:03.469918 IP 192.168.190.1.8018 > localhost.localdomain.ssh: Flags [.], ack 124, win 4096, length 0
……