有两台主机分别为a和b网段,互相ping不通,但是有一台双网卡主机的双网卡对应的IP正好位于a和b网段,双网卡主机可以分别ping通跨网段的这两台主机,此时就可以让这台中间双网卡主机作为数据包转发的“桥梁”,利用路由表,充当路由器的作用。

实验主机:A主机(linux,IP:192.168.2.2)、双网卡主机(win10,IP:192.168.2.3、192.168.3.3)、B主机(linux,IP:192.168.3.2)
实验目的:学习路由表、学习route命令

0x01 路由与路由表概念

路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。路由器根据接收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路层数据包头实现转发数据包。

路由表是指路由器或者其他互联网网络设备上存储的一张路由信息表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。

route命令资料:https://blog.csdn.net/u011857683/article/details/83795435

0x02 实验准备

A主机路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.1     0.0.0.0         UG    100    0        0 ens192
192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 ens192

双网卡主机路由表:
windows双网卡主机路由表
B主机路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.3.1     0.0.0.0         UG    100    0        0 ens192
192.168.3.0     0.0.0.0         255.255.255.0   U     100    0        0 ens192

0x3 添加路由表指向双网卡主机

通讯的拓扑图如下,要想A主机访问B主机,就需要把目的ip 192.168.3.2的流量转发到中间机上,这时候需要在A主机上建立192.168.3.0/24段的路由表。同理,B主机上建立192.168.2.0/24段的路由表,把流量指向中间主机。
A主机(192.168.2.2)<——>中间机(192.168.2.3 eth0<——>内部路由转发——>192.168.3.3 eth1)<——>B主机(192.168.3.2)
A主机添加路由表命令:

route add -net 192.168.3.0/24 gw  192.168.2.3 dev ens192

B主机添加路由表命令:

route add -net 192.168.2.0/24 gw  192.168.3.3 dev ens192

0x04 中间双网卡windows主机开启Routing and Remote Access服务

此时,A访问B的流量会先到中间双网卡主机了,B访问A的流量也会到中间双网卡的主机。但是中间双网卡主机的两个网段之间默认是不通的,此时需要在双网卡windows主机中开启Routing and Remote Access服务
在windows系统中“计算机”上“右击”,选择“计算机管理”,打开“Routing and Remote Access”,选择手工启动,并启动该服务,如图所示:
开启Routing and Remote Access服务
Routing and Remote Access服务简称 RRA服务Routing and Remote Access 是全功能的软件路由器,也是用于路由和互连网络工作的开放平台。它为局域网 (LAN) 和广域网 (WAN) 环境中的商务活动,或使用安全虚拟专用网 (VPN) 连接的 Internet 上的商务活动提供路由选择服务。所以RRA服务可以用于双网卡间的通讯。

如果中间双网卡主机为linux,则开启linux的路由转发。centos7开启路由转发参考如下:
1.临时开启,(写入内存,在内存中开启)

echo "1" > /proc/sys/net/ipv4/ip_forward

2.永久开启,(写入内核)
vim /etc/sysctl.conf
加入此行net.ipv4.ip_forward = 1
sysctl -p # 加载一下,使之生效

0x05 抓包分析

此时两个不同网段的主机即可互相ping通,在A主机192.168.2.2上ping B主机192.168.3.2,对双网卡windows主机的两个网卡分别抓包分析,发现,双网卡windows主机起到的作用就是路由转发。
eth0抓包流量:
eth0网卡抓包
eth1抓包流量:
eth1网卡抓包
eth0网卡上抓包的目的ip的mac地址即为eth0网卡的mac地址,eth1网卡上抓包的源ip的mac地址即为eth1网卡的mac地址,同时TTL值进过路由转发后-1了。

参考文章:
https://www.cnblogs.com/heqiuyong/p/11625668.html
http://www.360doc.com/content/18/0805/15/21175922_775865937.shtml
http://blog.sina.com.cn/s/blog_a04184c101010koc.html
Last modification:January 28th, 2021 at 07:23 pm