1 网卡配置文件
在/etc/sysconfig/network-scripts/
目录下,网卡的配置文件以ifcfg-开头,后面是网卡名称如eth0或ensXXX、enoXXX等等。
网卡的详细配置信息如下:
TYPE=Ethernet
BOOTPROTO=static #IP地址获取方式,可以为dhcp、none、static
HWADDR=00:0c:29:4f:5f:22 #网卡mac地址
IPADDR=192.168.234.129 #IP地址
PREFIX=24 #子网掩码长度,与NETMASK只用配置一个
GATEWAY=192.168.234.2 #网关
NETMASK=255.255.255.0 #子网掩码,与PREFIX只用配置一个
DEFROUTE=yes #默认路由指向该网卡
DNS1=114.114.114.114 #DNS服务器地址,注意关键字是DNS1
NAME=ens33 #网卡名字
DEVICE=ens33 #网卡名字
ONBOOT=yes #网卡是否开机激活
2 DNS配置文件
如果网卡DNS配置正确,可以在/etc/resolv.conf
文件查看到DNS服务器
[root@node1 ~]$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
3 hostnamectl
修改计算机名
hostnamectl set-hostname NAME
这个命令最终修改的是/etc/hostname
这个文件
4 hostname
4.1 查看计算机名
[root@node1 ~]$ hostname
node1
4.2 查看本机所有网卡IP地址
[root@backup ~]$ hostname -I
10.0.0.41 172.16.1.41
5 route、ip route
5.1 route
route add
临时添加静态路由
#添加默认路由
route add default gw 10.0.0.2
#添加普通路由
route add -net 1.1.1.1 netmask 255.255.255.255 gw 192.168.234.2
#添加主机路由
route add -host 1.1.1.1 dev eth0
route del
临时删除路由
route del default gw 10.0.0.2
route del -net 1.1.1.1 netmask 255.255.255.255 gw 192.168.234.2
route -n
查看路由表
5.2 ip route
centos7 才有的命令
ip route show
查看路由表
ip route add
临时添加静态路由
#添加默认路由
ip route add default via 10.0.0.2
#添加普通路由
ip route add 1.1.1.1/32 via 10.0.0.2
ip route del
临时删除静态路由
#删除默认路由
ip route del default via 10.0.0.2
#删除普通路由
ip route del 1.1.1.1/32 via 10.0.0.2
6 永久添加静态路由
在/etc/sysconfig/network-scripts/目录下,创建静态路由配置文件,格式为route-网卡名
。
以网卡ens33为例
[root@node1 network-scripts]$ vim route-ens33
2.2.2.2/32 via 192.168.234.2
#格式为:目标地址/掩码 via 下一跳地址
注意! 编辑静态路由配置文件需重启网络服务才能生效,为避免影响现网业务,可以使用route add
命令临时添加一条一样的静态路由,这样能够保证静态路由既临时生效又永久生效。
7 查看网卡的实际mac地址
当网卡配置文件配错mac地址时,会识别不到网卡,可以使用命令dmesg | grep eth
来查看内核识别到的真正的网卡mac地址。
[root@node1 network-scripts]$ dmesg | grep eth
[ 2.300460] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:4f:5f:22
[ 2.300466] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection
[ 2.656130] e1000 0000:02:04.0 eth1: (PCI:66MHz:32-bit) 00:0c:29:4f:5f:2c
[ 2.656136] e1000 0000:02:04.0 eth1: Intel(R) PRO/1000 Network Connection
[ 3.046804] e1000 0000:02:05.0 eth2: (PCI:66MHz:32-bit) 00:0c:29:4f:5f:36
[ 3.046808] e1000 0000:02:05.0 eth2: Intel(R) PRO/1000 Network Connection
8 netstat和ss
查看服务器监听和对外开放的端口情况
netstat -tulnp
ss -tulnp
Options:
-t:TCP
-u:UDP
-l:Listen
-n:Numeric,don't resolve names
-p:PID/Program name
监听地址的部分:
- ipv4
0.0.0.0
、*
表示所有地址均可访问,127.0.0.1
表示仅本机地址可以访问 - ipv6
::
表示所有地址均可访问,::1
表示仅本机地址可以访问
9 services文件
/etc/services
文件记录了系统各服务对应的端口号
# service-name port/protocol [aliases ...] [# comment]
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
systat 11/udp users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote
qotd 17/udp quote
msp 18/tcp # message send protocol (historic)
msp 18/udp # message send protocol (historic)
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp-data 20/udp
# 21 is registered to ftp, but also used by fsp
ftp 21/tcp
ftp 21/udp fsp fspd
ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol
10 修改网卡名称
安装时修改
在Install 选项按tab键,输入net.ifnames=0 biosdevname=0
安装后修改
1.重命名网卡配置文件
[root@sun /]$ cd /etc/sysconfig/network-scripts/ #切换到网卡目录
[root@sun /]$ mv ifcfg-eno16777736 ifcfg-eth0 #修改名称
2.关闭NetworkManager(可选)
不关闭NetworkManager,需要在网卡配置文件中配置网卡MAC地址
systemctl stop NetworkManager
systemctl disable NetworkManager
3.编辑网卡配置
...
NAME="eth0" #修改为eth0
DEVICE="eth0" #修改为eth0
HWADDR=xx:xx:xx... #如果开启了NetworkManager,需要写上mac地址字段
4.修改grub文件
/etc/sysconfig/grub
[root@sun /]$ vim /etc/sysconfig/grub
...
GRUB_CMDLINE_LINUX="... rhgb quiet net.ifnames=0 biosdevname=0"
5.重新生成grub配置文件
[root@sun /]$ grub2-mkconfig -o /boot/grub2/grub.cfg #重新生成grub配置并更新内核参数
6.重启后生效
11 TCP状态转换图

12 ifdown、ifup关闭开启网卡
ifdown eth0
ifup eth0
13 ip addr
13.1 临时设置网卡ip地址
ip addr add 10.0.0.1/24 dev eth0
添加地址
ip addr del 10.0.0.1/24 dev eth0
删除地址
13.2 临时添加网卡子接口
ip addr add 10.0.0.1/24 dev eth0 label eth0:1
添加子接口
ip addr del 10.0.0.1/24 dev eth0 label eth0:1
删除子接口
14 设置策略路由
14.1 新建路由实例
编辑/etc/iproute2/rt_tables
文件,新建路由实例
新建一个test实例
#
# reserved values
#
255 local
254 main
253 default
0 unspec
200 test
#
# local
#
#1 inr.ruhep
14.2 为路由实例添加策略
为test实例添加默认路由
ip route add 0/0 via 10.0.0.1 table test
将特定源地址(113.110.228.45)交由test实例转发
ip rule add from 113.110.228.45 table test
14.3 查看策略路由信息
14.3.1 查看总体路由表
ip rule show
ip rule show显示的内容,大体上可以分为三段:
第一段:冒号之前的数字,表示该路由表被匹配的优先顺序,数字越小,越早被匹配。这个优先级别范围是0~4亿多。默认0、32766、32767三个优先级别已被占用。如果在添加规则时没有定义优先级别,那么默认的优先级别会从32766开始递减,可以通过prio ID参数在设置路由表时添加优先级。
第二段:from关键字,这里显示的是匹配规则,当前表示的是从哪里来的数据包,除了from关键字外,还有to、tos、fwmark、dev等等。
第三段:loacl/main/default 这些都是路由表名称,表示数据包要从那个路由表送出去。local表包含本机路由及广播信息,main表就是我们route -n看到的内容,default表,默认为空。
14.3.2 查看分表路由
ip route list table 表名
#例子
[root]$ ip route list table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 172.16.64.0 dev wlp2s0 proto kernel scope link src 172.16.65.90
local 172.16.65.90 dev wlp2s0 proto kernel scope host src 172.16.65.90
broadcast 172.16.67.255 dev wlp2s0 proto kernel scope link src 172.16.65.90
broadcast 172.17.0.0 dev docker0 proto kernel scope link src 172.17.0.1
local 172.17.0.1 dev docker0 proto kernel scope host src 172.17.0.1
broadcast 172.17.255.255 dev docker0 proto kernel scope link src 172.17.0.1
15 tcpdump抓包工具

15.1 options
抓包选项:
-c: 指定要抓取的包数量。
-i interface: 指定tcpdump需要监听的接口。默认会抓取第一个网络接口
-n: 对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
-nn: 除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-Q: 指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。
-s len: 设置tcpdump的数据包抓取长度为len,如果不设置默认将会是262144字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,
输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量,
从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好。
-S: 使用绝对序列号,而不是相对序列号
输出选项:
-e: 输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q: 快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-X: 输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX: 输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v: 当分析和打印的时候,产生详细的输出。
-vv: 产生比-v更详细的输出。
-vvv: 产生比-vv更详细的输出。
其他功能性选项:
-D: 列出可用于抓包的接口。将会列出接口的数值编号和接口名,它们都可以用于"-i"后。
-F: 从文件中读取抓包的表达式。若使用该选项,则命令行中给定的其他表达式都将失效。
-w: 将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。
-r: 从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。
常用选项:
tcpdump -c num -i int -nn -Q in|out|inout
tcpdump -c num -i int -nn -XX -vvv
tcpdump -i eth0 -w test.pcap
15.2 proto dir type
(1).proto:通过给定协议限定匹配的数据包类型。
常用的协议有tcp/udp/arp/ip/ether/icmp等,若未给定协议类型,则匹配所有可能的类型。例如"tcp port 21","udp portrange 7000-7009"。
(2).dir:指定方向。
可以给定的值包括src/dst/src or dst/src and dst,默认为src or dst。例如,"src foo"表示源主机为foo的数据包,"dst net 128.3"表示目标网络为128.3的数据包,"src or dst port 22"表示源或目的端口为22的数据包。
(3).type:指定类型。
可以给定的值有host/net/port/portrange。例如"host foo","net 128.3","port 20","portrange 6000-6008"。默认的type为host。
15.3 过滤规则组合
- and:所有的条件都需要满足,也可以表示为
&&
- or:只要有一个条件满足就可以,也可以表示为
||
- not:取反,也可以使用
!
proto
可以直接配合dir
port/portrange
使用
tcpdump -i eth0 udp dst port 53
proto
配合dir
host/net
使用时,需要用到规则组合and
tcpdump -i eth0 tcp and dst net 172.16.19
当你在使用多个过滤器进行组合时,有可能需要用到括号,而括号在 shell 中是特殊符号,因为你需要使用引号将其包含。
tcpdump 'src 10.0.2.4 and (dst port 3389 or 22)'
15.4 输出中的TCP标识位
使用 tcpdump 抓包后,会遇到的 TCP 报文 Flags,有以下几种:
- [S] : SYN(开始连接)
- [P] : PSH(推送数据)
- [F] : FIN (结束连接)
- [R] : RST(重置连接)
- [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)
网友评论