日常运维
使用w查看系统负载
1.w/uptime
17:03:51 当前时间
up 6 days 系统启动多长时间
4 users 目前登录了几个用户
load average: 0.00, 0.01, 0.05 系统负载
第一段 0.00 指一分钟内使用cpu活动的进程,这个值等于逻辑cpu个数是最合适的
第二段 0.01 指五分钟内使用cpu活动的进程
第三段 0.05 指十五分钟内使用cpu活动的进程
LOGIN 什么时候登录的
IDLE 空闲了多长时间
网络登录的是TTY:pts/0、pts/1的形式,终端登录的是tty1——6
[root@bogon awk]# w 17:03:51 up 6 days, 17:18, 4 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root :0 :0 2612月17 ?xdm? 55:42 3.08s gdm-session-wor root pts/0 :0 二09 3days 0.04s 0.04s /bin/bash root pts/1 :0 2912月17 6days 0.06s 0.06s /bin/bash root pts/2 10.21.95.218 二09 7.00s 2.71s 0.02s w [root@bogon awk]#
2.查看系统cpu信息(processor : 0说明只有一颗)
[root@bogon awk]# cat /proc/cpuinfo
vmstat命令查看系统瓶颈
1.vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。
[root@bogon awk]# vmstat 1 5 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 400260 249648 32 244032 0 1 29 5 55 20 0 0 99 0 0 0 0 400260 249648 32 244032 0 0 0 0 61 118 0 0 100 0 0 0 0 400260 249648 32 244032 0 0 0 0 85 151 1 0 99 0 0 0 0 400260 249648 32 244032 0 0 0 0 71 133 0 1 99 0 0 0 0 400260 249616 32 244032 0 0 0 0 64 118 0 0 100 0 0 [root@bogon awk]#
2表示每隔两秒采集一次服务器状态,1表示只采集一次。
r:run 有多少个进程处于运行状态
b:表示阻塞的进程
swpd:有多少块被交换了(当内存不够的时候),当数值不大且固定可以不用管
free 空闲的物理内存的大小
buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,
cache cache直接用来记忆我们打开的文件,给文件做缓冲
si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常
so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上
bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,
bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
in 每秒CPU的中断次数,包括时间中断
cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wt 等待IO CPU时间。
top命令查看具体进程
1.top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。
[sun.yujun@kddi-zol-fss-web1 autorun]$ top -bn1 top - 09:33:16 up 38 days, 17 min, 14 users, load average: 0.12, 0.09, 0.33 Tasks: 388 total, 1 running, 387 sleeping, 0 stopped, 0 zombie Cpu(s): 12.1%us, 0.8%sy, 0.0%ni, 87.0%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 8060540k total, 6555192k used, 1505348k free, 93216k buffers Swap: 16777196k total, 2133356k used, 14643840k free, 300296k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 13003 yang.lei 20 0 8033m 4.8g 1572 S 7.8 62.5 1123:34 python 8099 sun.yuju 20 0 15160 1344 824 R 1.9 0.0 0:00.01 top 1 root 20 0 19352 560 332 S 0.0 0.0 2:22.45 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 1:09.12 migration/0 4 root 20 0 0 0 0 S 0.0 0.0 0:33.01 ksoftirqd/0 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0 6 root RT 0 0 0 0 S 0.0 0.0 0:06.61 watchdog/0 7 root RT 0 0 0 0 S 0.0 0.0 1:13.85 migration/1 8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/1 9 root 20 0 0 0 0 S 0.0 0.0 1:16.91 ksoftirqd/1 10 root RT 0 0 0 0 S 0.0 0.0 0:05.43 watchdog/1
1.top默认3秒刷新一次、按cpu降序排,加-bn1不刷新
2.统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
01:06:48 当前时间 up 1:22 系统运行时间,格式为时:分 1 user 当前登录用户数 load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
3.第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
total 进程总数 running 正在运行的进程数 sleeping 睡眠的进程数 stopped 停止的进程数 zombie 僵尸进程数 Cpu(s): 0.3% us 用户空间占用CPU百分比 1.0% sy 内核空间占用CPU百分比 0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比 98.7% id 空闲CPU百分比 0.0% wa 等待输入输出的CPU时间百分比 0.0%hi:硬件CPU中断占用百分比 0.0%si:软中断占用百分比 0.0%st:虚拟机占用百分比
4.最后两行为内存信息。内容如下:
Mem: 191272k total 物理内存总量 173656k used 使用的物理内存总量 17616k free 空闲内存总量 22052k buffers 用作内核缓存的内存量 Swap: 192772k total 交换区总量 0k used 使用的交换区总量 192772k free 空闲交换区总量 123988k cached 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
5.进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号 列名 含义 a PID 进程id b PPID 父进程id c RUSER Real user name d UID 进程所有者的用户id e USER 进程所有者的用户名 f GROUP 进程所有者的组名 g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ? h PR 优先级 i NI nice值。负值表示高优先级,正值表示低优先级 j P 最后使用的CPU,仅在多CPU环境下有意义 k %CPU 上次更新到现在的CPU时间占用百分比 l TIME 进程使用的CPU时间总计,单位秒 m TIME+ 进程使用的CPU时间总计,单位1/100秒 n %MEM 进程使用的物理内存百分比 o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。 q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA r CODE 可执行代码占用的物理内存大小,单位kb s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb t SHR 共享内存大小,单位kb u nFLT 页面错误次数 v nDRT 最后一次写入到现在,被修改过的页面数。 w S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) x COMMAND 命令名/命令行 y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名 z Flags 任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
命令使用
top使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明
d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 p 通过指定监控进程ID来仅仅监控某个进程的状态。 q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 S 指定累计模式 s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 i 使top不显示任何闲置或者僵死进程。 c 显示整个命令行而不只是显示命令名
其他实用命令
下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
Ctrl+L 擦除并且重写屏幕。 h或者? 显示帮助画面,给出一些简短的命令总结说明。 k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。 i 忽略闲置和僵死进程。这是一个开关式命令。 q 退出程序。 r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。 S 切换到累计模式。 s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也
会大大增加。 f或者F 从当前显示中添加或者删除项目。 o或者O 改变显示项目的顺序。 l 切换显示平均负载和启动时间信息。 m 切换显示内存信息。 t 切换显示进程和CPU状态信息。 c 切换显示命令名称和完整命令行。 M 根据驻留内存大小进行排序。 P 根据CPU使用百分比大小进行排序。 T 根据时间/累计时间进行排序。 W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
附常用操作:
top //每隔5秒显式所有进程的资源占用情况 top -d 2 //每隔2秒显式所有进程的资源占用情况 top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名) top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况 top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
按内存排序 M, P按cpu排序
sar命令System Activity Reporter, 系统活动情况报告
1.被人们称作linux中的瑞士军刀
2.sar -n DEV 1 2 1代表每分钟显示一次,2显示两次
3.rxpck接收的数据包量(几千是正常的),txpck发出的数据包量
[root@bogon ~]# sar -n DEV 1 2 Linux 3.10.0-327.el7.x86_64 (bogon) 2018年01月19日 _x86_64_ (1 CPU) 15时19分40秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 15时19分41秒 eno16777736 5.05 2.02 0.58 0.25 0.00 0.00 0.00 15时19分41秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 15时19分41秒 virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00 15时19分41秒 virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 15时19分41秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 15时19分42秒 eno16777736 5.00 1.00 0.60 0.57 0.00 0.00 0.00 15时19分42秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 15时19分42秒 virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00 15时19分42秒 virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 平均时间: eno16777736 5.03 1.51 0.59 0.41 0.00 0.00 0.00 平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 [root@bogon ~]#
4.查看某一天的历史数据
[root@bogon ~]# sar -n DEV -f /var/log/sa/sa02
5.查看系统负载
[root@bogon ~]# sar -q 1 5 Linux 3.10.0-327.el7.x86_64 (bogon) 2018年01月19日 _x86_64_ (1 CPU) 15时31分55秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 15时31分56秒 2 693 0.00 0.01 0.05 0 15时31分57秒 2 693 0.00 0.01 0.05 1 15时31分58秒 2 693 0.00 0.01 0.05 1 15时31分59秒 2 695 0.00 0.01 0.05 0 15时32分00秒 1 694 0.00 0.01 0.05 0 平均时间: 2 694 0.00 0.01 0.05 0 [root@bogon ~]#
6.查看某一天的系统负载
[root@bogon ~]# sar -q -f /var/log/sa/sa19 Linux 3.10.0-327.el7.x86_64 (bogon) 2018年01月19日 _x86_64_ (1 CPU) 15时20分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 15时30分01秒 2 689 0.00 0.01 0.05 0 平均时间: 2 689 0.00 0.01 0.05 0 [root@bogon ~]#
7.查看磁盘的读写
[root@bogon ~]# sar -b Linux 3.10.0-327.el7.x86_64 (bogon) 2018年01月19日 _x86_64_ (1 CPU) 15时20分01秒 tps rtps wtps bread/s bwrtn/s 15时30分01秒 0.20 0.02 0.18 0.36 11.34 平均时间: 0.20 0.02 0.18 0.36 11.34 [root@bogon ~]#
nload命令
nload 默认分为上下两块:
上半部分是:Incoming也就是进入网卡的流量,
下半部分是:Outgoing,也就是从这块网卡出去的流量,
每部分都有当前流量(Curr),
平均流量(Avg),
最小流量(Min),
最大流量(Max),
总和流量(Ttl)这几个部分,看起来还是蛮直观的。
nload默认的是eth0网卡,如果你想监测eth1网卡的流量
#nload eth1
-a:这个好像是全部数据的刷新时间周期,单位是秒,默认是300.
-i:进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s.
-m:不显示流量图,只显示统计数据。
-o:出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s.
-t:显示数据的刷新时间间隔,单位是毫秒,默认500。
-u:设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的.注意大小写单位不同!
h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.
H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.
-U:设置右边Ttl的数据单位,默认是自动变的.注意大小写单位不同(与-u相同)!
Devices:自定义监控的网卡,默认是全部监控的,使用左右键切换。
如只监控eth0命令:# nload eth0
使用 $ nload eth0 ,可以查看第一网卡的流量情况,显示的是实时的流量图, $ nload -m 可以同时查看多个网卡的流量情况。
监控io性能
[root@bogon ~]# iostat Linux 3.10.0-327.el7.x86_64 (bogon) 2018年01月19日 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.22 0.04 0.27 0.16 0.00 99.31 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.65 33.33 5.13 19455533 2995131 sdb 0.00 0.00 0.00 2652 0 scd0 0.00 0.02 0.00 9918 0 dm-0 0.68 33.20 4.28 19378412 2498203 dm-1 0.23 0.12 0.82 70860 477044 dm-2 0.00 0.00 0.00 556 0 [root@bogon ~]#
1.%util表示io等待
[root@bogon ~]# iostat -x Linux 3.10.0-327.el7.x86_64 (bogon) 2018年01月19日 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.22 0.04 0.27 0.16 0.00 99.31 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.03 0.23 0.47 0.18 33.33 5.13 117.54 0.02 31.44 27.84 40.94 5.23 0.34 sdb 0.00 0.00 0.00 0.00 0.00 0.00 12.00 0.00 4.24 4.24 0.00 3.55 0.00 scd0 0.00 0.00 0.00 0.00 0.02 0.00 20.43 0.00 2.87 2.87 0.00 2.74 0.00 dm-0 0.00 0.00 0.47 0.21 33.20 4.28 110.49 0.02 31.84 28.04 40.43 4.86 0.33 dm-1 0.00 0.00 0.03 0.20 0.12 0.82 8.02 0.10 415.84 14.88 474.50 1.09 0.03 dm-2 0.00 0.00 0.00 0.00 0.00 0.00 13.40 0.00 2.11 2.11 0.00 1.53 0.00 [root@bogon ~]#
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge
了。 rsec/s:每秒读取的扇区数; wsec/:每秒写入的扇区数。 rKB/s:The number of read requests that were issued to the device per second; wKB/s:The number of write requests that were issued to the device per second; avgrq-sz 平均请求扇区的大小 avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。 await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。 这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。 svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长, 系统上运行的应用程序将变慢。
%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度
。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
free命令
1.查看内存使用情况
[root@bogon ~]# free -h total used free shared buff/cache available Mem: 977M 479M 117M 15M 380M 310M Swap: 2.0G 425M 1.6G [root@bogon ~]#
Mem:表示物理内存统计
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况,
第1行 Mem:
total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。buffer 与cache 的区别见http://blog.csdn.net/xifeijian/article/details/8209758
total = used + free
第2行 -/+ buffers/cached:
used:也就是第一行中的used - buffers-cached 也是实际使用的内存总量。
free:未被使用的buffers 与cached 和未被分配的内存之和,这就是系统当前实际可用内存=free+buffers+cached。
因为buffers和cached是系统为了提高性能申请的内存数,实际上当应用程序需要此功能时,是可以使用这些内存的,所以对应用程序来说,这些内存也是可以使用的。
ps命令
1.ps aux
[root@bogon ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 188864 2436 ? Ss 1月12 0:24 /usr/lib/systemd/systemd --switched-root --system --deseriali root 2 0.0 0.0 0 0 ? S 1月12 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 1月12 0:10 [ksoftirqd/0] root 7 0.0 0.0 0 0 ? S 1月12 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 1月12 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 1月12 0:00 [rcuob/0] root 10 0.0 0.0 0 0 ? S 1月12 0:00 [rcuob/1]
2.ps -ef
[root@bogon ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 1月12 ? 00:00:24 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 root 2 0 0 1月12 ? 00:00:00 [kthreadd] root 3 2 0 1月12 ? 00:00:10 [ksoftirqd/0] root 7 2 0 1月12 ? 00:00:00 [migration/0]
USER:该 process 属于那个使用者账号的 PID :该 process 的号码 %CPU:该 process 使用掉的 CPU 资源百分比 %MEM:该 process 所占用的物理内存百分比 VSZ :该 process 使用掉的虚拟内存量 (Kbytes) RSS :该 process 占用的固定的内存量 (Kbytes) TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。 STAT:该程序目前的状态,主要的状态有 R :该程序目前正在运作,或者是可被运作 S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。 T :该程序目前正在侦测或者是停止了 Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态 START:该 process 被触发启动的时间 TIME :该 process 实际使用 CPU 运作的时间 COMMAND:该程序的实际指令
netstat查看网络状态
http://www.jb51.net/hack/186589.html
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
1.netstat -lnp
[root@bogon ~]# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2868/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2452/nginx: master tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 4607/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1211/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1206/cupsd tcp6 0 0 :::22 :::* LISTEN 1211/sshd tcp6 0 0 ::1:631 :::* LISTEN 1206/cupsd tcp6 0 0 :::8888 :::* LISTEN 8241/httpd udp 0 0 0.0.0.0:57029 0.0.0.0:* 121923/dhclient udp 0 0 0.0.0.0:5353 0.0.0.0:* 946/avahi-daemon: r udp 0 0 0.0.0.0:50702 0.0.0.0:* 15430/dhclient udp 0 0 192.168.122.1:53 0.0.0.0:* 4607/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 4607/dnsmasq udp 0 0 0.0.0.0:68 0.0.0.0:* 121923/dhclient udp 0 0 0.0.0.0:68 0.0.0.0:* 15430/dhclient udp 0 0 0.0.0.0:35456 0.0.0.0:* 946/avahi-daemon: r udp6 0 0 :::44888 :::* 15430/dhclient udp6 0 0 :::56762 :::* 121923/dhclient Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 581380 13667/gnome-termina /run/user/0/at-spi2-socket-13667
2.netstat -an查看所有连接状态
[root@bogon ~]# netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 52 10.21.95.122:22 10.21.95.218:60472 ESTABLISHED tcp 0 0 10.21.95.122:22 10.21.95.218:50134 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 :::8888 :::* LISTEN
1. 列出所有端口 (包括监听和未监听的)
列出所有端口 netstat -a
# netstat -a | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:30037 *:* LISTEN udp 0 0 *:bootpc *:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 6135 /tmp/.X11-unix/X0 unix 2 [ ACC ] STREAM LISTENING 5140 /var/run/acpid.socket
列出所有 tcp 端口 netstat -at
[root@bogon ~]# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:http 0.0.0.0:* LISTEN tcp 0 0 bogon:domain 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN tcp 0 52 bogon:ssh bogon:60472 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 localhost:ipp [::]:* LISTEN tcp6 0 0 [::]:ddi-tcp-1 [::]:* LISTEN [root@bogon ~]#
列出所有 udp 端口 netstat -au
[root@bogon ~]# netstat -au Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:57029 0.0.0.0:* udp 0 0 0.0.0.0:mdns 0.0.0.0:* udp 0 0 0.0.0.0:50702 0.0.0.0:* udp 0 0 bogon:domain 0.0.0.0:* udp 0 0 0.0.0.0:bootps 0.0.0.0:* udp 0 0 0.0.0.0:bootpc 0.0.0.0:* udp 0 0 0.0.0.0:bootpc 0.0.0.0:* udp 0 0 0.0.0.0:35456 0.0.0.0:* udp6 0 0 [::]:44888 [::]:* udp6 0 0 [::]:56762 [::]:* [root@bogon ~]#
2. 列出所有处于监听状态的 Sockets
只显示监听端口 netstat -l
只列出所有监听 tcp 端口 netstat -lt
只列出所有监听 udp 端口 netstat -lu
只列出所有监听 UNIX 端口 netstat -lx
3. 显示每个协议的统计信息
显示所有端口的统计信息 netstat -s
显示 TCP 或 UDP 端口的统计信息 netstat -st 或 -su
找出程序运行的端口
[root@bogon ~]# netstat -ap | grep httpd tcp6 0 0 [::]:ddi-tcp-1 [::]:* LISTEN 8241/httpd [root@bogon ~]#
找出运行在指定端口的进程
netstat -an | grep ':80'
显示详细信息,像是 ifconfig 使用 netstat -ie:
[root@bogon ~]# netstat -ie Kernel Interface table eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.21.95.122 netmask 255.255.248.0 broadcast 10.21.95.255 inet6 fe80::20c:29ff:fec1:d18d prefixlen 64 scopeid 0x20<link> ether 00:0c:29:c1:d1:8d txqueuelen 1000 (Ethernet) RX packets 1982450 bytes 1199270303 (1.1 GiB) RX errors 0 dropped 12 overruns 0 frame 0 TX packets 377406 bytes 43147467 (41.1 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
查看连接某服务端口最多的的IP地址
netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
TCP各种状态列表
[root@bogon ~]# netstat -nat |awk '{print $6}' established) Foreign LISTEN LISTEN LISTEN LISTEN LISTEN ESTABLISHED LISTEN LISTEN LISTEN [root@bogon ~]#
先把状态全都取出来,然后使用uniq -c统计,之后再进行排序。
[root@bogon ~]# netstat -nat |awk '{print $6}'|sort|uniq -c 1 established) 1 ESTABLISHED 1 Foreign 8 LISTEN [root@bogon ~]#
[root@bogon ~]# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn 8 LISTEN 1 Foreign 1 ESTABLISHED 1 established) [root@bogon ~]#
分析access.log获得访问前10位的ip地址
awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10
Linux下抓包
1.需要指定网卡的名称 -nn代表ip和端口
[root@bogon ~]# tcpdump -nn -i eno16777736
#抓取所有经过 eth0,目的或源地址是 192.168.29.162 的网络数据 命令:tcpdump -n -i eth0 host 192.168.29.162 # 源地址 命令:tcpdump -i eth1 src host 192.168.29.162 # 目的地址 命令:tcpdump -i eth1 dst host 192.168.29.162 #抓取当前服务器eth0网卡端口8080的网络数据 命令:tcpdump -n -i eth0 port 8080 #抓取mysql执行的sql语句 命令:tcpdump -i eth1 -s 0 -l -w - dst port 3306 | strings #抓取mysql通讯的网络包(cap用wireshark打开) 命令tcpdump -n -nn -tttt -i eth0 -s 65535 'port 3306' -w 20160505mysql.cap #抓取SMTP 数据 命令:tcpdump -i eth1 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0' #抓取HTTP GET数据,"GET "的十六进制是 47455420 命令:tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x47455420' #抓取SSH返回,"SSH-"的十六进制是 0x5353482D 命令:tcpdump -i eth1 'tcp[(tcp[12]>>2):4] = 0x5353482D' #实时抓取端口号8080的GET包,然后写入GET.log 命令:tcpdump -i eth0 '((port 8080) and (tcp[(tcp[12]>>2):4]=0x47455420))' -nnAl -w /tmp/GET.log #抓取指定SYN个数,-c 参数指定抓多少个包。 命令:time tcpdump -nn -i eth0 'tcp[tcpflags] = tcp-syn' -c 10
抓10个数据包
[root@bogon ~]# tcpdump -nn -i eno16777736 -c 10 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eno16777736, link-type EN10MB (Ethernet), capture size 65535 bytes 17:51:37.366999 IP 10.21.95.218.62207 > 64.233.189.138.443: Flags [S], seq 3948769275, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0 17:51:37.367040 IP 10.21.95.218.62190 > 64.233.189.102.443: Flags [S], seq 1726614355, win 8192, options [mss 1460,nop,nop,sackOK], length 0 17:51:37.371158 IP 10.21.95.122.22 > 10.21.95.218.60472: Flags [P.], seq 4093317757:4093317953, ack 845950440, win 272, length 196 17:51:37.374023 IP 10.21.95.218.60472 > 10.21.95.122.22: Flags [.], ack 196, win 16210, length 0 17:51:37.375754 IP 10.21.95.122.22 > 10.21.95.218.60472: Flags [P.], seq 196:776, ack 1, win 272, length 580 17:51:37.375982 IP 10.21.95.122.22 > 10.21.95.218.60472: Flags [P.], seq 776:924, ack 1, win 272, length 148 17:51:37.376099 IP 10.21.95.218.60472 > 10.21.95.122.22: Flags [P.], seq 1:53, ack 924, win 16425, length 52 17:51:37.376220 IP 10.21.95.122.22 > 10.21.95.218.60472: Flags [P.], seq 924:1184, ack 53, win 272, length 260 17:51:37.376373 IP 10.21.95.122.22 > 10.21.95.218.60472: Flags [P.], seq 1184:1348, ack 53, win 272, length 164 17:51:37.376539 IP 10.21.95.218.60472 > 10.21.95.122.22: Flags [.], ack 1348, win 16319, length 0 10 packets captured 10 packets received by filter 0 packets dropped by kernel [root@bogon ~]#
查看抓到的包文件
[root@bogon ~]# tcpdump -r /tmp/tcpdump.txt
tshark
1,实时打印当前http请求的url # tshark -s 512 -i eth0 -n -f 'tcp dst port 80' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t' 参数含义: -s 512 :只抓取前512个字节数据 -i eth0 :捕获eth0网卡 -n :禁止网络对象名称解析 -f 'tcp dst port 80' :只捕捉协议为tcp,目的端口为80的数据包 -R 'http.host and http.request.uri' :过滤出http.host和http.request.uri -T fields -e http.host -e http.request.uri :打印http.host和http.request.uri -l :输出到标准输出 2、实时打印当前mysql查询语句 # tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query 参数含义: -s 512 :只抓取前512个字节数据 -i eth0 :捕获eth0网卡 -n :禁止网络对象名称解析 -f 'tcp dst port 3306' :只捕捉协议为tcp,目的端口为3306的数据包 -R 'mysql.query' :过滤出mysql.query -T fields -e mysql.query :打印mysql查询语句
在Linux下,当我们需要抓取网络数据包分析时,通常是使用tcpdump抓取网络raw数据包存到一个文件,然后下载到本地使用wireshark界面网络分析工具进行网络包分析。 最近才发现,原来wireshark也提供有Linux命令行工具-tshark。tshark不仅有抓包的功能,还带了解析各种协议的能力。下面我们以两个实例来介绍tshark工具。 主要参数: 1. 抓包接口类 -i 设置抓包的网络接口,不设置则默认为第一个非自环接口。 -D 列出当前存在的网络接口。在不了解OS所控制的网络设备时,一般先用“tshark -D”查看网络接口的编号以供-i参数使用。 -f 设定抓包过滤表达式(capture filter expression)。抓包过滤表达式的写法雷同于tcpdump,可参考tcpdump man page的有关部分。 -s 设置每个抓包的大小,默认为65535,多于这个大小的数据将不会被程序记入内存、写入文件。(这个参数相当于tcpdump的-s,tcpdump默认抓包的大小仅为68) -p 设置网络接口以非混合模式工作,即只关心和本机有关的流量。 -B 设置内核缓冲区大小,仅对windows有效。 -y 设置抓包的数据链路层协议,不设置则默认为-L找到的第一个协议,局域网一般是EN10MB等。 -L 列出本机支持的数据链路层协议,供-y参数使用。 2. 抓包停止条件 -c 抓取的packet数,在处理一定数量的packet后,停止抓取,程序退出。 -a 设置tshark抓包停止向文件书写的条件,事实上是tshark在正常启动之后停止工作并返回的条件。条件写为test:value的形式,如“-a duration:5”表示tshark启动后在5秒内抓包然后停止;“-a filesize:10”表示tshark在输出文件达到10kB后停止;“-a files:n”表示tshark在写满n个文件后停止。(windows版的tshark0.99.3用参数“-a files:n”不起作用——会有无数多个文件生成。由于-b参数有自己的files参数,所谓“和-b的其它参数结合使用”无从说起。这也许是一个bug,或tshark的man page的书写有误。) 3. 文件输出控制 -b 设置ring buffer文件参数。ring buffer的文件名由-w参数决定。-b参数采用test:value的形式书写。“-b duration:5”表示每5秒写下一个ring buffer文件;“-b filesize:5”表示每达到5kB写下一个ring buffer文件;“-b files:7”表示ring buffer文件最多7个,周而复始地使用,如果这个参数不设定,tshark会将磁盘写满为止。 4. 文件输入 -r 设置tshark分析的输入文件。tshark既可以抓取分析即时的网络流量,又可以分析dump在文件中的数据。-r不能是命名管道和标准输入。 5. 处理类 -R 设置读取(显示)过滤表达式(read filter expression)。不符合此表达式的流量同样不会被写入文件。注意,读取(显示)过滤表达式的语法和底层相关的抓包过滤表达式语法不相同,它的语法表达要丰富得多,请参考http://www.ethereal.com/docs/dfref/和http://www.ethereal.com/docs/man-pages/ethereal-filter.4.html。类似于抓包过滤表达式,在命令行使用时最好将它们quote起来。 -n 禁止所有地址名字解析(默认为允许所有)。 -N 启用某一层的地址名字解析。“m”代表MAC层,“n”代表网络层,“t”代表传输层,“C”代表当前异步DNS查找。如果-n和-N参数同时存在,-n将被忽略。如果-n和-N参数都不写,则默认打开所有地址名字解析。 -d 将指定的数据按有关协议解包输出。如要将tcp 8888端口的流量按http解包,应该写为“-d tcp.port==8888,http”。注意选择子和解包协议之间不能留空格。 6. 输出类 -w 设置raw数据的输出文件。这个参数不设置,tshark将会把解码结果输出到stdout。“-w-”表示把raw输出到stdout。如果要把解码结果输出到文件,使用重定向“>”而不要-w参数。 -F 设置输出raw数据的格式,默认为libpcap。“tshark -F”会列出所有支持的raw格式。 -V 设置将解码结果的细节输出,否则解码结果仅显示一个packet一行的summary。 -x 设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据。 -T 设置解码结果输出的格式,包括text,ps,psml和pdml,默认为text。 -t 设置解码结果的时间格式。“ad”表示带日期的绝对时间,“a”表示不带日期的绝对时间,“r”表示从第一个包到现在的相对时间,“d”表示两个相邻包之间的增量时间(delta)。 -S 在向raw文件输出的同时,将解码结果打印到控制台。 -l 在处理每个包时即时刷新输出。 -X 扩展项。 -q 设置安静的stdout输出(例如做统计时) -z 设置统计参数。 7. 其它 -h 显示命令行帮助。 -v 显示tshark的版本信息。 -o 重载选项。
tshark -s 512 -i eth0 -n -f 'tcp dst port 80' -R 'http.host and http.request.uri' -T fields -e http.host -e http.request.uri -l | tr -d '\t'
下面介绍参数含义:
-s 512 :只抓取前512个字节数据
-i eth0 :捕获eth0网卡
-n :禁止网络对象名称解析
-f 'tcp dst port 80' :只捕捉协议为tcp,目的端口为80的数据包
-R 'http.host and http.request.uri' :过滤出http.host和http.request.uri
-T fields -e http.host -e http.request.uri :打印http.host和http.request.uri
-l :输出到标准输出
3、实时打印当前mysql查询语句
tshark -s 512 -i eth0 -n -f 'tcp dst port 3306' -R 'mysql.query' -T fields -e mysql.query
下面介绍参数含义:
-s 512 :只抓取前512个字节数据
-i eth0 :捕获eth0网卡
-n :禁止网络对象名称解析
-f 'tcp dst port 3306' :只捕捉协议为tcp,目的端口为3306的数据包
-R 'mysql.query' :过滤出mysql.query
-T fields -e mysql.query :打印mysql查询语句
tshark使用-f来指定捕捉包过滤规则,规则与tcpdump一样,可以通过命令man pcap-filter来查得。
tshark使用-R来过滤已捕捉到的包,与界面板wireshark的左上角Filter一致。
Linux网络相关
1.ip addr查看网络信息
2.不能用ifconfig的时候需要安装net-tools包
3.ifup 连接一个网卡,断掉一个网卡 ifdown
4.添加虚拟网卡
[root@bogon ~]# cd /etc/sysconfig/network-scripts/ [root@bogon network-scripts]# cp ifcfg-eno16777736 ifcfg-eno16777736\:0
[root@bogon network-scripts]# vi !$ vi ifcfg-eno16777736\:0
修改网卡配置文件
"ifcfg-eno16777736:0" 19L, 353C written TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno16777736:0 UUID=236aa9fb-d376-43af-9781-a2844479a034 DEVICE=eno16777736:0 ONBOOT=yes IPADDR=10.21.95.123 NETMASK=255.255.255.0
新网卡添加成功
[root@bogon network-scripts]# ifdown eno16777736 && ifup eno16777736 Device 'eno16777736' successfully disconnected. 成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/6) [root@bogon network-scripts]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.21.95.122 netmask 255.255.248.0 broadcast 10.21.95.255 inet6 fe80::20c:29ff:fec1:d18d prefixlen 64 scopeid 0x20<link> ether 00:0c:29:c1:d1:8d txqueuelen 1000 (Ethernet) RX packets 2023896 bytes 1218698819 (1.1 GiB) RX errors 0 dropped 12 overruns 0 frame 0 TX packets 414344 bytes 51499666 (49.1 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno16777736:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.21.95.123 netmask 255.255.255.0 broadcast 10.21.95.255 ether 00:0c:29:c1:d1:8d txqueuelen 1000 (Ethernet) lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 14 bytes 1368 (1.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 14 bytes 1368 (1.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 00:00:00:00:00:00 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0-nic: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether 52:54:00:7c:76:ca txqueuelen 500 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@bogon network-scripts]#
成功ping通
查看网络是否通
[root@bogon network-scripts]# ethtool eno16777736
[root@bogon network-scripts]# mii-tool eno16777736 eno16777736: negotiated 1000baseT-FD flow-control, link ok [root@bogon network-scripts]#
更改主机名
ubuntu@ip-10-23-45-76:/$ hostnamectl set-hostname sunyujun
更改主机名的配置文件
ubuntu@ip-10-23-45-76:~$ cat /etc/hostname ip-10-23-45-76 ubuntu@ip-10-23-45-76:~$
DNS配置文件
ubuntu@ip-10-23-45-76:~$ cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.23.0.2 search cn-north-1.compute.internal ubuntu@ip-10-23-45-76:~$
ubuntu@ip-10-23-45-76:/$ vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
linux hosts 文件
ubuntu@ip-10-23-45-76:/$ cat /etc/hosts 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts ubuntu@ip-10-23-45-76:/$
firewalld和netfilter
1.临时关闭运行setenforce 0,永久关闭selinux需要编辑配置文件
[root@bogon ~]# vim /etc/selinux/config [root@bogon ~]#
2.设置配置文件SELINUX=disabled保存退出
3.用getenforce查看
[root@bogon ~]# getenforce Disabled [root@bogon ~]#
4.关闭firewalld开机启动
[root@bogon ~]# systemctl disable firewalld [root@bogon ~]#
5.关闭firewalld服务
[root@bogon ~]# systemctl stop firewalld [root@bogon ~]#
6.安装iptables服务
[root@bogon ~]# yum install -y iptables-services
7.开启netfilter服务
[root@bogon ~]# systemctl enable ip ip6tables.service iprinit.service iprutils.target iptables.service iprdump.service iprupdate.service ipsec.service [root@bogon ~]# systemctl enable iptables Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service. [root@bogon ~]# systemctl start iptables [root@bogon ~]#
8.查看iptables防火墙的默认规则
[root@bogon ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 79568 195M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 12367 2538K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 73815 packets, 4971K bytes) pkts bytes target prot opt in out source destination [root@bogon ~]#