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,搞点配置,写写规则,简简单单,但做起来其实也折腾了小半天,实验配置过程不流畅不同步,加上理论知识不扎实,做着总有疑问,导致很不顺利。

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

相关推荐
乱蜂朝王4 小时前
Ubuntu 20.04安装CUDA 11.8
linux·运维·ubuntu
梁洪飞5 小时前
clk学习
linux·arm开发·嵌入式硬件·arm
~光~~6 小时前
【嵌入式linux驱动——点亮led】基于鲁班猫4 rk3588s
linux·点灯·嵌入式linux驱动
yuanmenghao6 小时前
车载Linux 系统问题定位方法论与实战系列 - 车载 Linux 平台问题定位规范
linux·运维·服务器·网络·c++
qq_589568108 小时前
centos6.8镜像源yum install不成功,无法通过镜像源下载的解决方式
linux·运维·centos
weixin_516023078 小时前
linux下fcitx5拼音的安装
linux·运维·服务器
hunter14509 小时前
Linux 进程与计划任务
linux·运维·服务器
上海云盾安全满满9 小时前
高防IP线路质量重要吗
网络·网络协议·tcp/ip
楼田莉子9 小时前
Linux学习之磁盘与Ext系列文件
linux·运维·服务器·c语言·学习
陌上花开缓缓归以9 小时前
linux 怎么模拟系统panic重启
linux·运维·服务器