利用Iptables构建虚拟路由器
利用Iptables构建虚拟路由器
(1)修改网络类型
在VMware Workstation软件中选择“编辑→虚拟网络编辑器”菜单命令,在虚拟网络列表中选中VMnet1,将其配置为“仅主机模式(在专用网络内连接虚拟机)”,设置子网IP为192.168.1.0,子网掩码为255.255.255.0,完成后单击“确定”按钮,如图1-41所示。

图1-41 设置主机网络模式
(2)添加网络适配器
在虚拟网络编辑器中添加一个虚拟网络VMnet2,配置为“仅主机模式”,设置子网IP为“192.168.2.0”,子网掩码为“255.255.255.0”,如图1-42、图1-43所示。

图1-42 配置主机网络模式

图1-43 DHCP设置
(3)添加网卡
使用VMware Workstation创建3个CentOS 7.5系统的虚拟机,分别命名为student1、student2、student3。
student1配置VMnet1,student2配置VMnet2,student3配置VMnet1和VMnet2两块网卡,如图1-44所示。

图1-44 student3设置双网卡模式
(4)配置IP地址
使用静态IP配置3个虚拟机的IP地址,使虚拟机student1和虚拟机student2在不同网段,而虚拟机student3两张网卡分别对应着不同的两个网段。虚拟机IP地址详细信息见表1-1。
表1-1 虚拟机网络规划表
| 主机名 | 网卡 | IP地址 | 子网掩码(netmask) | 网关(gateway) |
| student1 | ens33 | 192.168.1.128 | 255.255.255.0 | 192.168.1.129 |
| student2 | ens33 | 192.168.2.128 | 255.255.255.0 | 192.168.2.129 |
| student3 | ens33 | 192.168.1.129 | 255.255.255.0 | 192.168.1.1 |
| ens34 | 192.168.2.129 | 255.255.255.0 | 192.168.2.1 |
(5)远程连接
使用SecureCRT工具远程连接3台虚拟机,用虚拟机student3分别ping虚拟机student1和student2,并让虚拟机student1和虚拟机student2互ping,验证虚拟机student3和student1、student2之间分别相通,虚拟机student1和虚拟机student2不通。
| [root@student3 ~]# ping 192.168.1.128 –c 4 PING 192.168.1.128 (192.168.1.128) 56(84) bytes of data. 64 bytes from 192.168.1.128: icmp_seq=1 ttl=64 time=0.365 ms 64 bytes from 192.168.1.128: icmp_seq=2 ttl=64 time=0.356 ms 64 bytes from 192.168.1.128: icmp_seq=3 ttl=64 time=0.433 ms 64 bytes from 192.168.1.128: icmp_seq=3 ttl=64 time=0.433 ms --- 192.168.1.128 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2259ms rtt min/avg/max/mdev = 0.433/0.642/1.020/0.267 ms [root@student3 ~]# ping 192.168.2.128 –c 4 PING 192.168.2.128 (192.168.2.128) 56(84) bytes of data. 64 bytes from 192.168.2.128: icmp_seq=1 ttl=64 time=0.533 ms 64 bytes from 192.168.2.128: icmp_seq=2 ttl=64 time=0.422 ms 64 bytes from 192.168.2.128: icmp_seq=3 ttl=64 time=0.435 ms 64 bytes from 192.168.2.128: icmp_seq=4 ttl=64 time=0.452 ms --- 192.168.2.128 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3523ms rtt min/avg/max/mdev = 0.422/0.460/0.533/0.048 ms [root@student1 ~]# ping 192.168.2.128 –c 4 PING 192.168.2.128 (192.168.2.128) 56(84) bytes of data. From 172.24.13.1 icmp_seq=3 Destination Host Unreachable From 172.24.13.1 icmp_seq=4 Destination Host Unreachable --- 192.168.2.128 ping statistics --- 4 packets transmitted, 0 received, 100% packet loss, time 23961ms [root@student2 ~]# ping 192.168.1.128 –c 4 PING 192.168.1.128 (192.168.1.128) 56(84) bytes of data. From 172.24.13.1 icmp_seq=3 Destination Host Unreachable From 172.24.13.1 icmp_seq=4 Destination Host Unreachable --- 192.168.1.128 ping statistics --- 4 packets transmitted, 0 received, 100% packet loss, time 34618ms |
(6)构建虚拟路由器
现在将虚拟机student3作为虚拟交换路由器,使得不同网段的虚拟机student1和虚拟机student2可以互相通信。在虚拟机student3中作出如下操作使其成为虚拟路由器。
| # echo 'net.ipv4.ip_forward=1' > /etc/sysctl.conf \\开启包过滤功能即开启路由功能 # echo "net.ipv4.conf.default.rp_filter=0" >> /etc/sysctl.conf \\启用源路由核查功能 # echo 'net.ipv4.conf.all.rp_filter=0' >> /etc/sysctl.conf \\关闭反向路径过滤 #sysctl –p \\内核网络设置生效 |
(7)修改防火墙配置
修改虚拟机student3的IPtables配置,使其可以接受并转发192.168.1.0/24和192.168.2.0/24两个网段的包。
| # iptables –F \\清空所有 chain中的规则 # iptables –X \\删除所有用户自定义 # iptables –Z \\把所有链的包及字节的计数器清空 # iptables-save \\保存IPtables的配置 iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] # iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens33 \\指定192.168.10.0/24网段的包从ens33出去 # iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o ens34 \\指定192.168.20.0/24网段的包从ens34出去 |
(8)检查连通性
检查虚拟机student1和虚拟机student2之间是否可以连通。
| [root@student1 ~]# ping 192.168.2.128 –c 4 PING 192.168.2.128 (192.168.2.128) 56(84) bytes of data. 64 bytes from 192.168.2.128: icmp_seq=1 ttl=63 time=17.2 ms 64 bytes from 192.168.2.128: icmp_seq=2 ttl=63 time=0.873 ms 64 bytes from 192.168.2.128: icmp_seq=3 ttl=63 time=1.11 ms 64 bytes from 192.168.2.128: icmp_seq=3 ttl=63 time=1.11 ms --- 192.168.2.128 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2567ms rtt min/avg/max/mdev = 0.873/6.413/17.256/7.667 ms [root@student2 ~]# ping 192.168.1.128 PING 192.168.1.128 (192.168.1.128) 56(84) bytes of data. 64 bytes from 192.168.1.128: icmp_seq=1 ttl=63 time=1.03 ms 64 bytes from 192.168.1.128: icmp_seq=2 ttl=63 time=0.842 ms 64 bytes from 192.168.1.128: icmp_seq=3 ttl=63 time=0.833 ms 64 bytes from 192.168.1.128: icmp_seq=3 ttl=63 time=0.833 ms --- 192.168.1.128 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2419ms rtt min/avg/max/mdev = 0.833/0.902/1.031/0.091 ms |
(9)IPtables的网络隔离
使用IPtables规则隔离同网段的连接。使虚拟机student2和虚拟机student3直接无法连通。
| #iptables -I INPUT -s 192.168.2.0/24 -j DROP \\设置一个规则来自192.168.2.0/24的包直接drop掉 [root@student2 ~]# ping 192.168.2.129 \\用ping测试192.168.2.0/24网段连通 PING 192.168.1.129 (192.168.1.129) 56(84) bytes of data. ^C --- 192.168.2.129 ping statistics --- 5 packets transmitted, 0 received, 100% packet loss, time 4679ms |
相关文章:
利用Iptables构建虚拟路由器
利用Iptables构建虚拟路由器 (1)修改网络类型 在VMware Workstation软件中选择“编辑→虚拟网络编辑器”菜单命令,在虚拟网络列表中选中VMnet1,将其配置为“仅主机模式(在专用网络内连接虚拟机)”&#x…...
C++——类和对象[中]
0.关注博主有更多知识 C知识合集 目录 1.类的默认成员函数 2.构造函数和析构函数基础 3.构造函数进阶 4.析构函数进阶 5.拷贝构造函数 6.运算符重载 7.日期类 7.1输入&输出&友元函数 8.赋值运算符重载 9.const成员函数 9.1日期类完整代码 10.取地址重载 …...
Symbol.iterator和Symbol.asyncIterator
Symbol是什么? symbol是ES6标准中新增的一种基本数据类型,symbol 的值是通过 Symbol()函数返回的,每一个 symbol 的值都是唯一的,即使传入相同的描述值。 注:Symbol 函数不允许通过 new 的方式调用 Symbol的作用是什…...
忆暖行动|“他一个人推着老式自行车在厚雪堆的道路上走,车上带着学生考试要用的司机”
忆暖行动|“他一个人推着老式自行车在厚雪堆的道路上走,车上带着学生考试要用的sj” 一头白发,满山青葱 在那斑驳的物件褶皱中,透过泛黄的相片,掩藏着岁月的冲刷和青葱的时光。曾经的青年早已经不复年轻,但是那份热爱…...
Python中True、False、None的判断(避坑)
2.4 Python中True、False、None的判断 在Python中,所有的空值和0在作为条件表达式时,隐式的进行bool转换后都是False,比如:空列表:[]、空字符串:‘’、空字典:{}等等。 from icecream import …...
Spring Bean定义有哪些方式?
概述 对于学习Spring的兄弟姐妹来说,觉得这个问题很熟悉,若是要把它回答得很清楚,却是很为难?平时写代码的时候,不会在意这些概念问题,但面试时这个问题出现的频率却是很高,所以还是必须要掌握…...
JVM内存模型的演变
1,背景 class文件、类的加载过程。我们的class文件就要进入到JVM内存里,我们沿着经典的JDK1.6,JDK1.7,JDK1.8看看在其中都经历了哪些改变 概念的统一: 方法区: 方法区可以看作是JVM逻辑上管理一片区域的…...
DataX3同步Mysql数据库数据到Mysql数据库和DataX3同步mysql数据库数据到Starrocks数据库
DataX3同步Mysql数据库数据到Mysql数据库和DataX3同步mysql数据库数据到Starrocks 一、认识DataX二、DataX3概览三、DataX3框架设计四、DataX3插件体系五、DataX3核心架构六、DataX 3六大核心优势1.可靠的数据质量监控2.丰富的数据转换功能3.精准的速度控制4.强劲的同步性能5.健…...
你是否曾经为自己写的代码而感到懊恼?那如何才能写出高质量代码呢?
这里写目录标题 一、 前言二、高质量代码的特征三、编程实践技巧1. 遵循编码规范2. 使用有意义的变量名和函数名3. 减少代码重复4. 使用注释5. 编写单元测试6. 使用设计模式7. 使用版本控制工具8. 保持代码简洁9. 优化代码性能10. 学习和借鉴他人的代码总结 一、 前言 写出高质…...
常用 Composition API【VUE3】
二、常用 Composition API 7. 计算属性与监视 7.1 computed函数 与Vue2.x中computed配置功能一致写法 <template><h1>一个人的信息</h1>姓:<input type"text" v-model"person.firstName"><br><br>名&a…...
--商业模式--
O2O O2O,网络用语中指Online To Offline的缩写,即在线离线/线上到线下,是指将线下的商务机会与互联网结合,让互联网成为线下交易的平台。 O2O概念最早来源于美国。O2O的概念非常广泛,既可涉及到线上,又可…...
JavaWeb《HTML基础标签》
本笔记学习于Acwing平台 MDN官方文档https://developer.mozilla.org/zh-CN/ 目录 1. html文件结构 2. 文本标签 3. 图片 4. 音频和视频 5. 超链接 6. 表单 7. 列表 8. 表格 9. 语义标签 10. 特殊符号 1. html文件结构 文档结构 html的所有标签为树形结构ÿ…...
ChatGpt 能取代人类吗?
目录 前言 一、ChatGpt是什么? 二、ChatGpt能做什么 总结 前言 随着人工智能的不断发展,很多人都开启了学习机器学习,以及现在ChatGpt的出现,对人类社会带来了很多变化。 智能化交流方式:ChatGpt的出现为人们提供了…...
PHP内存溢出Allowed memory size of 解决办法
以前追踪过这个问题,但是那个时候工具用的不太好,没看的这么细,这次搞的比较细,修正了偶以前的看法 .于是写小文一篇总结一下. PHP偶尔会爆一下如下 错误Allowed memory size of xxx bytes exhausted at xxx:xxx (tried to allocate xxx bytes) 不想看原理的,直接跳到最后…...
重回代码,学习总结
回顾加总结 2021年 自动化测试 1.ETL 数据库开发维护(oracle pl/sql) 2.自动化测试(javaseleniumcucumber) 2022年 功能测试 1.功能测试(学习测试用例,postman测试) 2.性能测试(jmeter初学) 2023年 测试开发 1.学习了…...
【Leetcode -86.分隔链表 -92.反转链表Ⅱ】
Leetcode Leetcode -86.分隔链表Leetcode -92.反转链表Ⅱ Leetcode -86.分隔链表 题目:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每…...
算法记录 | 48 动态规划
198.打家劫舍 思路: 1.确定dp数组(dp table)以及下标的含义:dp[i]:前 i 间房屋所能偷窃到的最高金额。 2.确定递推公式:dp[i] max(dp[i - 2] nums[i-1], dp[i - 1]) i间房屋的最后一个房子是nums[i−…...
CRM部署Always on 后 CRM报无法更新数据库,数据库只读,且读写分离不正常
CRM部署Always on 后 CRM报无法更新数据库,数据库只读,读写分离不正常 问题描述背景信息问题原因解决方案 问题描述 CRM部署Always on 后 CRM报无法更新数据库,数据库只读 读写分离不正常,出现错乱链接。 背景信息 1.2个节点配置SQL serve…...
麓言信息设计创意思维,打开设计师思路
在现在快速发展的时代,信息纷杂繁琐,如果一个设计不能让人眼前一亮,印象深刻,只会沦为平凡作品,无亮点无用处。正所谓,无设计不创意,这句口号正是喊出对设计的要求。 伴随着时代的发展、…...
POJ3704 括号匹配问题 递归方法
目录 题目 算法 完整代码 题目 参考 递归: https://blog.csdn.net/qq_45272251/article/details/103257953 利用了递归, 但思路稍复杂了 循环: https://blog.csdn.net/weixin_50340097/article/details/114579805 (看起来是递归其实是循环. 每次递归其实是循环内一次迭…...
np.meshgrid的indexing参数:从二维到三维的坐标轴映射逻辑解析
1. np.meshgrid的indexing参数:二维世界的坐标系战争 第一次用np.meshgrid时,我也被那个神秘的indexing参数搞得晕头转向。明明只是想把两个一维数组变成网格坐标,怎么出来的结果跟想象中完全不一样?后来才发现,这背后…...
ubuntu 快捷键和常用命令
在使用 ubuntu 作为主机后,对于一些常见的操作,需要更加快捷的方式执行,这也是我选择 ubuntu 的主要原因。这篇文章手机 ubuntu 的快捷键和一些常用的命令。 快捷键 f2是重命名 linux控制台快捷键 ctrl a e CtrlShiftn 新终端 ShiftCt…...
CANN/asc-devkit make_int2向量构造函数
make_int2 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/…...
渗透测试技巧(七)| 系统提权
系统提权基础 实战过程中,你通过漏洞(上传漏洞、弱口令、Web 漏洞)打进服务器,一般只能对应应用服务的账户权限。这个权限常常属于低权限账户,无法查看账号密码、配置系统文件、获取敏感数据等,这时就需要提权!提权就是把低权限账号升级为系统最高权限,从而完全控制服…...
AI智能体如何通过区块链钱包实现自动化加密云存储
1. 项目概述:当AI智能体遇上加密云存储如果你正在使用OpenClaw这类AI智能体平台,并且头疼于如何让它们自动、安全地处理云端数据——比如备份对话记录、上传生成的文件,或者管理需要付费的API服务——那么你很可能需要一个既懂区块链支付、又…...
软件设计原则之OCP开闭原则
(OCP) 开闭原则 Open Closed Principle核心原则对扩展开放,对修改关闭。场景描述还是拿 UserInfo 进行举例。在开发过程中我们需要对我们使用的对象进行多步的组合操作,比如这里要打印账户和密码信息。常规的方式就是在外部直接进行调用,或者…...
Kubernetes部署Dify AI平台:从Docker Compose到K8s原生YAML完整迁移指南
1. 项目概述与核心价值最近在折腾AI应用开发平台,发现Dify这个工具确实挺有意思,它把大模型应用开发的门槛降得很低。不过,官方主要提供了Docker Compose的部署方式,对于已经将生产环境全面容器化、并且用上了Kubernetes的团队来说…...
AIAgent系统崩溃前的7个征兆:基于SITS2026容错框架的实时预警与自愈方案
更多请点击: https://intelliparadigm.com 第一章:SITS2026容错框架的理论根基与演进脉络 SITS2026(Self-Integrating Tolerance System 2026)并非凭空而生,其设计深度植根于分布式系统可靠性理论、形式化验证方法论与…...
如何用AI技术5分钟搞定视频硬字幕提取?这个开源工具让你轻松生成SRT字幕文件
如何用AI技术5分钟搞定视频硬字幕提取?这个开源工具让你轻松生成SRT字幕文件 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含…...
终极Zotero插件管理指南:如何一键安装数百个学术研究工具
终极Zotero插件管理指南:如何一键安装数百个学术研究工具 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing, installing, and reviewing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons …...
