平常运维1w、vmstat、

w查看系统负载
html

date 查看当前系统的时间
mysql

w查看系统负载linux

第一行,从左面开始显示的信息依次为:时间,系统运行时间,登陆用户数,平均负载。ios

第二行,开始以及下面全部的行,告诉咱们的信息是,当前登陆的都有哪些用户,以及他们是从哪里登陆的等等。咱们最应该关注的应该是第一行中的 ‘load average:’ 后面的三个数值。nginx

DN}NLENLAASWY2D(JGKTKKY.png

第一个数值表示1分钟内系统的平均负载值;第二个数值表示5分钟内系统的平均负载值;第三个数值表示15分钟系统的平均负载值。web

这个值的意义是,单位时间段内CPU活动进程数。固然这个值越大就说明你的服务器压力越大。sql

通常状况下这个值只要不超过服务器的cpu数量就没有关系,若是服务器cpu数量为1,那么这个值若小于1,就说明当前服务器没有压力,不然就要关注一下了
vim


查看逻辑cpu命令:cat /proc/cpuinfo  看第一行processor 若是是0就证实他有1个cpu 是2就证实他有3个cpu 逻辑cpu不是物理cpu
centos

image.png


vmstat命令缓存

vmstat:监控系统的状态

w查看的是系统总体上的负载,经过看那个数值能够知道当前系统有没有压力,可是具体是哪里(CPU, 内存,磁盘等)有压力就没法判断了。经过 vmstat 就能够知道具体是哪里有压力

image.png


命令:vmstat 1 每1秒以动态的形式显示一次 按ctrl+c结束。也能够后边跟一个数字,表明只显示的次数,例如:vmstat 1 5 这个就是每一秒显示1次只让他显示5次,以下图:

wKiom1lxvwuSb73qAAEMSplZ7GU915.png


每一列分别表示什么意思:重点关注:r、b、swpd、si、so、bi、bo、us、wa。

M8BQRVF(4[VTR7VKW70{FPX.png

1.procs 显示进程相关信息

r :表示运行和等待cpu时间片的进程数,若是长期大于服务器cpu的个数,则说明cpu不够用了;

b :表示等待资源的进程数,好比等待I/O, 内存等,这列的值若是长时间大于1,则须要关注一下了;

2.memory 内存相关信息

swpd :表示切换到交换分区中的内存数量 ;若是他的数值一直在变化那证实他的内存不够了

free :当前空闲的内存数量;

buff :缓冲大小,(即将写入磁盘的);

cache :缓存大小,(从磁盘中读取的);

3.swap 内存交换状况

si :由交换区swap写入到内存的数据量;单位kb

so :由内存写入到交换区的数据量;从内存里出来的

4.io 磁盘使用状况

这两个频繁的变证实他们在频繁的读写

bi :从块设备读取数据的量(读磁盘);从磁盘里出来进入到内存里边去

bo: 从块设备写入数据的量(写磁盘);

5.system 显示采集间隔内发生的中断次数

in :表示在某一时间间隔中观测到的每秒设备中断数;

cs :表示每秒产生的上下文切换次数;

6.CPU 显示cpu的使用状态

us :显示了用户下所花费 cpu 时间的百分比;长时间大于50%说明资源不够了

sy :显示系统自己花费cpu时间百分比;

id :表示cpu处于空闲状态的时间百分比;

wa :表示I/O等待所占用cpu时间百分比;

st :表示被偷走的cpu所占百分比(通常都为0,不用关注);

us+sy+id=100%



top命令

显示进程所占系统资源  q退出来

top命令打印出了不少信息,包括系统负载(loadaverage)、进程数(Tasks)、cpu使用状况、内存使用状况以及交换分区使用状况。

top:这个命令用于动态监控进程所占系统资源,每隔3秒变一次。这个命令的特色是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。

image.png

第一行:跟w命令查看的同样表示:时间,系统运行时间,几个用户登陆,系统负载

第二行:进程状态。total进程总数,running进程运行数,sleeping休眠的进程,stopped中止的进程,zombie僵尸进程

第三行:cpu百分比。

第四行:物理内存。total总内存数值,free剩余内存,used使用大小,

第五行:交换分区。


你关注的也就是几项:%CPU, %MEM, COMMAND

image.png

%CPU:为CPU使用状况,默认状况下按cpu使用情排序

RES:物理内存大小(单位:KiB)

COMMAND:进程名字

%MEM:为使用内存百分比。在 top 状态下,按 “shift + m”, 能够按照内存使用大小排序。shift+p换回来。

image.png

按数字 ‘1’ 能够列出全部cpu的使用状态。%Cpu(s)证实是一颗cpu

image.png

image.png


命令:top -c 查看具体的命令全局路径以及使用状况

image.png

命令:top -bn1 静态的显示全局的系统资源使用状况。通常在写脚本的时候使用。



sar监控系统状态

安装sar命令:
yum install -y sysstat

生成的历史文件所在的目录

ls /var/log/sa
sar的特性是每10分钟他会把系统的状态过滤一遍保存在历史文件里,这个历史文件正好在/var/log/sa目录里,这个文件下的历史记录只能保持一个月
还有一个ls /var/log/sar 他们的区别是/var/log/sa是个二进制文件你不能用cat来查看它的内容,而/var/log/sar能查看内容,次日才会生成前一天的sar


命令:sar -n DEV 查看网卡流量

加上参数:sar -n DEV 1 3  每1秒钟显示一次,一共显示3次

image.png

IFACE这列表示设备名称

rxpck/s 表示每秒接收到的包的数量,几千是正常的,上万不正常

txpck/s 表示每秒发送出去的包的数量,

rxbyt/s 表示每秒收取的数据量(单位Byte),

txbyt/s表示每秒发送的数据量。


命令:-f   指定查看看指定某一天网卡流量历史。

例如:sar -n DEV -f /var/log/sa/sa07  查看7号的流量,后边sa07指的是那一天的,sar会以日期号为结尾保存,最多保存一个月的。

image.png


命令:sar -q 查看历史负载   sar -q -f /var/log/sa07查看指定某天的负载

YT(@MAPJW]RSC1R0A$LNQ(P.png

6V4%8Q}8DK6RHU9$_9{QJ72.png


命令:sar -b 查看磁盘的(读写)

[root@aaa-01 ~]# sar -b 1 3
Linux 3.10.0-693.el7.x86_64 (aaa-01) 	2018年06月07日 	_x86_64_	(1 CPU)

21时05分59秒       tps      rtps      wtps   bread/s   bwrtn/s
21时06分00秒      0.00      0.00      0.00      0.00      0.00
21时06分01秒      0.00      0.00      0.00      0.00      0.00
21时06分02秒      0.00      0.00      0.00      0.00      0.00
平均时间:      0.00      0.00      0.00      0.00      0.00



nload命令

nload动态的显示网卡的页面

先安装:两个包,yum install -y epel-release yum install -y nload


直接敲命令:nload

第一行,网卡的数量,按左右方向键能够切换网卡,按 q 退出。

image.png

第二行,一次是,当前值、平均值、最小值、最大值。

image.png

一般咱们买带宽都是买出去的带宽

M6H$8H4VQB$HSNB}0@K}TMS.png



监控io性能

命令:iostat -x   磁盘使用 主要查看%util 这个是显示你等待磁盘io的百分比

[root@aaa-01 ~]# iostat -x
Linux 3.10.0-693.el7.x86_64 (aaa-01) 	2018年06月08日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.05    0.00    0.13    0.03    0.00   99.79

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.00     0.01    0.21    0.12     5.52     3.37    53.41     0.01   16.08    7.57   30.30   2.26   0.08
sdb               0.00     0.00    0.00    0.00     0.06     0.00    45.16     0.00    2.25    2.25    0.00   2.06   0.00
scd0              0.00     0.00    0.00    0.00     0.03     0.00   114.22     0.00   25.22   25.22    0.00  23.89   0.00


命令:iotop   动态排序显示进程使用io的状况,安装yum install -y iotop

image.png

   


free 查看内存使用状况

命令:free 直接回车,能够显示当前系统的总内存大小以及使用内存的状况

U)$ZJF}I1AM[@XZKXKWNZHV.png


数据的流向不同,内存使用的角色也不同,由于磁盘与cpu互相传数据会很慢,因此先把数据放到内存里,而后再从内存里读取数据
cache:磁盘(000:数据)→内存(cache)→CPU 
buff:CPU(000数据)→内存(buffer)→磁盘


命令:free -m 指定它显示的单位为兆

[root@aaa-01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            984         126         528           6         329         674
Swap:          2047           0        2047

命令:free -h 在具体的数字后边加上单位

[root@aaa-01 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           984M        126M        528M        6.8M        329M        674M
Swap:          2.0G          0B        2.0G

公式:total=used+free+buff/cache    总用量=已用量+剩余+缓冲/缓存

avaliable包含free和buff/cache没用完剩余部分



ps 查看系统进程

命令:ps aux  把你系统里边全部的进程列出来

命令:ps aux |grep 检查系统中一个进程有没有运行。例如:ps aux |grep nginx、ps aux |grep mysql

wKioL1lzETWziOIeAACHm6a1E5E535.png

命令:ps aux |grep -c 查看一个进程的数量。

命令:ps -elf  结果跟ps aux类似

PID :进程的id,这个id颇有用,在linux中内核管理进程就得靠pid来识别和管理某一个程,好比我想终止某一个进程,则用 ‘kill进程的pid 有时并不能杀掉,则须要加一个-9选项了 kill -9 进程pid

STAT :表示进程的状态,进程状态分为如下几种(不要求记住,但要了解)

D:不能中断的进程(一般为IO)

R:run正在运行中的进程

S:sleep已经中断的进程,一般状况下,系统中大部分进程都是这个状态

T:经中止或者暂停的进程,若是咱们正在运行一个命令,好比说 sleep 10 若是咱们按一下ctrl -z 让他暂停,那么咱们用ps查看就会显示T这个状态

W:这个好像是说,从内核2.6xx 之后,表示为没有足够的内存页分配

X:已经死掉的进程(这个好像历来不会出现)

Z:僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。若是太多,就有问题了。通常不会出现。

<:高优先级进程

N:低优先级进程

L:在内存中被锁了内存分页

s:主进程

l:多线程进程。有一个进程有多个线程。

+表明在前台运行的进程

线程由一个大的进程组成的,一个进程里边有多个线程



netstat 监控系统状态

netstat:查看网络状态,查看tcpip的一个状态

命令:netstat -lnp 显示当前系统监听着哪些端口

[root@aaa-01 ~]# netstat -nlp
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:22              0.0.0.0:*               LISTEN      893/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      998/master          
tcp6       0      0 :::22                   :::*                    LISTEN      893/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      998/master          
udp        0      0 127.0.0.1:323           0.0.0.0:*                           546/chronyd         
udp6       0      0 ::1:323                 :::*                                546/chronyd         
raw6       0      0 :::58                   :::*                    7           590/NetworkManager


命令:netstat -an 查看系统全部网络链接情况


命令:netstat -lntp 只看tcp的,不包含socket

[root@aaa-01 ~]# netstat -ltnp
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:22              0.0.0.0:*               LISTEN      893/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      998/master          
tcp6       0      0 :::22                   :::*                    LISTEN      893/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      998/master


命令:netstat -lunp只查看udp的

[root@aaa-01 ~]# netstat -lunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 127.0.0.1:323           0.0.0.0:*                           546/chronyd         
udp6       0      0 ::1:323                 :::*                                546/chronyd


命令:ss -an 跟netstat殊途同归,缺点是不能显示进程的名字。

状态:TIME_WAIT 客户端与服务端两台机器,相互通讯完以后,他们的连接还没断开,处于一种相互等待的状态,等待这两个机器再一次链接传输数据

命令:netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'  查看全部状态用数字列出来

wKioL1lzIpXynh2nAADEvWC24ac696.png

若是ESTABLISHED很大,证实你的系统很忙,这个数据表示有多少个客户端在和服务端进行通讯

LRFVFV1[@)IXL}4L(S1VPH1.png



tcptump 抓包工具

安装:yum install -y tcpdump

在你判断你的服务器上有流量***时,使用抓包工具来抓一下包,就知道那些IP在***你了。


命令:tcpdump -nn 两个n表示IP地址和端口号,不加-nn的话它显示的是名字,你分不清是哪一个。

image.png

image.png

命令:tcpdump -nn -i ens33 加上网卡的名字

命令:tcpdump -nn port 指定端口,例如ens33网卡的22端口,tcpdump -nn -i ens33 port 22

命令:tcpdump -nn not port 不要某个端口,例如ens33网卡的22端口,tcpdump -nn -i ens33 not port 22

命令:tcpdump -nn -i ens33 not port  22 and host 192.168.0.100  不要某个端口而且只要一个指定IP的。

命令:tcpdump -nn -c 指定抓包的个数。好比只要100个:tcpdump -nn -i ens33 -c 100


命令:tcpdump -nn -w 把抓到的包存到一个文件里去(文件名字能够本身取)。例如:tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap

[root@aaa-01 ~]# tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
10 packets captured
10 packets received by filter
0 packets dropped by kernel

能够用file命令查看它的信息,可是不能查看内容:file /tmp/1.cap

[root@aaa-01 ~]# file /tmp/1.cap
/tmp/1.cap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 262144)

tcpdump -r /etc/1.cop,能够查看文件内容,由于他是一个数据包,因此它显示的只是一些数据的流向

[root@aaa-01 ~]# tcpdump -r /tmp/1.cap 
reading from file /tmp/1.cap, link-type EN10MB (Ethernet)
19:08:27.654122 IP aaa-01.ssh > 192.168.232.1.53070: Flags [P.], seq 2889311389:2889311537, ack 3110138182, win 274, length 148
19:08:27.654290 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [.], ack 148, win 254, length 0
19:08:59.507789 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [P.], seq 1:69, ack 148, win 254, length 68
19:08:59.508025 IP aaa-01.ssh > 192.168.232.1.53070: Flags [P.], seq 148:216, ack 69, win 274, length 68
19:08:59.553682 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [P.], seq 69:169, ack 216, win 254, length 100
19:08:59.553749 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [P.], seq 169:237, ack 216, win 254, length 68
19:08:59.553971 IP aaa-01.ssh > 192.168.232.1.53070: Flags [.], ack 237, win 274, length 0
19:08:59.563115 IP aaa-01.ssh > 192.168.232.1.53070: Flags [P.], seq 216:268, ack 237, win 274, length 52
19:08:59.570663 IP aaa-01.ssh > 192.168.232.1.53070: Flags [P.], seq 268:384, ack 237, win 274, length 116
19:08:59.570876 IP 192.168.232.1.53070 > aaa-01.ssh: Flags [.], ack 384, win 253, length 0
[root@aaa-01 ~]#


tshark抓包工具(须要记住)

安装:yum install -y wireshark

命令:tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"   能够查看指定网卡80端口web访问的状况。本身的实验虚拟机是抓不到的由于他没有80端口的服务

[root@aaa-01 ~]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri" 
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'bluetooth0'



linux 网络相关

命令:ifconfig 查看默认网卡ip  须要安装包:(yum install net-tools)

命令:ifconfig -a 在你网卡被当(down)掉不显示时,或者没有ip时,它会显示出来。


命令:ifup ens33开启网卡  

命令:ifdown ens33关闭网卡   在咱们编辑一个网卡而且不想让全部网卡都从新关闭开启,只须要指定一个网卡关闭重启时再用它

若是咱们远程登陆服务器,当使用ifdown eth0这个命令的时候,颇有可能后面的命令ifup eth0不会被运行,这样致使咱们断网而没法链接服务器,因此请尽可能使用 service network restart 这个命令来重启网卡。


命令:ifdown ens33 && ifup ens33 一次性关闭并重启网卡,为了安全起见能够这样结合使用

[root@aaa-01 ~]# ifdown ens33 && ifup ens33
成功断开设备 'ens33'。
链接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/6)


设定虚拟网卡

例如:设定虚拟网卡ens33:1 

方法:

 第一步,先到网卡所在的目录中去:cd /etc/sysconfig/network-scripts/

 第二步,把ens33拷贝到ens33:1里:cp ifcfg-ens33 ifcfg-ens33\:1

 第三步,编辑配置文件:vi ifcfg-ens33\:1

 第四步,把里边带ens33的改为ens33:1,把ip改一下,网关跟DNS1均可以不要。

 第五步,重启网卡:ifdown ens33 && ifup ens33

 

mii-tool ens33 查看网卡是否链接,显示link ok 证实链接。

[root@aaa-01 network-scripts]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

 ethtool ens33 也能够查看网卡是否链接,最后一行显示yes证实链接。


查看主机名:hostname

 更改主机名:hostnamectl set-hostname aminglinux

配置文件:cat /etc/hostname


DNS配置文件

/etc/resolv.conf

[root@aaa-01 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 119.29.29.29

 

特殊文件:/etc/hosts 

[root@aaa-01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


编辑它的配置文件能够给域名指定IP,vim /etc/hosts

格式:指定IP+域名  例如:192.168.232.140   www.qq.com  一个IP能够指定多个域名,仅仅在本机生效

wKioL1l0YZzzD_jOAADZz-a_XIo360.png

更改前

image.png

更改后

image.png

一个IP能够设置多个域名

image.png



Linux 防火墙

centos六、五、4...使用netfilter防火墙

centos7开始使用firewalld防火墙


netfilter防火墙(centos6以及之前的版本使用的)

命令:getenforce 查看selinux防火墙是否开启

Enforcing表示打开,Permissive表示关闭,其实他只是遇到一些须要阻断是时候他不真正的去阻断,仅仅是有一个提醒,这个提醒咱们是看不到的,他本身会记录。

image.png

selinux临时关闭命令: setenforce 0

[root@aaa-01 ~]# setenforce 0
[root@aaa-01 ~]# getenforce
Permissive


selinux永久关闭

变配置文件:vi /etc/selinux/config   ##把enforcing改为disabled

Q1C83ISUS8N4FAH$U%XV$Q8.png


在centos7上开起netfilter防火墙方法:

命令:getenforce 查看selinux防火墙是否开启

关闭firewalld开启netfilter方法

第一步,不让firewalled开机启动:systemctl disable firewalled

第二步,再把firewalled服务停掉:systemctl stop firewalld

第三步,而后开启netfilter防火墙,开启以前须要安装包:yum install -y iptables-services

第四步,安装完它会产生iptables服务,查看一下:systemctl enable iptables

第五步,开启iptables服务:systemctl start iptables

命令:iptables -nvL 查看它的默认规则

netfilter是防火墙的名字,而iptables只是它的一个工具


netfilter的5个表

filter表用于过滤包,最经常使用的表,包含三个内置的链,有INPUT、FORWARD、OUTPUT三个链

filter 这个表主要用于过滤包的,是系统预设的表,这个表也是用的最多的。内建三个链INPUT、  OUTPUT以及FORWARD。INPUT做用于进入本机的包(数据包进来的时候要通过的一个链,假如把80端口进来的数据包访问我80端口的数据包检查一下它的源IP是什么发现可疑的IP给他禁掉);OUTPUT做用于本机送出的包(对本机送出的包进行操做);FORWARD做用于那些跟  本机无关的包。

nat表用于网络地址转换,有PREROUTING、OUTPUT、POSTROUTING三个链

nat 主要用处是网络地址转换,还能够作端口映射,也有三个链。PREROUTING 链的做用是在包刚刚到达防火墙时改变它的 目的地址,若是须要的话。OUTPUT链改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙以前改变其源地址。

 managle表用于给数据包作标记,几乎用不到

raw表能够实现不追踪某些数据包。

security表在centos6中并无,用于强制访问控制(MAC)的网络规则


iptables传输数据包过程

参考文章:iptables详解

通过本机:PREROUTING > INPUT > 主机 > OUTPUT > POSTROUTING

不通过本机:PREROUTING > FORWARD POSTROUTING

5E8P_JZBBM3SKR4IAM_QO(9.png


数据包流向与netfilter的5个链

 PREROUTING:数据包进入路由表以前

 INPUT:经过路由表后目的地为本机

 FORWARD:经过路由表后,目的地不为本机

 OUTPUT:由本机产生,向外发出

 POSTROUTING:发送到网卡接口以前


iptables 基本语法

 查看iptables默认规则:iptables -nvL

 规则保存地址:cat /etc/sysconfig/iptables 配置文件的路径

 iptables -F 清空规则。 service iptables restart 重启加载回来

 service iptables save 保存规则(把当前的规则保存到配置文件去),由于刚才清空了规则没设置新的规则,因此如今保存他会是空规则

 iptables -t 指定表默认是filter表。iptables -t filter -nvL;iptables -t nat -nvL(nat表的规则是空的)

 iptables -Z 能够把计数器清零,格式:iptables -Z; iptables -nvL

image.png

 

iptables -A 增长一条规则(默认增长到最后边)看下图

 例如:iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 

 解释:-s:指定来源IP   -p:指定协议(tcp、odp、icmp)   --sport:目标端口  -b:目标IP   -j:最后操做   DROP:把数据直接扔掉   REJECT:拒绝 这两个的最终结果都是让这个数据包过不来封掉了这个IP 

 

iptables -I 插入规则。(插入到最前边)例如:iptables -I INPUT -p tcp --dport 80 -j DROP

image.png

 

iptables -D 删除规则。例如删除前两条规则:

[root@aaa-01 ~]# iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP
[root@aaa-01 ~]# iptables -D INPUT -p tcp --dport 80 -j DROP

若是你写的规则好久了记不得了能够用这条命令,它会把规则的序列号打印出来根据序列号删规则。

列出序列号:iptables -nvL --line-numbers
删除指定的规则:iptables -D INPUT 1

Q9$U30O6LO(52Q0{0BN8P~G.png

 

iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP

针对网卡设置规则:iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

 iptables -P INPUT DROP 更改默认规则的。最好不用动!!假如说你更改了链接中断的工具会断开链接,你只能到终端上去把它更改回来:iptables -P INPUT ACCEPT


iptables小案例

image.png 

定义解释器 定义变量名 清空全部规则 把INPUT链收到的数据包扔掉 接受发出去的全部包

先编辑vi /usr/local/sbin/iptables.sh 加入以下内容

 #! /bin/bash

 ipt="/usr/sbin/iptables"  尽可能写全局的绝对路径!

 $ipt -F              把以前的规则清除掉

 $ipt -P INPUT DROP

 $ipt -P OUTPUT ACCEPT

 $ipt -P FORWARD ACCEPT

 $ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

 $ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT

 $ipt -A INPUT -p tcp --dport 80 -j ACCEPT

 $ipt -A INPUT -p tcp --dport 21 -j ACCEPT 

 w查看一下。

 执行一下:sh /usr/local/sbin/iptables.sh 

wKiom1l0iiuw_jWxAAE9OTk8zQU687.png

icmp示例

 命令:iptables -I INPUT -p icmp --icmp-type 8 -j DROP  加上这条规则以后,你能够ping外网,可是外网不能ping你,由于它把icmp的8种类型给DROP掉了



nat表应用

如今有两台机器,A机器有两块网卡一块网卡咱们把它比喻成是外网,另一块网卡是内网,ens33是外网,ens37是内网。

另一台B机器只有一块内网网卡(ens37),它默认是不能连外网的不能跟外网通讯。咱们的需求是让B机器能够连外网,说白了咱们就是要作一个小路由器,路由器能够上网咱们的电脑就能够上网

准备工做:

首先准备两台机器

image.png


第一步,给A机器添加一块网卡

W1I@5XDXKQR}(CAGSB{[IKN.png

image.png

选择LAN区段,就至关于咱们给网卡连到了一个内网的交换机上,这个交换机我们的Windows机器是连不上的,这样的话,咱们这台机器和另一台机器连上同一个内网交换机,它们二者之间通讯

image.png

image.png

给第二台机器添加一块网卡由于咱们已经设置了一块网卡,咱们把它先禁用掉,把启动时连接给断掉,重新增长一块。

image.png

image.png

image.png

这两台机器必须选择同一个LAN区段才能进行内网通讯

image.png

命令行给两台机器上的ens37设置IP,也能够设置配置文件,把ens33网卡配置文件复制一份给ens37

A机器:设置IP,ifconfig ens37 192.168.100.1/24(他只是一个临时的一重启就没有了)

image.png

B机器设置IP,为了保险能够把ens33网卡当掉ifdown ens33

只能在终端上设置IP:ifconfig ens37 192.168.100.100/24

image.png

两台机器互相ping一下内网IP看看能不能ping通

image.png

image.png

而Windows机器是ping不通的

image.png

准备工做作完,下面实验。

A机器两块网卡ens33(192.168.232.132)、ens37(192.168.100.1),ens33能够上外网,ens37仅仅是内部网络。

B机器只有ens37(192.168.100.100),和A机器ens37能够通讯互联。

需求1:可让B机器链接外网

 查看路由转发:cat /proc/sys/net/ipv4/ip_forward 若是是0,咱们须要打开它A机器上打开路由端口转发 echo "1">/proc/sys/net/ipv4/ip_forward

[root@aaa-01 ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@aaa-01 ~]# echo "1">/proc/sys/net/ipv4/ip_forward
[root@aaa-01 ~]# cat /proc/sys/net/ipv4/ip_forward
1

 A上增长一条规则执行:iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

查看一下规则:iptables -t nat -nvL

image.png

 B上设置网关为192.168.100.1 命令:route add default gw 192.168.100.1 查看网关:route -n

image.png

而如今pingA机器IP就通了,这证实他能够跟外网通讯了

image.png

B机器设置一下DNS:vi /etc/resolv.conf    进去了写:nameserver 119.29.29.29

ping一下119.29.29.29  在ping一下www.qq.com

 需求2:C机器只能和A通讯,让C机器能够直接连通B机器的22端口,假如C机器就是咱们的电脑

 第一步,A上打开路由端口转发(由于上边已经作了就能够省略)echo "1">/ proc/sys/net/ipv4/ip_forward

 在A上删掉上一个实验的规则:iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

 A上执行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22(端口转发,进来的包怎么操做)

 A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130(回来的包)

 B上设置网关为192.168.100.1(若是上边实验设置了这一步就能够省略)



iptables规则备份和恢复

 默认保存命令:service iptables save //会把规则保存到/etc/sysconfig/iptables

 指定保存命令:例如,把iptables规则备份到my.ipt文件中,命令:iptables-save > /tmp/my.ipt

 恢复刚才备份的规则命令:iptables-restore < /tmp/my.ipt

相关文章
相关标签/搜索