Linux 配置路由转发功能测试

news2024/12/24 20:25:28

测试Linux配置路由转发功能。

参考

  1. 手把手带你将 Linux 主机配置为静态路由器
  2. tcpdump详解&实战

环境

操作系统

Centos7.9

网络环境

在这里插入图片描述
1. 三台主机的网卡 enp0s5 均在 10.211.55.0/24 网段,且网络可以通讯

  • centos7-18的IP 10.211.55.18,作为路由服务端
  • centos7-10的IP 10.211.55.10,作为子网连接端
  • centos7-22的IP 10.211.55.22,作为子网连接端

2. 两台子网连接端配置子网IP

  • 主机centos7-10 网卡enp0s5配置子网 192.168.10.100/32(子网一个IP)
  • 主机centos7-22 网卡enp0s5配置子网 172.16.1.200/32(子网一个IP)

3. 配置子网连接端的静态路由

  • 主机centos7-10(192.168.10.100/32),增加访问 172.16.1.200/32 的静态路由
  • 主机centos7-22(172.16.1.200/32),增加访问 192.168.10.100/32 的静态路由

4. 开启路由服务端的路由转发功能

  • 主机centos7-18(10.211.55.18), 配置访问 192.168.10.100172.16.1.200的静态路由
  • 主机centos7-18(10.211.55.18),开启路由转发功能,实现192.168.10.100/32172.16.1.200/32 之间通讯。

测试步骤

1. 配置主机centos7-10

  • 配置子网IP 192.168.10.100
[root@centos7-10 ~]# ip addr add 192.168.10.100 dev enp0s5
[root@centos7-10 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1c:42:ae:b6:41 brd ff:ff:ff:ff:ff:ff
    inet 10.211.55.10/24 brd 10.211.55.255 scope global noprefixroute dynamic enp0s5
       valid_lft 1743sec preferred_lft 1743sec
    inet 192.168.10.100/32 scope global enp0s5
       valid_lft forever preferred_lft forever
    inet6 fdb2:2c26:f4e4:0:cd1f:12f3:4076:6d89/64 scope global noprefixroute dynamic 
       valid_lft 2591943sec preferred_lft 604743sec
    inet6 fe80::7e0c:1902:e1ca:4324/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
  • 配置访问 172.16.1.200 的静态路由
[root@centos7-10 ~]# ip route 172.16.1.200 via 10.211.55.18 dev enp0s5
[root@centos7-10 ~]# ip route
default via 10.211.55.1 dev enp0s5 proto dhcp metric 100 
10.211.55.0/24 dev enp0s5 proto kernel scope link src 10.211.55.10 metric 100 
172.16.1.200 via 10.211.55.18 dev enp0s5 
192.168.10.100 dev enp0s5 proto kernel scope link src 192.168.10.100 metric 100 
[root@centos7-10 ~]# 

2. 配置主机centos7-22

  • 配置子网IP 172.16.1.200
[root@centos7-22 ~]# ip addr add 172.16.1.200 dev enp0s5
[root@centos7-22 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1c:42:44:79:a5 brd ff:ff:ff:ff:ff:ff
    inet 10.211.55.22/24 brd 10.211.55.255 scope global noprefixroute dynamic enp0s5
       valid_lft 1605sec preferred_lft 1605sec
    inet 172.16.1.200/32 scope global enp0s5
       valid_lft forever preferred_lft forever
    inet6 fdb2:2c26:f4e4:0:233e:38df:2cbd:cec1/64 scope global noprefixroute dynamic 
       valid_lft 2591809sec preferred_lft 604609sec
    inet6 fe80::7e0c:1902:e1ca:4324/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::567a:248b:5e94:5d19/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
  • 配置访问 192.168.10.100 的静态路由
[root@centos7-22 ~]# ip route add 192.168.10.100 via 10.211.55.18 dev enp0s5
[root@centos7-22 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1c:42:44:79:a5 brd ff:ff:ff:ff:ff:ff
    inet 10.211.55.22/24 brd 10.211.55.255 scope global noprefixroute dynamic enp0s5
       valid_lft 1565sec preferred_lft 1565sec
    inet 172.16.1.200/32 scope global enp0s5
       valid_lft forever preferred_lft forever
    inet6 fdb2:2c26:f4e4:0:233e:38df:2cbd:cec1/64 scope global noprefixroute dynamic 
       valid_lft 2591768sec preferred_lft 604568sec
    inet6 fe80::7e0c:1902:e1ca:4324/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::567a:248b:5e94:5d19/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

3. 配置主机centos7-18

  • 配置访问 192.168.10.100 和 172.16.1.200 的静态路由
[root@centos7-18 ~]# ip route add 192.168.10.100 via 10.211.55.10 dev enp0s5
[root@centos7-18 ~]# ip route add 172.16.1.200 via 10.211.55.22 dev enp0s5
[root@centos7-18 ~]# ip route
default via 10.211.55.1 dev enp0s5 
10.211.55.0/24 dev enp0s5 proto kernel scope link src 10.211.55.18 
172.16.1.200 via 10.211.55.22 dev enp0s5 
192.168.10.100 via 10.211.55.10 dev enp0s5 
// 查看主机centos7-18的IP配置
[root@centos7-18 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1c:42:60:87:b2 brd ff:ff:ff:ff:ff:ff
    inet 10.211.55.18/24 brd 10.211.55.255 scope global enp0s5
       valid_lft forever preferred_lft forever
    inet6 fdb2:2c26:f4e4:0:21c:42ff:fe60:87b2/64 scope global mngtmpaddr dynamic 
       valid_lft 2591430sec preferred_lft 604230sec
    inet6 fe80::21c:42ff:fe60:87b2/64 scope link 
       valid_lft forever preferred_lft forever

4. 路由转发测试

4.1 关闭路由转发测试
  • centos7-18设置 net.ipv4.ip_forward = 0,关闭路由转发功能
  • centos7-10测试 Ping 172.16.1.200,网络不通
// 设置 net.ipv4.ip_forward = 0,关闭路由转发功能
[root@centos7-18 ~]# sysctl -w net.ipv4.ip_forward=0
net.ipv4.ip_forward = 0
// 测试 192.168.10.100 Ping 172.16.1.200,网络不通
[root@centos7-10 ~]# ping 172.16.1.200 -c5
PING 172.16.1.200 (172.16.1.200) 56(84) bytes of data.

--- 172.16.1.200 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4017ms

[root@centos7-10 ~]# 
4.2 开启路由转发测试
  • centos7-18设置 net.ipv4.ip_forward = 1,开启路由转发功能
  • centos7-10测试 Ping 172.16.1.200,网络通
// 设置 net.ipv4.ip_forward = 1,开启路由转发功能
[root@centos7-18 ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
// 测试 192.168.10.100 Ping 172.16.1.200,网络通
[root@centos7-10 ~]# ping 172.16.1.200 -c5
PING 172.16.1.200 (172.16.1.200) 56(84) bytes of data.
64 bytes from 172.16.1.200: icmp_seq=1 ttl=64 time=0.850 ms
From 10.211.55.18: icmp_seq=2 Redirect Host(New nexthop: 10.211.55.22)
64 bytes from 172.16.1.200: icmp_seq=2 ttl=64 time=0.752 ms
From 10.211.55.18: icmp_seq=3 Redirect Host(New nexthop: 10.211.55.22)
64 bytes from 172.16.1.200: icmp_seq=3 ttl=64 time=0.729 ms
From 10.211.55.18: icmp_seq=4 Redirect Host(New nexthop: 10.211.55.22)
64 bytes from 172.16.1.200: icmp_seq=4 ttl=64 time=0.471 ms
From 10.211.55.18: icmp_seq=5 Redirect Host(New nexthop: 10.211.55.22)
64 bytes from 172.16.1.200: icmp_seq=5 ttl=64 time=0.779 ms

--- 172.16.1.200 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4011ms
rtt min/avg/max/mdev = 0.471/0.716/0.850/0.130 ms
[root@centos7-10 ~]# 
  • 主机centos7-18 tcpdump抓包结果
    • tcpdump -nn -e -i enp0s5 host not 10.211.55.2 and icmp
      抓包排除ssh客户端 10.211.55.2
      -nn 两个 n 表示不解析域名和端口
      -e 在输出行打印出数据链路层的头部信息
      -i 抓指定接口(网卡)的数据包
[root@centos7-18 ~]# tcpdump -nn -e -i enp0s5 host not 10.211.55.2 and icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s5, link-type EN10MB (Ethernet), capture size 262144 bytes
// 00:1c:42:ae:b6:41(centos7-10 enp0s5)> 00:1c:42:60:87:b2(centos7-18 enp0s5)
19:59:52.186950 00:1c:42:ae:b6:41 > 00:1c:42:60:87:b2, ethertype IPv4 (0x0800), length 98: 10.211.55.10 > 172.16.1.200: ICMP echo request, id 2040, seq 1, length 64
// 00:1c:42:60:87:b2(centos7-18 enp0s5)> 00:1c:42:44:79:a5(centos7-22 enp0s5)
19:59:52.187068 00:1c:42:60:87:b2 > 00:1c:42:44:79:a5, ethertype IPv4 (0x0800), length 98: 10.211.55.10 > 172.16.1.200: ICMP echo request, id 2040, seq 1, length 64
// 00:1c:42:44:79:a5(centos7-22 enp0s5)> 00:1c:42:ae:b6:41(centos7-10 enp0s5)
19:59:52.187364 00:1c:42:44:79:a5 > 00:1c:42:ae:b6:41, ethertype IPv4 (0x0800), length 98: 172.16.1.200 > 10.211.55.10: ICMP echo reply, id 2040, seq 1, length 64
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel

总结

Linux 通过IP Forward 功能进行路由转发,根据已有路由配置信息把包送到合适的网络接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1431901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【退役之重学前端】vite, vue3, vue-router, vuex, ES6学习日记

学习使用vitevue3的所遇问题总结&#xff08;2024年2月1日&#xff09; 组件中使用<script>标签忘记加 setup 这会导致Navbar 没有暴露出来&#xff0c;导致使用不了&#xff0c;出现以下报错 这是因为&#xff0c;如果不用setup&#xff0c;就得使用 export default…

一次enq: TM - contention分析

客户反映前台业务卡住了&#xff0c;怀疑是有锁表&#xff0c;锁表时查询等待事件是enq: TM - contention&#xff0c;因为是业务高峰期&#xff0c;所以直接把锁杀掉了&#xff0c;事后想要查一下锁表原因。 客户数据库环境是11g rac&#xff0c;我采集了锁表时间段两节点的a…

C++拷贝构造函数、赋值运算符重载

1.拷贝构造函数 拷贝构造函数的写法如图所示 调用方式如下 接下来我来说说它的特征 1.1特征 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c;在用已存在的类类型对象创建新对象时由编译器自动调用。 拷贝构造函…

算法学习——华为机考题库9(HJ56 - HJ63)

算法学习——华为机考题库9&#xff08;HJ56 - HJ63&#xff09; HJ56 完全数计算 描述 完全数&#xff08;Perfect number&#xff09;&#xff0c;又称完美数或完备数&#xff0c;是一些特殊的自然数。 它所有的真因子&#xff08;即除了自身以外的约数&#xff09;的和&…

Android配置GitLab CI/CD持续集成,Shell版本的gitlab-runner,FastLane执行,上传蒲公英

mac环境下&#xff0c; 首选需要安装gitlab-runner和fastlane brew install gitlab-runner brew install fastlane 安装完成&#xff0c;来到我们在gitlab下新建的Android项目&#xff0c;我们开始创建gitlab-runner 1、创建runner 点开runner&#xff0c;点击新建runner …

map容器的基本概念及常用成员函数

map&#xff08;字典&#xff09;的基本概念 map是一个将一个值映射到另一个值的一种数据结构。&#xff08;即两个值之间有一一对应关系&#xff09;。 map的所有元素都是pair类型&#xff0c;pair中的第一个元素称为键值&#xff08;key&#xff09;第二个元素称为实值&…

Vue工程引入Element-ui

npm 安装ELement-ui npm i element-ui -S 于package.json中发现有“element-ui”版本号即可 引入 Element 在 main.js 中写入以下内容&#xff1a; import element-ui/lib/theme-chalk/index.css; import ElementUI from element-ui;Vue.use(ElementUI);之后根据自己的需求设计…

【Apache POI库读取Excel文件,并使用HashMap来存储和检查重复项】

目录 下面是一个示例代码,使用Apache POI库读取Excel文件,并使用HashMap来存储和检查重复项。 import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream; import java.io.IOException; import java.util.…

Web html

目录 1 前言2 HTML2.1 元素(Element)2.1.1 块级元素和内联(行级)元素2.1.2 空元素 2.2 html页面的文档结构2.3 常见标签使用2.3.1 注释2.3.2 标题2.3.3 段落2.3.4 列表2.3.5 超链接2.3.6 图片2.3.7 内联(行级)标签2.3.8 换行 2.4 属性2.4.1 布尔属性 2.5 实体引用2.6 空格2.7 D…

python_ACM模式《剑指offer刷题》二叉树1

题目&#xff1a; 面试tips&#xff1a; 1. 询问是否可以使用双端队列 (看后面思路就可知为什么要问这个) 思路&#xff1a; 时复和空复都为O(n) 思路一&#xff1a;利用双端队列。总体思想是利用二叉树层序遍历(二叉树的层序遍历就是用队列dq&#xff0c;且从左往右每一层…

java高级开发 章节练习题(选择、填空、判断)

第九章 常用实用类 一. 单选题 1. (单选题)String类的equals方法&#xff0c;其作用是&#xff1a; A. 比较2个字符串对象是否为同一个对象B. 比较2个字符串对象的字符长度是否相同C. 比较2个字符串对象的首地址是否相同D. 比较2个字符串对象的字符序列是否相同 答案: D:比…

HBase 数据导入导出

HBase 数据导入导出 1. 使用 Docker 部署 HBase2. HBase 命令查找3. 命令行操作 HBase3.1 HBase shell 命令3.2 查看命名空间3.3 查看命名空间下的表3.4 新建命名空间3.5 查看具体表结构3.6 创建表 4. HBase 数据导出、导入4.1 导出 HBase 中的某个表数据4.2 导入 HBase 中的某…

2V2无人机红蓝对抗仿真

两架红方和蓝方无人机分别从不同位置起飞&#xff0c;蓝方无人机跟踪及击毁红方无人机 2020a可正常运行 2V2无人机红蓝对抗仿真资源-CSDN文库

css1字体属性

一.font-family(字体系列&#xff09; 不同字体系统用&#xff0c;隔开&#xff1b; 多个字母的字体系统用“”&#xff1b; 二.font-size&#xff08;字体大小&#xff09;&#xff08;有单位px&#xff09;&#xff08;默认字体16px&#xff09; 三.font-weight&#xff08…

大数据信用报告在线查询平台哪个好?

随着大数据技术在金融风控的运用&#xff0c;大数据信用越来越被人熟知&#xff0c;由于线下没有查询大数据信用的地方&#xff0c;想要查询大数据信用报告只有在线上查询&#xff0c;那大数据信用报告在线查询平台哪个好呢?本文贷你一起去了解市面上比较好的三个平台。 大数据…

Unity 渲染管线自动转换的实现 支持HDRP转URP,URP转HDRP

HDRP和URP无法平滑切换&#xff0c;因为属性、功能差异巨大。 本脚本仅对可对应的默认脚本和属性做了转换处理。细节调整还需自己搞。 自动转换可以节省手动更换shader、texture、通用属性的劳动成本。 操作步骤 使用前确保当前项目中存在HDRP和URP的包&#xff0c;没有请到p…

Vue.js 学习14 集成H265web.js播放器实现webpack自动化构建

Vue.js 学习14 集成H265web.js播放器实现webpack自动化构建 一、项目说明1. H265web.js 简介2. 准备环境 二、项目配置1. 下载 H265web.js2. 在vue项目里引入 H265web3. 设置 vue.config.js 三、代码引用1. 参照官方demo &#xff0c; 创建 executor.js2. 在 vue 页面里引用htm…

批量检测微信小程序是否封禁接口源码

<?php // 要检测的 appid 列表 $appids array(appid1, appid2, appid3); // 使用实际的 appid // 循环调用接口检测小程序状态 foreach ($appids as $appid) { $url https://yan.changxunwangluo.cn/xcx/check_mini_program.php?appid . urlencode($appid); $…

【已解决】c++ qt选中该行为什么该列部分变色

笔者开启了QTableView中交替行改变颜色&#xff0c;发现笔者自定义绘制的水平滚动条&#xff0c;在选中后不发生颜色改变&#xff0c;这让笔者很疑惑。笔者查阅资料后发现&#xff0c;自定义绘制的控件&#xff0c;要自身设置颜色。当笔者解决了这个问题时&#xff0c;顺手就将…

GPT原始论文:Improving Language Understanding by Generative Pre-Training论文翻译

1 摘要 自然语理解包括文本蕴含、问题回答、语义相似性评估和文档分类等一系列多样化的任务。尽管大量未标注的文本语料库很丰富&#xff0c;但用于学习这些特定任务的标注数据却很稀缺&#xff0c;这使得基于区分性训练的模型难以充分发挥作用。我们展示了通过在多样化的未标…