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

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

相关推荐
A小辣椒12 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒15 小时前
TShark:基础知识
linux
AlfredZhao18 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux