Linux内网数据代理与数据映射实验

背景介绍

有两台主机,其中一台可以联网,而另一台只能与联网主机,尝试通过配置,使该主机也能正常上网,这常应用于企业内部不联网的服务器,需要安全可靠或临时上网的场景,借助另一台可以上网的内部主机实现。

实验环境

借助两个克隆的虚拟机实现,其中一个可以联网,也有仅主机的网卡,另一个网络设置为仅主机模式,用于模拟内网环境,在设置网络之前为了测试效果,我们先给客户机安装上httpd服务,并关闭firewalld服务避免干扰,再检查网络情况,确认80端口是否使用,代码如下:

复制代码
yum install -y httpd
systemctl start httpd # 开启httpd服务
systemctl stop firewalld # 关闭firewalld
ss -nlt # 检查端口情况


关于虚拟机三种网络模式解释如下:

复制代码
vmware0 桥接模式:虚拟机与物理网卡直接相连,虚拟机将占用局域网中的一个IP地址,并且可以与其他终端进行相互访问
vmware1 仅主机模式:仅允许虚拟机与主机之间进行通信,而无法与外部网络通信
vmware8 NAT模式:虚拟机将获得一个由主机提供的虚拟IP地址,并通过主机进行网络地址转换(NAT)来与外部网络进行通信,这种方式可以保护虚拟机不受外界攻击

此时客户机是无法访问外部网络的

服务器的网络配置如图:

上网网卡ens33的IP为192.168.119.128,仅主机网卡ens36的IP为192.168.101.129,查看二者可否正常通信:

实验过程

配置IP

为了方便操作,两张仅主机的网卡分别将IP配置为192.168.12.1192.169.12.2,然后将客户机的网关设置为主机仅上网的网卡,配置如图:

操作完成后需systemctl restart network重启网络使之生效,并使用systemctl stop firewalld关闭防火墙,避免后续对实验的干扰。

数据转发

因为Linux系统中默认禁用数据转发功能,即主机有多张网卡时,可以根据数据包的目的IP将其转发到其他网卡,这本来应该是路由器完成的工作,所以我们需要在Linux系统中开启数据转发功能,通过修改Linux内核中的net.ipv4.ip_forward参数实现,具体方法为echo 1 > /proc/sys/net/ipv4/ip_forward,该方法为临时生效,永久化需要修改/etc/sysctl.conf 文件。

此时客户机还是无法访问外网的,因为我们只是开启了服务器的转发功能,现在需要将ens36仅主机上网卡收到的数据转发至可上网的ens33网卡上,借助该网卡对外通信,该功能可以使用我们学过的IP tables实现,具体命令为iptables -t nat -A POSTROUTING -s 192.168.12.0/24 -j SNAT --to-source 上网卡IP

此时客户机可对外通信,命令解释如下:

对负责修改数据包中的源、目标IP地址或端口的nat表中的负责路由判断后进行的规则POSTROUTING链添加新规则,所有来自192.168.12的数据包设置处理策略为SNAT,即将源地址转换为上网卡的IP地址,相对应的,如果策略为DNAT则是对目的地址进行转换。

实验原理

利用NAT网络地址转换协议实现,该协议是将IP数据包头中的IP 地址转换为另一个IP地址的过程,创建之初是为了缓解公有IP不足,实现私有IP借助网关访问公网的操作,我们在实验中也是利用该协议,实现内部主机通过可上网主机的NAT协议实现数据包的转发。再简便来说,就是让主机充当路由器

同样的,如果是外部主机要访问内网,只需将策略调整为DNAT,并将目的地址转换为内网地址即可。

该方案和我们日常使用直接访问网络的方式到底有什么不同呢?

最主要的差别就是使用这种方法对外部网络的访问是有限制的,只有配置了转发协议的数据包或者端口和地址才能访问外部网络,能接外网的主机一定程度来说像是一个硬件防火墙,作为整个内网的出入口可以很方便地进行筛选过滤。

总结思考

本次实验尝试了借助NAT协议实现主机间的数据代理功能,额外要注意的点有:

1,虚拟机三种网络模式的区别,物理直连,模拟网卡和仅内部主机

2,Linux系统数据转发的内核状态切换

3,iptables功能使用,修改添加指定表指定链的规则

4,NAT协议理解,本质是修改包头源、目的地址,但返回接收的数据包还能转换回原本地址并进行转发,具体实现方式有静态动态和复用啥的,涉及太底层暂时不做了解

此外

实践是检验真理的唯一标准,做实验之前感觉轻轻松松,修改几个IP,搞点配置,写写规则,简简单单,但做起来其实也折腾了小半天,实验配置过程不流畅不同步,加上理论知识不扎实,做着总有疑问,导致很不顺利。

但最后到现在再回头来看其实并不难,要避免眼高手低和做事畏手畏脚,只有多做,真正了解清楚自己的能力和实践的差距,才能更好地判断和选择,能力也会逐步在实践中成长,当真是实践决定认识,认识指导实践

相关推荐
李迟33 分钟前
跨系统平台实践:在内网自建kylin服务版系统yum源
linux
odoo-卜永1 小时前
ubuntu22.04连接爱普生打印机型号L385
linux·经验分享·ubuntu
xyliiiiiL1 小时前
一文总结常见项目排查
java·服务器·数据库
叫醒你笛莎1 小时前
IGMP(Internet Group Management Protocol)与组播技术深度解析
网络
lulinhao1 小时前
HCIA/HCIP基础知识笔记汇总
网络·笔记
小麦嵌入式2 小时前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
暴走的YH2 小时前
【网络协议】三次握手与四次挥手
网络·网络协议
刘若水2 小时前
Linux: 进程信号初识
linux·运维·服务器
yuzhangfeng2 小时前
【云计算物理网络】数据中心网络架构设计
网络·云计算
zhu12893035562 小时前
网络安全的重要性与防护措施
网络·安全·web安全