网络状态和防火墙状态查看命令:netstat、ifconfig、iptables

netstat

netstat 命令用于显示Linux系统网络链接状态。

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 显示Routing Table。

-s或--statistics 显示网络工作信息统计表。

-t或--tcp 显示TCP传输协议的连线状况。

-u或--udp 显示UDP传输协议的连线状况。

-v或--verbose 显示指令执行过程。

-V或--version 显示版本信息。

-w或--raw 显示RAW传输协议的连线状况。

-x或--unix 此参数的效果和指定"-A unix"参数相同。

--ip或--inet 此参数的效果和指定"-A inet"参数相同。

帮助菜单:

 

调用效果:

netstat的输出结果可以分为两个部分

1、Active Internet connections 有源网络连接,其中"Recv-Q"和"Send-Q"指接收队列和发送队列。这些数字一般都应该是0。如果不是则表示数据包正在队列中堆积。这种情况只能在非常少的情况见到。

 

2、Active UNIX domain sockets 有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

列名解释:

Proto:显示连接使用的协议。

RefCnt:表示连接到本套接口上的进程号。

Types:显示套接口的类型。

State:显示套接口当前的状态。

Path:表示连接到套接口的其它进程使用的路径名。

 

Linux服务器上11种网络连接状态:

状态说明:

LISTEN:侦听来自远方的TCP端口的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被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 关闭指定的网络设备。

<hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。

io_addr<I/O地址> 设置网络设备的I/O地址。

irq<IRQ地址> 设置网络设备的IRQ。

media<网络媒介类型> 设置网络设备的媒介类型。

mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。

metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。

mtu<字节> 设置网络设备的MTU。

netmask<子网掩码> 设置网络设备的子网掩码。

tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。

up 启动指定的网络设备。

-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。

-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。

-promisc 关闭或启动指定网络设备的promiscuous模式。

[IP地址] 指定网络设备的IP地址。

[网络设备] 指定网络设备的名称。

 

常用指令:

启动关闭指定网卡

# ifconfig eth0 down

# ifconfig eth0 up

为网卡配置和删除IPv6地址

# ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡设置IPv6地址

 

# ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址

用ifconfig修改MAC地址

# ifconfig eth0 down //关闭网卡

# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址

# ifconfig eth0 up //启动网卡

# ifconfig eth1 hw ether 00:1D:1C:1D:1E //关闭网卡并修改MAC地址

# ifconfig eth1 up //启动网卡

配置IP地址

# ifconfig eth0 192.168.1.56

//给eth0网卡配置IP地址

# ifconfig eth0 192.168.1.56 netmask 255.255.255.0

// 给eth0网卡配置IP地址,并加上子掩码

# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255

// 给eth0网卡配置IP地址,加上子掩码,加上个广播地址

启用和关闭ARP协议

# ifconfig eth0 arp  //开启

# ifconfig eth0 -arp  //关闭

设置最大传输单元

# ifconfig eth0 mtu 1500

//设置能通过的最大数据包大小为 1500 bytes

 

调用效果:

# eth0:网卡名称

# Link encap:网卡的接口类型,这里是以太网

# HWaddr:网卡的硬件地址,俗称的MAC地址

# inet addr:IPv4地址,如果是IPv6会写成inet6 addr

# Bcast:广播地址

# Mask:子网掩码

# UP:表示网卡是开启状态

# BROADCAST:表示网卡支持广播

# RUNNING:表示网卡的网线已经被接上

# MULTICAST:表示网卡支持组播

# MTU:网络最大传输单元

# Metric:到达网关的度量值,度量值供某些操作系统所用,用于计算一条路由的成本。该选项可用于为接口创建的路由表分配度量值。路由信息协议( RIP)利用度量值来构建网络路由表。ifconfig 所用的默认度量值是0。如果不运行RIP 程序,就没必要采用这个选项。如果要运行RIP 程序,就尽量不要改变这个默认的度量值。

# RX packets:网络从启动到现在为止接收的数据包大小,单位是字节,error 发生错误的数据包,dropped 被丢弃的数据包

# TX packets:网络从启动到现在为止发送的数据包大小,单位是字节,error 发生错误的数据包,dropped 被丢弃的数据包

# collisions:发生碰撞的数据包,如果发生太多次,表明网络状况不太好

# txqueuelen:传输数据的缓冲区的储存长度

# RX bytes:总接收字节总量

# TX bytes:总发送字节总量

# Memory:网卡硬件的内存地址

 

如果你的网卡已经完成配置却还是无法与其它设备通信,那么从RX 和TX 的显示数据上可以简单地分析一下故障原因。在这种情况下,如果你看到接收和传送的包的计数(packets)增加,那有可能是系统的IP 地址出现了混乱;如果你看到大量的错误(errors)和冲突(Collisions),那么这很有可能是网络的传输介质出了问题,例如网线不通或hub 损坏。

 

为单个网卡配置多个IP地址

有时需要为某个设备接口配置多个IP 地址,办法是使用设备别名,例如,eth0 设备可以有eth0,eth0:0,eth0:1....多个别名,每个都可以有一个独立的IP 地址:

ifconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127

ifconfig eth0:0 210.34.6.88 netmask 255.255.255.128 broadcast 210.34.6.127

这样,210.34.6.89 和210.34.6.88 都会被绑定在eth0 设备上,使用同样的网络设备,不同的IP 地址。

 

Iptables

防火墙分类

      ①包过滤防火墙(pack filtering)在网络层对数据包进行选择过滤,采用访问控制列表(Access control table-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操作系统核心层内部的一个数据包处理模块,它具有如下功能:

  1. 网络地址转换(Network Address Translate)
  2. 数据包内容修改
  3. 以及数据包过滤的防火墙功能

 

iptables 名词和术语

Netfileter/iptables是表(tables)的容器,表(tables)是链的容器,链(chains)是规则(Policys)的容器,规则是iptables一系列过滤信息和具体操作方法。

      ①规则(rules):网络管理员预定义的条件

      ②链(chains): 是数据包传播的路径

      ③表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能

 

Iptables 是采取数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析、并根据我们预先设定的规则进行匹配来决定是否可以进入、流出、流经主机

iptables 进入主机进行过滤的流程图

防火墙规则的执行顺序认为从前到后依次执行、遇到匹配的规则就不在继续向下检查、

如果遇到不匹配的规则则会继续向下进行。 重点: 匹配上了拒接规则也是匹配。

 

iptables,根据功能和表的定义划分、最常用的有三个表,分别是filter,nat mangle.其中每个表又有各自包含不同的操作链(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 –t nat –F

(3) 保存配置

这些配置就像用命令配置IP一样,重起就会失去作用,可通过以下指令保存.

/etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

service iptables restart

(4)设定预设规则

[root@tp ~]# iptables -P INPUT DROP

[root@tp ~]# iptables -P OUTPUT ACCEPT

[root@tp ~]# iptables -P FORWARD DROP

上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包

而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.

(5)添加规则.

首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链

为了能采用远程SSH登陆,我们要开启22端口.

[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.

其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT ,其他同理.)

如果做了WEB服务器,开启80端口.

[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

如果做了邮件服务器,开启25,110端口.

[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT

[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT

如果做了FTP服务器,开启21端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT

如果做了DNS服务器,开启53端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

如果你还做了其他的服务器,需要开启哪个端口,照写就行了.

上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP

允许icmp包通过,也就是允许ping,

[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)

[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT  (INPUT设置成DROP的话)

只允许192.168.0.3的机器进行SSH连接

[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.

或采用命令方式,删除规则:

[root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT

然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.

[root@tp ~]# /etc/rc.d/init.d/iptables save

这样写 !192.168.0.3 表示除了192.168.0.3的ip地址

其他的规则连接也一样这么设置.

 

 

参考:

netstat

https://blog.csdn.net/dongl890426/article/details/86981901

ifconfig

http://m.chinabyte.com/network/191/12287691_gfh.shtml

iptables

www.zsythink.net/archives/1199

https://www.cnblogs.com/alimac/p/5848372.html

https://www.cnblogs.com/liang2580/articles/8400140.html

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值