netstat
netstat命令用于显示与IP、TCP、UDP和ICMP合同相关的统计数据,通常用于检验本机各端口的网路联接情况。
netstat是在内核中访问网路及相关信息的程序,它可以显示路由表、实际的网路联接以及每一个网路插口设备的状态信息。
句型
netstat[-acCeFghilMnNoprstuvVwx][-A][--ip]
参数说明:
-a或--all显示所有连线中的Socket。
-A或--列举该网路类型连线中的相关地址。
-c或--continuous持续列举网路状态。
-C或--cache显示路由器配置的快取信息。
-e或--extend显示网路其他相关信息。
-F或--fib显示FIB。
-g或--groups显示多重广播功能群组班委名单。
-h或--help在线帮助。
-i或--interfaces显示网路界面信息表单。
-l或--listening显示监控中的服务器的Socket。
-M或--masquerade显示伪装的网路连线。
-n或--numeric直接使用IP地址,而不通过域名服务器。
-N或--netlink或--symbolic显示网路硬件外围设备的符号联接名称。
-o或--timers显示计时器。
-p或--programs显示正在使用Socket的程序辨识码和程序名称。
-r或--route显示RoutingTable。
-s或--statistics显示网路工作信息统计表。
-t或--tcp显示TCP传输合同的连线状况。
-u或--udp显示UDP传输合同的连线状况。
-v或--verbose显示指令执行过程。
-V或--version显示版本信息。
-w或--raw显示RAW传输合同的连线状况。
-x或--unix此参数的疗效和指定”-Aunix”参数相同。
--ip或--inet此参数的疗效和指定”-Ainet”参数相同。
帮助菜单:
调用疗效:
netstat的输出结果可以分为两个部份
1、ActiveInternetconnections有源网路联接,其中”Recv-Q”和”Send-Q”指接收队列和发送队列。这种数字通常都应当是0。倘若不是则表示数据包正在队列中堆积。此类情况只能在特别少的情况看见。
2、ActiveUNIXdomainsockets有源Unix域套插口(和网路套接字一样,而且只能用于本机通讯LINUX 删除目录,性能可以提升一倍)。
列名解释:
Proto:显示联接使用的合同。
RefCnt:表示联接到本套插口上的进程号。
Types:显示套插口的类型。
State:显示套插口当前的状态。
Path:表示联接到套插口的其它进程使用的路径名。
Linux服务器上11种网路联接状态:
状态说明:
LISTEN:侦听来自远方的TCP端口的联接恳求
SYN-SENT:再发送联接恳求后等待匹配的联接恳求(假如有大量这样的状态包,检测是否中招了)
SYN-RECEIVED:再收到和发送一个联接恳求后等待对方对联接恳求的确认(如有大量此状态linux 网络状态命令linux培训学校,恐怕被flood功击了)
ESTABLISHED:代表一个打开的联接
FIN-WAIT-1:等待远程TCP联接中断恳求,或以前的联接中断恳求的确认
FIN-WAIT-2:从远程TCP等待联接中断恳求
CLOSE-WAIT:等待从本地用户发来的联接中断恳求
CLOSING:等待远程TCP对联接中断的确认
LAST-ACK:等待原先的发向远程TCP的联接中断恳求的确认(不是哪些好东西,此项出现,检测是否被功击)
TIME-WAIT:等待足够的时间以确保远程TCP接收到联接中断恳求的确认
CLOSED:没有任何联接状态
ifconfig
ifconfig命令用于显示或设置网路设备。
拿来配置或查看网卡插口
帮助菜单:
参数说明:
add设置网路设备IPv6的IP地址。
del删掉网路设备IPv6的IP地址。
down关掉指定的网路设备。
设置网路设备的类型与硬件地址。
io_addr设置网路设备的I/O地址。
irq设置网路设备的IRQ。
media设置网路设备的媒介类型。
mem_start设置网路设备在主显存所占用的起始地址。
metric指定在估算数据包的转赠次数时,所要加上的数量。
mtu设置网路设备的MTU。
netmask设置网路设备的子网网段。
tunnel构建IPv4与IPv6之间的隧洞通讯地址。
up启动指定的网路设备。
-broadcast即将送往指定地址的数据包当作广播数据包来处理。
-pointopoint与指定地址的网路设备完善直接连线,此模式具有保密功能。
-promisc关掉或启动指定网路设备的promiscuous模式。
[IP地址]指定网路设备的IP地址。
[网路设备]指定网路设备的名称。
常用指令:
启动关掉指定网卡
#ifconfigeth0down
#ifconfigeth0up
为网卡配置和删掉IPv6地址
#ifconfigeth0add33ffe:3240:800:1005::2/64//为网卡设置IPv6地址
#ifconfigeth0del33ffe:3240:800:1005::2/64//为网卡删掉IPv6地址
用ifconfig更改MAC地址
#ifconfigeth0down//关掉网卡
#ifconfigeth0hwether00:AA:BB:CC:DD:EE//更改MAC地址
#ifconfigeth0up//启动网卡
#ifconfigeth1hwether00:1D:1C:1D:1E//关掉网卡并更改MAC地址
#ifconfigeth1up//启动网卡
配置IP地址
#ifconfigeth0192.168.1.56
//给eth0网卡配置IP地址
#ifconfigeth0192.168.1.56netmask255.255.255.0
//给eth0网卡配置IP地址,并加上子网段
#ifconfigeth0192.168.1.56netmask255.255.255.0broadcast192.168.1.255
//给eth0网卡配置IP地址,加上子网段,加上个广播地址
启用和关掉ARP合同
#ifconfigeth0arp//开启
#ifconfigeth0-arp//关掉
设置最大传输单元
#ifconfigeth0mtu1500
//设置能通过的最大数据包大小为1500bytes
调用疗效:
#eth0:网卡名称
#Linkencap:网卡的插口类型,这儿是以太网
#HWaddr:网卡的硬件地址,也称的MAC地址
#inetaddr:IPv4地址,倘若是IPv6会写成inet6addr
#Bcast:广播地址
#Mask:子网网段
#UP:表示网卡是开启状态
#BROADCAST:表示网卡支持广播
#RUNNING:表示网卡的网线早已被接上
#MULTICAST:表示网卡支持组播
#MTU:网路最大传输单元
#Metric:抵达网段的测度值,测度值供个别操作系统所用,用于估算一条路由的成本。该选项可用于为插口创建的路由表分配测度值。路由信息合同(RIP)借助测度值来建立网路路由表。ifconfig所用的默认测度值是0。倘若不运行RIP程序,就没必要采用这个选项。假如要运行RIP程序,就尽量不要改变这个默认的测度值。
#RXpackets:网路从启动到现今为止接收的数据包大小,单位是字节,error发生错误的数据包,dropped被遗弃的数据包
#TXpackets:网路从启动到现今为止发送的数据包大小,单位是字节,error发生错误的数据包,dropped被遗弃的数据包
#collisions:发生碰撞的数据包,倘若发生太多次,表明网路状况不太好
#txqueuelen:传输数据的缓冲区的存储宽度
#RXbytes:总接收字节总数
#TXbytes:总发送字节总数
#Memory:网卡硬件的显存地址
假如你的网卡早已完成配置却还是未能与其它设备通讯,这么从RX和TX的显示数据上可以简单地剖析一下故障缘由。在这些情况下,假如你看见接收和传送的包的计数(packets)降低,那有可能是系统的IP地址出现了混乱;假如你看见大量的错误(errors)和冲突(Collisions),这么这很有可能是网路的传输介质出了问题,比如网线不通或hub毁坏。
为单个网卡配置多个IP地址
有时须要为某个设备插口配置多个IP地址,办法是使用设备别称linux 网络状态命令,比如,eth0设备可以有eth0,eth0:0,eth0:1….多某些名,每位都可以有一个独立的IP地址:
ifconfigeth0210.34.6.89netmask255.255.255.128broadcast210.34.6.127
ifconfigeth0:0210.34.6.88netmask255.255.255.128broadcast210.34.6.127
这样,210.34.6.89和210.34.6.88就会被绑定在eth0设备上,使用同样的网路设备,不同的IP地址。
Iptables
防火墙分类
①包过滤防火墙(packfiltering)在网路层对数据包进行选择过滤,采用访问控制列表(Accesscontroltable-ACL)检测数据流的源地址,目的地址,源和目的端口,IP等信息。
②代理服务器型防火墙
iptables(以下简称iptables)是nuix/linux系统自带的基于包过滤的防火墙工具、它的功能非常强悍、使用特别灵活、可以对流入、流出及流经服务器的数据包进行精细的控制。可以在低配置服务器下流畅运行。
Iptables是linux2.4及2.6内核中集成的服务、其功能与安全性比老一辈ipvfwadm、ipchanins强悍的多、一般觉得iptables工作在OSI七层的、二、三层、四层。
iptables虽然不是真正的防火墙,我们可以把它理解成一个顾客端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名子叫netfilter
netfilter才是防火墙真正的安全框架(framework),netfilter坐落内核空间。
iptables虽然是一个命令行工具,坐落用户空间,我们用这个工具操作真正的框架。
netfilter/iptables(下文中简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以取代高昂的商业防火墙解决方案,完成封包过滤、封包重定向和网路地址转换(NAT)等功能。
Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:
网路地址转换(NetworkAddressTranslate)数据包内容更改以及数据包过滤的防火墙功能
iptables名词和术语
Netfileter/iptables是表(tables)的容器,表(tables)是链的容器,链(chains)是规则(Policys)的容器,规则是iptables一系列过滤信息和具体操作方式。
①规则(rules):网路管理员预定义的条件
②链(chains):是数据包传播的路径
③表(tables):外置3个表filter表,nat表,mangle表分别用于实现包过滤网路地址转换和包构建的功能
Iptables是采取数据包过滤机制工作的,所以它会对恳求的数据包的鄂尔多斯数据进行剖析、并按照我们预先设定的规则进行匹配来决定是否可以步入、流出、流经主机
iptables步入主机进行过滤的流程图
防火墙规则的执行次序觉得从前到后依次执行、遇到匹配的规则就不在继续向上检测、
假如遇见不匹配的规则则会继续向上进行。重点:匹配上了拒接规则也是匹配。
iptables,按照功能和表的定义界定、最常用的有三个表,分别是filter,natmangle.其中每位表又有各自包含不同的操作链(chains),见右图。
filter表
和主机自身相关、负责防火墙(过滤本机流入、流出数据包)。
是iptables默认使用的表、这个表定义了三个链(chains)说明如下
INPUT
负责过滤所有目标地址是主机(防火墙)地址的数据包、通俗的讲、就是过滤步入主机的数据包。
FORWARD
负责转发流经主机但不步入本机的数据包、起转发作用、和NAT表关系很大、后面会详尽介绍
OUTPUT
处理所有原地址是本机地址的数据包、通俗的讲就是处理从主机发出去的数据包。
对于filter表的控制是我们实现本机防火墙功能的重要手段。
nat表
是网路地址转换的意思。即负责来源与目的IP地址和port的转换、和主机本身无关。通常用于局域网多人共享上网或则外网IP映射内网IP及不同端口转换服务等功能。Nat表的功能很重要、这个表定义了三个链(chains)
OUTPUT
主机发出去的数据包有关、在数据包路由之前改变主机形成的数据包的目的地址等。
PREROUTING
在数据包刚抵达防火墙时、进行路由判定之前执行的规则、改变包的目的地址(DNAT功能)、端口等(浅显比喻,就是收信时、根据规则重画寄件人的地址、这看起来不地道啊、)把公司IP映射到局域网的机器上、此链多用于把外部IP地址端口的服务、映射为内部IP地址及端口
POSTROUTING
在数据包离开防火墙时进行路由判定以后执行的规则、改变包的源地址(SNAT)、端口等(浅显比喻、就是写信时写好发件人的地址、要让人家回信是能否有地址可回)刺链多用于局域网共享上网,把所有局域网的地址、转换为网段地址上
mangle表
主要负责更改数据包中特殊的路由标记,如TTL、TOS、MARK等、这个表定义了5个链(chains)
因为这个表与特殊路由标记有关、一般在生产运维工作中、我们极少用到这个mangle表。我们就不做详尽介绍了
帮助菜单:
调用疗效(未配置防火墙):
常用配置命令:
(1)查看本机关于IPTABLES的设置情况
iptables-L-n
(2)消除原有规则
iptables–F###消除所有规则
iptables–X####删掉用户自定义的链
iptables–Z####链的计数器清零
提示:默认情况下,我们消除规则是对filter表的操作、如果是nat表、我们须要iptables–tnat–F
(3)保存配置
这种配置如同用命令配置IP一样,重起都会丧失作用,可通过以下指令保存.
/etc/rc.d/init.d/iptablessave
这样就可以讲到/etc/sysconfig/iptables文件里了.写入杂记得把防火墙重起一下,能够起作用.
serviceiptablesrestart
(4)设定预设规则
[root@tp~]#iptables-PINPUTDROP
[root@tp~]#iptables-POUTPUTACCEPT
[root@tp~]#iptables-PFORWARDDROP
里面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包如何处理呢,那就是DROP(舍弃).应当说这样配置是很安全的.我们要控制流入数据包
而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包如何办呢,那就是通过.
(5)添加规则.
首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写须要ACCETP(通过)的链
为了能采用远程SSH登入,我们要开启22端口.
[root@tp~]#iptables-AINPUT-ptcp--dport22-jACCEPT
[root@tp~]#iptables-AOUTPUT-ptcp--sport22-jACCEPT(注:这个规则,假如你把OUTPUT设置成DROP的就要写上这一部,很多人都是望了写这一部规则造成,一直未能SSH.在远程一下,是不是好了.
其他的端口也一样,倘若开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:
[root@tp~]#iptables-AOUTPUT-ptcp--sport80-jACCEPT,其他同理.)
假如做了WEB服务器,开启80端口.
[root@tp~]#iptables-AINPUT-ptcp--dport80-jACCEPT
假如做了电邮服务器,开启25,110端口.
[root@tp~]#iptables-AINPUT-ptcp--dport110-jACCEPT
[root@tp~]#iptables-AINPUT-ptcp--dport25-jACCEPT
假如做了FTP服务器,开启21端口
[root@tp~]#iptables-AINPUT-ptcp--dport21-jACCEPT
[root@tp~]#iptables-AINPUT-ptcp--dport20-jACCEPT
假如做了DNS服务器,开启53端口
[root@tp~]#iptables-AINPUT-ptcp--dport53-jACCEPT
假如你还做了其他的服务器,须要开启那个端口,照写就行了.
里面主要写的都是INPUT链,但凡不在里面的规则里的,都DROP
容许icmp包通过,也就是容许ping,
[root@tp~]#iptables-AOUTPUT-picmp-jACCEPT(OUTPUT设置成DROP的话)
[root@tp~]#iptables-AINPUT-picmp-jACCEPT(INPUT设置成DROP的话)
只容许192.168.0.3的机器进行SSH联接
[root@tp~]#iptables-AINPUT-s192.168.0.3-ptcp--dport22-jACCEPT
假如要容许,或限制一段IP地址可用192.168.0.0/24表示192.168.0.1-255端的所有IP.
24表示子网网段数.但要记得把/etc/sysconfig/iptables里的这一行删了.
-AINPUT-ptcp-mtcp--dport22-jACCEPT由于它表示所有地址都可以登录.
或采用命令形式,删掉规则:
[root@tp~]#iptables-DINPUT-ptcp--dport22-jACCEPT
之后保存,我再说一边,反是采用命令的形式,只在当时生效,倘若想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.
[root@tp~]#/etc/rc.d/init.d/iptablessave
这样写!192.168.0.3表示不仅192.168.0.3的ip地址
其他的规则联接也一样那么设置.
参考:
netstat
ifconfig
iptables