计算机网络基础三

news/2024/10/21 4:58:07/
课程目标
        理解路由表的作用
        能够读懂路由表信息
        能够使用图形抓包工具 wireshark 进行数据包的抓取 ,如( TCP/IP 的三次握手四次断开)

一、路由表

思考:
什么是交换,什么是路由,什么是路由表?1. 交换是指同网络访问(两台机器连在同一个交换机上,配置同网段的不同ip就可以直接迅)2. 路由就是跨网络访问(路径选择)3. 路由表是记录路由信息的表,在Linux中⾸先是⼀张可见的,可更改的表,它的作⽤就是当数据包发到Linux的时候 ,系统(或者说内核)就根据这张表中定义好的信息来决定这个数据包接下来该怎么⾛

1. 查看路由表信息

route 命令用来查看和设置路由表信息
[root @server ~ ] # route -n         //查看路由表信息
Kernel         IP         routing         table
Destination         Gateway         Genmask          Flags    Metric    Ref         Use Iface
192.168.0.0         0.0.0.0         255.255.255.0         U         0         0            0 eth1
10.1.1.0               0.0.0.0         255.255.255.0         U         0         0            0 eth0
0.0.0.0                10.1.1.254         0.0.0.0                 UG       0         0            0 eth0
目标网络                 网关              子网掩码        路由标志                           网卡
                                                                               Up : 启动状态
                                                                               UG : 该网关为路由器
113.28.10.34

 2. 读懂路由信息

讨论 1
按上面的路由表来看,如果我 ping 一个公网 IP (如 ping 14.200.151.38 ) ,应该怎么走 ?
1 ) 先看目标 ip 是否为本地 ip ,如果是,则直接访问本地 ; 如果不是,则找路由表里是否有你访问的网段 .
2 ) 如果路由表有则从这个路由条目后面指定的网卡出去;如果路由表里没有你访问的网段,则会找默认路由
(也就是网关)。
3 ) 如果网关也没有的话,则会报错网络不可达。
connect : Network is unreachable
讨论 2
按上面的路由表来看,如果我 ping 一个局域网 IP 10.1.1.10 ,会怎么走 ?
ping 10.1.1.10 不会走网关,而是走本地路由从 eth0 网卡出去(因为路由表里有 10.1.1.0 / 24 的路由)。
讨论 3
如何加网关和删除网关,加网关有什么要求 ?
route add default gw x.x.x.x                  临时加网关,马上生效
route del default gw x.x.x.x                   临时删网关,马上生效
永久增加网关:
vim           / etc / sysconfig / network-scripts / ifcfg-eth0
GATEWAY = x.x.x.x
或者
vim          / etc / rc.local         操作系统开机最后读取的一个文件
..
route add default gw xxxxx
注意事项:
1. 加网关只能加你已经有的路由网段里的一个 IP 才行(此 IP 不一定存在)
2. 加网关可以不用指定子网掩码(因为是已有的一个网段的 ip ,所以掩码已经确认了 )
讨论 4
一个 linux 服务器上能有几个有效网关 ?
准确来说:一个路由表上可以加多个网关,但只有一个生效。
讨论 5
我一台 linux 上如果有双物理网卡,请问可不可以两个网卡配置同网段的不同 IP ?
eth0 10.1.1.1 / 24
eth1 10.1.1.2 / 24
如果两个网卡同网段,则会有下面两条路由
10.1.1.0         0.0.0.0         255.255.255.0          U          0         0         0 eth0
10.1.1.0         0.0.0.0         255.255.255.0          U          0         0         0 eth1
结果:
它会实现从两张网卡进来的包,却从一张网卡出去,问题就产生了。假设 eth0 网卡有问题时,路由表里匹配到第一条后,依 然会走 eth0 网卡,而不会走 eth1
也有解决方法(比如多路由表或者双网卡绑定),这里不涉及。

二、路由选择实验

1. route命令介绍

route - n         查看路由 , 显示 ip, 不解析
route del default gw 10.1.1.254          删除默认路由
route add default gw 192.168.1.110          添加一个默认网关,把所有不知道的网络交给网关来转发
route add - net 192.168.2.0 / 24 dev eth0          对一个网络添加一个新的路由(另一个网段)
route del - net 192.168.2.0 /

 2. 实验要求

前提条件:三台虚拟主机的网络模式都是仅主机模式!
环境准备:
node1 : 10.1.1.1 / 24
作为网关服务器,开启路由转发功能 / proc / sys / net / ipv4 / ip_forward
node2 : 192.168.0.254 / 24
node3 : 172.16.0.254 / 24
要求:
实现不同网络 ( 172.16.0.0 / 24 192.168.0.0 / 24 ) 之间的互通,使用第三方主机 node1 作为路由进行转发

3. 具体步骤

思路:
1. 中间人node1,必须开启路由转发功能;
2. 中间人node1即要有到达A网络,又能到达C网络的路
3. node2主机(A网络)必须设置中间人node1作为自己的网关
4. node3主机(C网络)必须设置中间人node1作为自己的网关

步骤:
1. node1 服务器(中间人)完成以下任务
1 )开启路由转发功能
临时开启:
[root @server ~ ] # cat /proc/sys/net/ipv4/ip_forward
0
[root @server ~ ] # echo 1 > /proc/sys/net/ipv4/ip_forward
[root @server ~ ] # cat /proc/sys/net/ipv4/ip_forward
1
永久开启:
[root @server ~ ] # vim /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
2 )分别添加到 node2 node3 两台主机所在的网络
[root @node1 ~ ] # route add -net 192.168.0.0/24 dev eth0
[root @node1 ~ ] # route add -net 172.16.0.0/24 dev eth0
[root @node1 ~ ] # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
2. 分别配置 node2 node3 IP 和网关
[root @node2 ~ ] # route add -net 10.1.1.0/24 dev eth0
[root @node2 ~ ] # route add default gw 10.1.1.1
[root @node3 ~ ] # route add -net 10.1.1.0/24 dev eth0
[root @node3 ~ ] # route add default gw 10.1.1.1
3. 测试验证
1 )中间主机分别 ping node2 node3
2 node2 node3 相互 ping

4. 实战组建局域网

思科模拟器交换机配置相关命令:

进入到使能模式
Switch > ?
Switch > enable
进入配置终端
Switch #?
Switch #configure terminal
创建 vlan
Switch (config) #vlan 10
删除 vlan
Switch (config) #no vlan 10
进入指定的配置接口
Switch (config) #interface FastEthernet0/1
或者
Switch (config) #int fa0/1
fa0 / 1 接口加入到 vlan
Switch (config-if) #switchport access vlan 10
vlan 中删除接口
Switch (config-if) #no switchport access vlan 10
 4.1 交换机vlan划分

4.2 路由器连接多个网络

三、抓包工具

1. wireshark工具

安装 wireshark 工具
# yum -y install wireshark*

telnet 登录包:
telnet: 远程管理服务 tcp/23
server 10.1.1.5 telnet-server
client 10.1.1.1 telnet 使用: telnet 10.1.1.1
Centos6 .5 系统:
1. 安装软件包
yum - y install telnet-server telnet
2. 启动 telnet 服务
vim / etc / xinetd.d / telnet
service telnet
{
                disable = yes yes 变为 no
                flags = REUSE
                socket_type = stream
                wait = no
                user = root
                server = / usr / sbin / in .telnetd
                log_on_failure += USERID
}
启动服务:
service xinetd start
检查 telnet 服务是否启动:
[root @node1 Desktop] # netstat -nltp|grep 23
tcp         0         0 ::: 23                  :::*                  LISTEN
5546 / xinetd
Centos7 .5 系统:
1. 安装软件包
yum - y install telnet-server
2. 启动服务
[root @centos7 ~ ] # systemctl start telnet.socket
[root @centos7 ~ ] # netstat -nltp|grep :23
tcp6          0         0 ::: 23                  :::*          LISTEN 1 / systemd
3. 测试验证        

2. tcpdump工具  

查看 arp 缓存 (同一网段主机的 MAC 地址)
[root @node1 Desktop] # arp -n
Address         HWtype         HWaddress                 Flags Mask         Iface
10.1.1.254         ether          00 : 50 : 56 : c0 : 00 : 01          C                         eth0
删除目标主机的 MAC 缓存
[root @node1 Desktop] # arp -d 10.1.1.254
[root @node1 Desktop] # arp -n
Address                 HWtype HWaddress         Flags Mask                 Iface
10.1.1.254                          (incomplete)                                               eth0
查看主机 10.1.1.1 收到的和发送的数据包
[root @node1 Desktop] # tcpdump -i eth0 -nn host 10.1.1.1
tcpdump : verbose output suppressed, use - v or - vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
22 : 33 : 25.148389 ARP, Request who-has 10.1.1.254 tell 10.1.1.1 , length 28
22 : 33 : 25.148896 ARP, Reply 10.1.1.254 is-at 00 : 50 : 56 : c0 : 00 : 01 , length 46
22 : 33 : 30.714605 IP 10.1.1.254 > 10.1.1.1 : ICMP echo request, id 1 , seq 237 , length 40
22 : 33 : 30.714619 IP 10.1.1.1 > 10.1.1.254 : ICMP echo reply, id 1 , seq 237 , length 40
- i 指定网络接口,对于多个网络接口有用
- n 显示 IP 地址,不查主机名。当 DNS 不起作用时常用到这个参数
- nn 不显示协议和端口名。即显示 IP 地址和端口
- w 将抓的包保存到指定的文件里方便后续分析
其他用法:
man   tcpdump
TCP  Packets
The general format of a tcp protocol line is :
                                src > dst : flags data-seqno ack window urgent options
                        Src and dst are the source and destination IP addresses and ports. Flags are some combination of S
                        (SYN), F (FIN), P (PUSH), R (RST), W (ECN CWR) or E (ECN-Echo), or a single . (no flags).
1. 获取主机 10.1.1.1 接收或发出的 telnet
#tcpdump tcp port 23 and host 10.1.1.1
2. 对本机的 udp 协议的 123 端口进行监听( 123 ntp 服务端口)
# tcpdump udp port 123
3. 只对 hostname 的主机的通信数据包进行监视。主机名可以是本地主机,也可以是网络上的任何一台计算机。
下面的命令可以查看主机 hostname 发送的所有数据:
#tcpdump -i eth0 src host hostname
#tcpdump -i eth0 src host 10.1.1.254
4. 下面的命令可以查看所有送到主机 hostname 的数据包:
#tcpdump -i eth0 dst host hostname
#tcpdump -i eth0 dst host 10.1.1.1
5. 监视通过指定网关的数据包:
#tcpdump -i eth0 gateway Gatewayname
#tcpdump -i eth0 gateway 10.1.1.254
6. 其他
只需要列出送到 80 端口的数据包,用 dst port
#tcpdump –i eth0 host hostname and dst port 80 // 目的端口是 80
只需要看到返回 80 端口的数据包,用 src port
#tcpdump –i eth0 host hostname and src port 80 // 源端口是 80, 一般是提供 http 的服务的主机
如果条件很多的话要在条件之前加 and or not
#tcpdump -i eth0 host ! 210.161.223.70 and ! 210.161.223.71 and dst port 80

http://www.ppmy.cn/news/1184054.html

相关文章

前端 nfc读取扇区参数

背景: 由于各种厂商不同,有些厂商写卡有一下其他不支持的地方。所以由客户端读取扇区。网上参数很不详细,这边的经验希望能帮到大家。 前端-安卓读取前端-sdk(我这边对接的是feishu,应该类似于小程序) 资料好难找,看网上只有部分…

精讲双向链表的销毁

相信大家各位学习双向链表的时候对链表的销毁,都或多或少有些小疑惑,我到底是传一级指针还是传二级指针 木关系,这些都是小意思,今天我将为大家share 一下关于到底如何进行正确传指针 对于链表是销毁其实就是对链表进行一个结点一…

【算法|动态规划 | 01背包问题No.1】AcWing 426. 开心的金明

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【AcWing算法提高学习专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程&a…

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远控介绍及界面编写

红队专题 招募六边形战士队员[1]远控介绍及界面编写1.远程控制软件演示及教程简要说明主程序可执行程序 服务端生成器主机上线服务端程序 和 服务文件管理CMD进程服务自启动主程序主对话框操作菜单列表框配置信息 多线程操作非模式对话框 2.环境:3.界面编程新建项目…

瀑布模型和敏捷开发

软件的生命周期自从应用程序的上线和发版之后服务于客户。程序员进入公司的项目组之后所接触到的系统项目有二次开发中和从零开始搭建的项目。项目有项目组的开发和验收周期。软件的设计模式遵循瀑布模型和敏捷开发。瀑布模型的软件设计模式在项目的一开始的搭建组成阶段需要招…

python随手小练10(南农作业题)

题目1: 编写程序,输出1~1000之间所有能被4整除,但是不能被5整除的数 具体操作: for i in range(1,1000): #循环遍历1~999,因为range是左闭右开if (i % 4 0) and (i % 5 ! 0) :print(i) 结果展示: 题目2&…

深度学习使用Keras进行多分类

之前的文章介绍了使用Keras解决二分类问题。那么对于多分类问题该怎么解决?本文介绍利用深度学习----Keras进行多分类。 1. 准备数据集 为了演示,本次选用了博文keras系列︱图像多分类训练与利用bottleneck features进行微调(三)中提到的数据集,原始的数据集将所有类别的…

【实用网站分享】

1、PyDebloatX https://pydebloatx.com/pydebloatx 是一种用于 Windows 操作系统的 Python 脚本,用于卸载 Windows 10 系统中的预装应用和系统组件,以便提高系统性能和释放磁盘空间。它是 Debloat Windows 10 脚本的一个分支,但具有更友好和…