Linux基础篇学习——Linux网络管理

TCP/IP七层模型

应用层(http,https,ftp)

  • 为应用程序提供服务

表示层

  • 数据格式转化(把应用程序的数据转化为网络数据)

会话层

  • 建立、维护、终止会话

传输层

  • 提供端到端的数据交换机制,流量控制,数据包分割、排序
  • 端口 0~65535
  • socket
  • TCP/UDP协议
    TCP可靠传输,UDP不可靠传输

网络层(三层交换,路由器,IP地址,NAT技术)

  • 把网络地址转化为物理地址,路由选择
  • 无检错、修正机制
  • IP协议
    32个二进制位组成,点分十进制 0.0.0.0~255.255.255.255

数据链路层(MAC地址,二层交换)

  • 把不可靠的物理线路的传输转化为可靠传输
  • 物理地址寻址,数据的成帧,流量控制,数据的检错、重发
  • 以太网协议
  • MAC地址
  • 广播
    ARP协议

物理层

  • 同轴电缆,双绞线,网卡
    将上层的数字信号转换为比特流进行传输

子网划分

查看

三次握手,四次挥手

查看

网络管理命令

netstat 显示本机网络连接、运行端口和路由表等信息

-a 系统中所有网络连接 包括:已经连接的网络服务、监听的网络服务和Socket套接字
-t TCP连接
-u UDP连接
-l 列出正在监听的网络服务 不包括已经连接的网络服务
-n 显示服务对应的端口
-p 列出该服务的进程PID
-s 按各个协议进行统计
-c 每隔一段时间,自动执行该命令
-r 路由信息

  1. netstat -tunlp
[root@zycentos7 ~]# netstat -tunlp
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      6872/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7029/master
tcp6       0      0 :::21                   :::*                    LISTEN      21637/vsftpd
tcp6       0      0 :::22                   :::*                    LISTEN      6872/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      7029/master
表项 含义
Proto 数据包的协议,分为TCP和UDP
Recv-Q 已在本地缓存未被进程取走的数据包数量
Send-Q 对方未收到或未回复的仍在本地缓冲区的数据包数量
Local Address 本地IP:端口 通过端口可以知道本机开启了哪些服务
Foreign Address 远程主机:端口
State 连接状态 ESTABLISED | LISTEN
PID/Program name 进程ID/进程命令
  1. netstat -na
[root@zycentos7 ~]# netstat -na
……
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     34150    /var/run/vmware/guestServicePipe
……
表项 含义
Proto 协议,一般为unix
RefCnt 连接到此Socket的进程数量
Flags 连接标识
Type Socket访问类型
State 连接状态,已经建立连接(ESTABLISED)和监听两种状态(LISTEN)
I-Node 程序文件的Inode号
Path Socket程序的路径,或者相关数据的输出路径
  1. netstat -route 查看路由表
[root@zycentos7 ~]# netstat -route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
192.168.232.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

练习1 列出所有的端口,包括监听的和未监听的

[root@zycentos7 ~]# netstat -a

练习2 列出所有的tcp协议的端口

[root@zycentos7 ~]# netstat -t

练习3 寻找特定程序sshd运行的端口

[root@zycentos7 ~]# netstat -nltp|grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6872/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      6872/sshd

练习4 寻找特定端口对应的程序

[root@zycentos7 ~]# netstat -nltp|grep 6872
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6872/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      6872/sshd

练习5 查看本机路由信息

[root@zycentos7 ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 ens33
192.168.232.0   0.0.0.0         255.255.255.0   U         0 0          0 ens33

ss 配置网络或显示当前网络接口状态

在Linux下,如果连接数比较大,可以使用效率更高的ss来替代netstat

 ss [options] [ FILTER ]

-a 所有状态的连接
-t TCP连接
-u UDP连接
-l 监听状态
-e 显示扩展信息
-m 显示套接连接使用的内存信息
-n 显示服务对应的端口
-o 状态
-p 进程及PID
练习1 查看所有TCP协议的连接

[root@zycentos7 ~]# ss -ta
State       Recv-Q Send-Q Local Address:Port                 Peer Address:Port                                                                            
LISTEN      0      128       *:ssh                     *:*
LISTEN      0      100    127.0.0.1:smtp                    *:*                                                                                           
ESTAB       0      36     192.168.232.125:ssh                  192.168.232.1:24                                                                           735
ESTAB       0      0      192.168.232.125:ssh                  192.168.232.1:24                                                                           736
LISTEN      0      32       :::ftp                    :::*
LISTEN      0      128      :::ssh                    :::*
LISTEN      0      100     ::1:smtp                   :::*

练习2 查看所有协议监听以及列出进程号

[root@zycentos7 ~]# ss -nltup
Netid  State      Recv-Q Send-Q                             Local Address:Port                                            Peer Address:Port
tcp    LISTEN     0      128                                            *:22                                                         *:*                   users:(("sshd",pid=6872,fd=3))
tcp    LISTEN     0      100                                    127.0.0.1:25                                                         *:*                   users:(("master",pid=7029,fd=13))
tcp    LISTEN     0      32                                            :::21                                                        :::*                   users:(("vsftpd",pid=21637,fd=4))
tcp    LISTEN     0      128                                           :::22                                                        :::*                   users:(("sshd",pid=6872,fd=4))
tcp    LISTEN     0      100                                          ::1:25                                                        :::*                   users:(("master",pid=7029,fd=14))

练习3 查看所有基于ssh建立连接信息

[root@zycentos7 ~]# ss -o state established ' ( dport = :ssh or sport = :ssh ) '
Netid  Recv-Q Send-Q                                Local Address:Port                                                 Peer Address:Port
tcp    0      36                                  192.168.232.125:ssh                                                 192.168.232.1:24735                 timer:(on,236ms,0)
tcp    0      0                                   192.168.232.125:ssh                                                 192.168.232.1:24736                 timer:(keepalive,76min,0)

tarceroute、mtr 获取当前主机到目标主机所经过的路由(网关)

[root@zycentos7 ~]# traceroute 192.168.232.2
traceroute to 192.168.232.2 (192.168.232.2), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  *^C

mtr参数

-r 以报告模式显示
-s 指定ping数据包的大小
-c 设置每秒发送数据包的数量,默认10
-n no-dns不对IP地址做域名解析
-a 设置发送数据包的IP地址
-i 设置ICMP返回时间,默认1s
-4 IPv4
-6 IPv6

[root@zycentos7 ~]# mtr www.baidu.com
 My traceroute  [v0.85]
zycentos7 (0.0.0.0)                                                                                                              Mon Nov 18 20:10:38 2019
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                                                                     Packets               Pings
 Host                                                                                                          Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 192.168.232.2                                                                                               0.0%    38    0.2   0.5   0.2   6.7   1.0
表项 含义
Host P地址和本机域名
Loss% 每个对应IP的丢包率
Snt 每秒发送数据包的数量
Last 最近一次的返回时延
Avg 发送ping包的平均时延
Best 最短时延
Wrst 最长时延
StDev 标准偏差

telnet 远程登录,探测端口

telnet服务 25端口

[root@localhost ~]# ps -ef|grep nginx
root      22109      1  0 21:33 ?        00:00:00 nginx: master process ./ngin
nobody    22110  22109  0 21:33 ?        00:00:00 nginx: worker process
[root@localhost ~]# curl 192.168.232.111
……
<title>Welcome to nginx!</title>
……

[root@zycentos7 ~]# telnet 192.168.232.111 80
Trying 192.168.232.111...
Connected to 192.168.232.111.
Escape character is '^]'.

HTTP/1.1 400 Bad Request
Server: nginx/1.17.5
Date: Sun, 17 Nov 2019 14:29:33 GMT
Content-Type: text/html
Content-Length: 157
Connection: close
……
Connection closed by foreign host.

wget 从网络上自动下载文件

-O filename 指定下载后保存在本地的文件名
-r 递归下载目录及其子目录,生成目录结构
-rnd --no-directories,将下载所有的文件放到当前目录,不生成目录结构
-rnH 生成的目录结构去掉第一级
-r --cut-dirs=num 生成目录结构的级数,与-rnH连用会再少1级
-r --level=num 下载目录递归的深度,level设置为0或inf时,表示无限递归,默认的递归深度为5
-limit-rate=num 配置下载的速度,单位是B/s, 可以自己设置单位–limit-rate=20k
-o file 将wget的下载输出信息写入file文件中
-a file 将wget的下载输出信息追加到file文件中
-c 支持断点续传 下载大文件
- -no-rmove-listing 将目录清单保存为.listing隐藏文件
-q wget执行时,不输出任何提示信息
-t num 当网络不好等情况时,wget重试的次数,默认20次,num为0或inf时,表示重试无限次

搭建FTP服务器

systemctl stop firewalld	;关闭防火墙
setenforce 0
yum install vsftpd -y	;安装vsftpd
systemctl start vsftpd	;启动

[root@zycentos7 pub]# ps -ef|grep vsftpd
root      21637      1  0 18:30 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[root@zycentos7 ~]# cd /var/ftp/pub
[root@zycentos7 pub]# mkdir test
[root@zycentos7 pub]# cd test/
[root@zycentos7 test]# touch file{01..10}
[root@zycentos7 test]# dd if=/dev/zero of=test.tar.gz bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 25.9099 s, 40.5 MB/s
[root@zycentos7 test]# ls
file01  file03  file05  file07  file09  test.tar.gz
file02  file04  file06  file08  file10

在这里插入图片描述

wget练习

wget -r

[root@zycentos7 tmp]# wget -r ftp://192.168.232.125/pub/apple/
[root@zycentos7 tmp]# tree 192.168.232.125/
192.168.232.125/
└── pub
    └── apple
        └── banana
            ├── file
            └── test

5 directories, 0 files

wget -rnd

[root@zycentos7 tmp]# tree /var/ftp/pub/apple/
/var/ftp/pub/apple/
├── banana
│   ├── file
│   ├── file2
│   └── test
└── file1
[root@zycentos7 tmp]# wget -rnd ftp://192.168.232.125/pub/apple/
[root@zycentos7 tmp]# ls
file1  file2

wget -rnH

[root@zycentos7 tmp]# wget -rnH ftp://192.168.232.125/pub/apple/
[root@zycentos7 tmp]# tree pub/
pub/
└── apple
    ├── banana
    │   ├── file
    │   ├── file2
    │   └── test
    └── file1

查看下载进度 tail -f wget-log
练习1 使用wget下载单个文件
从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条,包含下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间

[root@zycentos7 tmp]# wget ftp://192.168.232.125/pub/test/file01
--2019-11-18 20:48:39--  ftp://192.168.232.125/pub/test/file01
           => ‘file01’
Connecting to 192.168.232.125:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /pub/test ... done.
==> SIZE file01 ... done.
==> PASV ... done.    ==> RETR file01 ... done.

    [ <=>                                  ] 0           --.-K/s   in 0s

2019-11-18 20:48:39 (0.00 B/s) - ‘file01’ saved [0]
[root@zycentos7 tmp]# ls
file01

练习2 使用wget -O下载并以不同的文件名保存

[root@zycentos7 tmp]# wget -O ybc ftp://192.168.232.125/pub/test/file01
[root@zycentos7 tmp]# ls
file01  ybc

练习3 使用wget --limit-rate限速下载
当执行wget的时候,它默认会占用全部宽带下载

[root@zycentos7 tmp]# wget --limit-rate=300K ftp://192.168.232.125/pub/test/file06
--2019-11-18 20:57:20--  ftp://192.168.232.125/pub/test/file06
           => ‘file06’
Connecting to 192.168.232.125:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /pub/test ... done.
==> SIZE file06 ... 20971520
==> PASV ... done.    ==> RETR file06 ... done.
Length: 20971520 (20M) (unauthoritative)

100%[==========================================>] 20,971,520   311KB/s   in 68s

2019-11-18 20:58:28 (301 KB/s) - ‘file06’ saved [20971520]

练习4 使用wget -c断点续传
使用wget -c重新启动下载中断的文件,对于下载大文件时突然由于网络等原因中断有所帮助

[root@zycentos7 tmp]# wget -c --limit-rate=1M ftp://192.168.232.125/pub/test/file06
--2019-11-18 21:04:25--  ftp://192.168.232.125/pub/test/file06
……
30% [===========>                               ] 6,291,456   1024KB/s  eta 15s    ^C
[root@zycentos7 tmp]# wget -c --limit-rate=1M ftp://192.168.232.125/pub/test/file06
--2019-11-18 21:04:42--  ftp://192.168.232.125/pub/test/file06
……
100%[++++++++++++===============================>] 20,971,520  1.00MB/s   in 7.2s
2019-11-18 21:04:49 (1.00 MB/s) - ‘file06’ saved [20971520]

练习5 使用wget -b后台下载
对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载

[root@zycentos7 tmp]# wget -b ftp://192.168.232.125/pub/test/file06
Continuing in background, pid 30213.
Output will be written to ‘wget-log’.
[root@zycentos7 tmp]# ls
file06  wget-log

练习6 使用wget --spider测试下载链接是否有效

【在以下几种情况下使用spider参数】
1.定时下载之前进行检查
2.间接检测网站是否可用
3.检查网站页面的死链接

[root@zycentos7 tmp]# wget --spider ftp://192.168.232.125/pub/test/file03
--2019-11-18 21:16:13--  ftp://192.168.232.125/pub/test/file03
           => ‘file03’
Connecting to 192.168.232.125:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /pub/test ... done.
==> SIZE file03 ... done.
==> PASV ... done.    --2019-11-18 21:16:13--  ftp://192.168.232.125/pub/test/file03
           => ‘.listing’
==> CWD (1) /pub/test ... done.
==> PASV ... done.    ==> LIST ... done.

    [ <=>                                       ] 830         --.-K/s   in 0s

Removed ‘.listing’.

File ‘file03’ exists.

练习7 使用wget --tries增加重试次数
如果网络有问题下载一个大文件有可能失败,wget默认重试20次连接下载文件,可以使用–tries增加重试次数

[root@zycentos7 tmp]# wget --tries=40 ftp://192.168.232.125/pub/test/file03

练习8 使用wget -i下载多个文件

[root@zycentos7 tmp]# cat filelist.txt
ftp://192.168.232.125/pub/test/file01
……
ftp://192.168.232.125/pub/test/file10
[root@zycentos7 file]# wget -i filelist.txt
[root@zycentos7 file]# ls
file01  file03  file04  file05  file07  file08  file09  file10  filelist.txt

练习9 使用wget --mirror下载整个镜像网站

wget --mirror -p --convert-links -P ./LOCAL URL
参数 含义
--miror 镜像下载
-p 下载所有为了html页面显示正常的文件
–convert-links 下载后,转换成本地的链接
-P ./LOCAL 保存所有文件和目录到本地指定目录

练习10 使用wget -o把下载信息存入日志文件
不希望下载信息直接显示在终端

[root@zycentos7 tmp]# wget -o download.log ftp://192.168.232.125/pub/test/file10

练习11 使用wget -Q限制总下载文件大小
递归下载时有效,超过下载配额也会下载完当前文件,下一个文件不再下载

[root@zycentos7 tmp]# wget -rQ 5M ftp://192.168.232.125/pub/apple/
……
FINISHED --2019-11-20 10:26:39--
Total wall clock time: 0.04s
Downloaded: 3 files, 6.0M in 0.02s (267 MB/s)
Download quota of 5.0M EXCEEDED!

练习12 使用wget FTP下载
wget ftp-url
使用wget用户名和密码认证的ftp下载
wget --ftp-user=USERNAME --ftp-password=PASSWORD url


scp linux系统之间上传下载

参数 含义
-r 递归
-o -o StrictHostKeyChecking=no 不提示,直接把对方的公钥保存到.ssh/known_hosts
-q 静默模式,不输出提示
-p 保留原文件时间戳、权限信息
-l 限速,单位k
-p参数:
[root@zycentos7 test]# ll file01
-rwxr-xr-x. 1 root root 0 Nov 21 20:05 file01
[root@zycentos7 test]# scp -p file01 192.168.232.111:/root

[root@localhost ~]# ll file01
-rwxr-xr-x. 1 root root 0 Nov 21 20:05 file01
远程下载:
[root@zycentos7 ~]# scp -r 192.168.232.111:/root/test /root
用指定用户下载:
[root@zycentos7 ~]# scp -r [email protected]:/root/test /root

Linux系统的网络配置

ifconfig 查询、设置网卡与IP网络等相关参数

MTU 网络最大传输单元
ifconfig设置的参数都是临时生效,重启网卡后即失效

yum install net-tools

练习1 查看所有的网络接口

ifconfig

练习2 列出ens33网卡的信息

ifconfig ens33

练习3 修改ens36网卡ip、gayeway、netmask、broadcast

[root@zycentos7 ~]# ifconfig ens36 192.168.232.88 gateway 192.168.232.2 netmask 255.255.255.0 broadcast 92.168.232.255

练习4 设置mtu

[root@zycentos7 ~]# ifconfig ens36 mtu 800

练习5 绑定IP

[root@zycentos7 ~]# ifconfig ens33:10 192.168.232.201
[root@zycentos7 ~]# ifconfig ens33:10
ens33:10: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.232.101  netmask 255.255.255.0  broadcast 192.168.232.255
        ether 00:0c:29:5d:ae:cb  txqueuelen 1000  (Ethernet)
[root@zycentos7 ~]# ip a|grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.232.125/24 brd 192.168.232.255 scope global ens33
    inet 192.168.232.101/24 brd 192.168.232.255 scope global secondary ens33:10

练习6 关闭网卡

[root@zycentos7 ~]# ifconfig ens33:10 down	
[root@zycentos7 ~]# ifconfig ens33:10 up	;绑定的IP ifconfig down后失效,需重新绑定
SIOCSIFFLAGS: Cannot assign requested address

ifup、ifdown 开启/关闭网卡

只对在 /etc/sysconfig/network-script/ 目录下有对应配置文件的网卡起作用

ifup eth0
ifdown eth0

route 查看配置路由表

练习1 查看路由

[root@zycentos7 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.232.2   0.0.0.0         UG    0      0        0 ens33
表项 含义
Destination 目标网络或目标主机,0.0.0.0代表默认网关
Gateway 网关地址,0.0.0.0表示当前记录对应的 Destination 跟本机在同一个网段
Genmask Destination 字段的网络掩码,Destination 是主机时需要设为 255.255.255.255,是默认路由时会设置为 0.0.0.0
Flags 标记
U:该路由是启动的
H:目标是一台主机而非网络
G:需要通过外部的主机来传递数据包
R:使用动态路由时,恢复路由标志
D:动态路由
Metric 路由距离,到达指定网络所需的中转数
Ref 路由项引用次数
Use 此路由项被路由软件查找的次数。
Iface 网卡名字
route add -net 10.0.0.0/24 dev ens33
route add -n 10.0.0.20 dev ens33
route add -n 10.0.0.20 gw 192.168.232.2 dev ens33
route del -net 10.0.0.0/24 dev ens33

练习2 添加/删除默认路由
ifconfig绑定新ip地址后centos7会自动添加对应网关到route表,不需要手动添加网关即可ping通

route {add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev]
参数 含义
-net 后面接的路由为一个网域
-host 连接到单部主机的路由
netmask 设定 netmask 决定网域的大小
gw gateway,后接IP数值
dev 指定网卡

练习3 添加/删除默认网关路由

 route {add | del } default gw {IP-ADDRESS} {INTERFACE-NAME}

IP-ADDRESS:用于指定路由器(网关)的IP地址。
INTERFACE-NAME:用于指定接口名称,如eth0。

route add/del default gw 192.168.1.1 eth0

练习4 添加/删除到指定网络的路由规则

route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}

NETWORK-ADDRESS:用于指定网络地址。
NETMASK:用于指定子网掩码。
INTERFACE-NAME:用于指定接口名称,如eth0。

route add/del -net 192.168.1.0 netmask 255.255.255.0 dev eth0

练习5 添加/删除路由到指定网络为不可达
设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达

route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} reject

NETWORK-ADDRESS:用于指定网络地址。
NETMASK:用于指定子网掩码。

route add/del -net 10.0.0.0 netmask 255.0.0.0 reject
路由选择分析

当TCP/IP需要向某个IP地址发起通信时,它会对路由表进行评估,以确定如何发送数据包。评估过程如下:

  1. TCP/IP使用需要通信的目的IP地址和路由表中每一个路由项的网络掩码进行相与计算,如果相与后的结果匹配对应路由项的网络地址,则记录下此路由项。
  2. 当计算完路由表中所有的路由项后,
    (a) TCP/IP选择记录下的路由项中的最长匹配路由(网络掩码中具有最多“1”位的路由项)来和此目的IP地址进行通信。
    (b) 如果存在多个最长匹配路由,那么选择具有最低跃点数的路由项。
    (c) 如果存在多个具有最低跃点数的最长匹配路由,那么:均根据最长匹配路由所对应的网络接口在网络连接的高级设置中的绑定优先级来决定(一般有线(eth0) > 无线 (wlan0) > 移动信号(4G))。
    (d) 如果优先级一致,则选择最开始找到的最长匹配路由。(排在前面的路由)

ip

-s 显示出设备的统计数据
ip link 设置与设备有关的相关参数MTU、MAC等,启动或关闭某一个网络接口
addr/address 多个IP的实现
route 与路由有关的相关设置
练习1 显示本机所有的接口信息

ip link show
ip link show ens33
ip -s link show ens33

练习2 网卡的启动与关闭

ip link set ens33:1 up/down

练习3 ip命令设置mtu

ip link set ens33 mtu 1000

练习4 修改网卡名与mac
先关闭网卡再设置

ip link set ens33 name aaa
ip link set ens33 address aa:aa:aa:aa:aa:aa

练习5 添加/删除网络接口

ip addr add/del 192.168.42.200/24 dev eth0 label eth0:0

练习6 显示当前的路由信息

ip route show

练习7 添加路由,主要是本机直接可联通的网络

ip addr add 10.0.0.10/24 dev eth0 label eth0:0

练习8 添加静态路由

ip route add 10.0.0.0/24 dev eth0

练习8 增加可以通往外部的路由

ip route add 192.168.192.0/24 via 192.168.42.181 dev eth0

练习9 增加静态路由

ip route add default via 192.168.42.2 dev eth0

练习10 删除路由

ip route del 192.168.192.0/24
ip route del default

网络文件配置

网络配置文件

/etc/sysconfig/network-scripts/ifcfg-ens33

主机名配置文件

【Centos6.8】/etc/sysconfig/hostname
/etc/hostname
【Centos7.6】永久生效,写入配置文件 cat /etc/hostname

hostnamectl set-hostname zhao

静态主机名

hostnamectl set-hostname --static zhao

临时设置

hostname zhao

Linux网络抓包

nmap 检测开放端口

nmap基本功能

  1. 主机发现(Host Discovery)
  2. 端口扫描(Port Scanning)
  3. 版本侦测(Version Detection)
  4. 操作系统侦测(Operating System Detection)

命令用法

Nmap [ 扫描类型 ... ] [ 通用选项 ] { 扫描目标说明 }
扫描类型

-sT TCP connect()扫描 容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息 全开扫描
-sS TCP同步扫描(TCP SYN),又称半开扫描(half-open),很少有系统能够把这记入系统日志
-sP ping扫描,当主机阻塞ICMP echo请求包时ping扫描是无效的,默认进行,只有目标主机处于运行状态,才会进行后续的扫描
-sU UDP服务
-sA ACK扫描,用来穿过防火墙
-b FTP反弹攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描

通用选项

-s 显示出设备的统计数据
-n 不进行反向DNS解析 节省时间
-v 冗余模式,给出扫描过程中的详细信息
-sP ping扫描,用ping方式检查网络上哪些主机正在运行
-p 端口 指定要进行扫描的端口号的范围
-O 获得远程主机的操作系统类型
-A 全面的系统探测
-I 反向扫描

扫描目标说明

-iL filename 从filename文件中读取扫描的目标
-iR 随机挑选主机进行扫描
-p 端口 选择要进行扫描的端口号的范围,如:-p 20-30,139,60000
-exclude 排除指定主机
-excludefile 排除指定文件中的主机

练习1 扫描指定IP开放端口

[root@zycentos7 ~]# nmap -v 192.168.232.125

练习2 检查某网段存活的主机(ping扫苗)

[root@zycentos7 tmp]# nmap -n -sP 192.168.232.0/24

练习3 扫描指定IP的指定端口

[root@zycentos7 ~]# nmap -p 80 192.168.232.125

练习4 探测主机操作系统

[root@zycentos7 ~]# nmap -O 192.168.232.125

练习5 全面的系统探测

[root@zycentos7 ~]# nmap -A 192.168.232.125

练习6 穿透防火墙进行扫描

[root@zycentos7 ~]# nmap -sA 192.168.232.125

练习7 隐蔽扫描(半开扫描)

[root@zycentos7 ~]# nmap -sS 192.168.232.125

练习8 UDP扫描

[root@zycentos7 ~]# nmap -sU 192.168.232.125

练习9 Ident扫描(Ident Scanning)
寻找对于某些进程存在漏洞的电脑,比如,一个以root运行的Linux WEB服务器,如果目标机运行了identd,一个攻击者使用Nmap通过"-I"选项的TCP连接,就可以发现哪个用户拥有http守护进程

[root@zycentos7 ~]# nmap -sT -p 80 -I -O www.baidu.com

tcpdump 筛选抓取数据包

采用命令行方式对接口的数据包进行筛选抓取,默认抓取第一个网络接口,进程终止停止抓包

常用选项

选项 含义
-c # 指定要抓取的包数量
-D 列出可用于抓包的接口
-i interface,指定要监听的接口
-n 不做主机名解析
-nn 不做主机名解析,把端口显示为数值(否则显示端口服务名)
-x/-xx 以16进制和ASCII两种方式同时输出包的头部数据,-xx更详细
-v/-vv/-vvv 分析打印时产生详细的输出,v越多越详细
-e 输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC
-X 把协议头和包内容原文显示
-w 将抓包数据输出到文件中
-r 从给定的数据包文件中读取进行分析

tcpdump -i 找到第一个符合条件的接口,搜寻结束,不指定该选项则从接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口),any 关键字表示所有网络接口
tcpdump -i lo 抓取loopback接口

[root@zycentos7 ~]# tcpdump -i ens33 -e -nn -X -c 1 "port 22"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
21:23:03.017797 00:0c:29:5d:ae:cb > 00:50:56:c0:00:08, ethertype IPv4 (0x0800), length 90: 192.168.232.125.22 > 192.168.232.1.24612: Flags [P.], seq 2055749647:2055749683, ack 2526480855, win 320, length 36
        0x0000:  4510 004c afd1 4000 4006 38fa c0a8 e87d  E..L..@[email protected]....}
        0x0010:  c0a8 e801 0016 6024 7a88 400f 9697 09d7  ......`$z.@.....
        0x0020:  5018 0140 520f 0000 3c8c b800 d611 2c56  P..@R...<.....,V
        0x0030:  18b5 bf21 c061 224f 1b20 7442 f7a3 3417  ...!.a"O..tB..4.
        0x0040:  cdea 0820 010b f23f e5b6 1244            .......?...D
1 packet captured
2 packets received by filter
0 packets dropped by kernel
表项 含义
seq 2055749647:2055749683 序号
ack 2526480855 确认号
win 320 窗口大小
length 36 长度
Flags[ .]选项 含义
P PUSH,传送数据标志
S SYN,发起连接标志
F FIN,关闭连接标志
RST RESET,异常关闭连接
. 表示确认包ack

tcpdump表达式

tcpdump [options] [not] proto dir type
表项 可选
proto ether,ip,ip6,arp,rarp,tcp,udp 没有指定,监听所有
dir src , dst ,dst or src, dst and src(默认)
type host(默认),net,port

表达式单元之间可以使用操作符 and && or || not ! 进行连接
练习1 抓取所有经过网卡1,目的IP为192.168.232.125的网络数据

tcpdump -i ens33 host 192.168.232.125

练习2 抓取所有经过网卡1,目的端口为22的网络数据

tcpdump -i ens33 dst port 22

练习3 抓取所有经过网卡1,协议类型为UDP的网络数据

tcpdump -i ens33 udp

练习4 抓取所有经过22端口的UDP网络数据

tcpdump udp port 22

练习5 抓取所有经过网卡1的SYN类型数据包

tcpdump -i ens33 'tcp[tcpflags] = tcp=syn'

练习6 抓取经过网卡1的所有DNS数据包(默认端口)

tcpdump -i ens33 udp dst portdst port 53

练习7 抓取所有经过网卡1,目的网络是192.168.232.0,但目的主机不是192.168.232.125的TCP数据

tcpdump -i ens33 '((tcp) and ((dst net 192.168.232.0) and (not dst host 192.168.232.125)))'

练习8 抓取所有经过网卡1,目的主机为192.168.232.125的端口22的网络数据并存储

tcpdump -i ens33 dst host 192.168.232.125 and port 22 -w /tmp/tcpdump.cap

练习9 抓取本地环路数据包

tcpdump -i lo udp 抓取UDP数据
tcpdump -i lo udp port 22 抓取端口22的UDP数据
tcpdump -i lo port 22 抓取端口22的数据

观察三次握手和四次挥手

[root@zycentos7 ~]# tty
/dev/pts/1
[root@zycentos7 ~]# tcpdump -i ens33 -e -nn -x host www.baidu.com
[root@zycentos7 ~]# tty
/dev/pts/0
[root@zycentos7 ~]# curl www.baidu.com
行为 源地址--->目的地址 Flags seq ack win options length
第一次握手 192.168.232.125.60672 > 39.156.66.18.80 Flags [S] seq 1667391184 - win 29200 options [mss 1460,sackOK,TS val 23603577 ecr 0,nop,wscale 7] length 0
第二次握手 39.156.66.18.80 > 192.168.232.125.60672 Flags [S.] seq 153638172 ack 1667391185 win 64240 options [mss 1460] length 0
第三次握手 192.168.232.125.60672 > 39.156.66.18.80 Flags [.] - ack 1 win 29200 - length 0
第一次数据传输 192.168.232.125.60672 > 39.156.66.18.80 Flags [P.] seq 1:78 ack 1 win 29200 - length 77
最后一次数据传输 192.168.232.125.60672 > 39.156.66.18.80 Flags [P.] - ack 2782 win 35040 - length 0
第一次挥手 192.168.232.125.60672 > 39.156.66.18.80 Flags [F.] seq 78 ack 2782 win 35040 - length 0
第二次挥手 139.156.66.18.80 > 192.168.232.125.60672 Flags [.] seq 78 ack 79 win 64239 - length 0
第三次挥手 139.156.66.18.80 > 192.168.232.125.60672 Flags [FP.] seq 2782 ack 79 win 64239 - length 0
第四次挥手 192.168.232.125.60672 > 39.156.66.18.80 Flags [.] - ack 2783 35040 - length 0

网络排错

发布了43 篇原创文章 · 获赞 30 · 访问量 5931

猜你喜欢

转载自blog.csdn.net/qq_42049496/article/details/103281905