背景介绍

A服务器有公网,b,c,d没有公网,A,B,C,D之间可以相互通信。如何让B,C,D也能访问公网呢?
解决方案:
方案一:将A设置成代理服务器,B,C,D的请求都从A服务器代理请求发送。(后续写教程)
方案二:将A服务器路由改成路由转发,有数据包过来同步转发给B , C, D
本文章主要讲解如何通过方案二如何实现A电脑如何进行转发数据包,实现B,C,D局域网上的主机可以通过A可以进行连接外网。需要掌握仅主机模式,和nat模式这两种网络。本次操作均用虚拟机进行展示。
操作步骤
-
- 知识点回顾(NAT模式地址转换模式、仅主机模式)
NAT模式

我们只需要弄懂,NAT模式下,这三点。
- 宿主机和虚拟机是如何通信的?
- 宿主机如何连接外网的?
- 虚拟机是如何与外界网络进行通信的。
宿主机是如何连接外网
宿主机直接连接真实主机的网卡,直接从主机网卡出去
宿主机和虚拟机是如何进行通信的?
此时虚拟机会虚拟生成一张网卡VMware Network Adapter VMnet8网卡,这张网卡有两个功能一个功能是作为一个网桥,将宿主机和虚拟机两个不同网段的网络进行连接。同时也具有交换机的功能,让虚拟机形成一个局域网。
因此虚拟机和宿主机之间的通信是通过这个虚拟机网卡进行通信的。
主机访问虚拟机的网络链路是:主机-> 虚拟机网卡VMnet8->VMnet8虚拟机交换机->虚拟机
虚拟机是如何进行与主机通信的
虚拟机是不能通过网桥访问到主机的网卡的,他们走的路线是:虚拟机->VMnet8虚拟机交换机->虚拟NAT设备->主机网卡->主机。这里用到的是NAT转化设备,将其转成宿主机的地址进行在与外界进行通信。
为了实现上述中的网络环境。
将A主机添加两张网卡,一张网卡设置为仅NAT模式模拟虚拟主机接入外网,可以上网。再接入一张网卡,设置为仅主机模式。设置仅主机模式是为了能够和局域网下的虚拟机可以进行通信。
1.将虚拟机A设置成路由转发。
echo "1" > /proc/sys/net/ipv4/ip_forward //查看有没有设置成功 cat /proc/sys/net/ipv4/ip_forward
2.B虚拟机添加网关

因此B添加到A的网关
route add default gw 192.168.169.130
查看路由
route -n

此时仍然不能上网,但是主机之间可以互相通信?

这里有个很隐藏点,为了验证是否实现路由转发功能,可以再添加一个自定义Vmnet2网卡,

同样的道理

这是可以进行通信centosA,和centosB。说明了具备了A已经有了路由转发功能,但是,A没有将C的私网地址发送出去。因此需要添加一个NAT转换规则,将ens33网关地址进行转换成A的私有地址。

sudo iptables -t nat -A POSTROUTING -o ens33 -j SNAT --to-source 192.168.128.140
sudo:- 以管理员权限运行命令,因为
iptables需要 root 权限才能修改网络规则。
- 以管理员权限运行命令,因为
iptables:- Linux 系统中用于配置防火墙规则的工具。
-t nat:- 指定操作的表(table)为
nat表。nat表用于网络地址转换(NAT)相关的规则。
- 指定操作的表(table)为
-A POSTROUTING:-A表示追加(Add)一条规则。POSTROUTING是nat表中的一个链(chain),用于处理数据包在离开本机之前的修改操作(即路由后的操作)。
-o ens33:-o指定输出接口(output interface),即数据包将从哪个网络接口发出。ens33是网络接口的名称,通常是主机的物理网卡或虚拟网卡。
-j SNAT:-j指定跳转的目标(即动作)。SNAT是源地址转换(Source NAT),用于修改数据包的源 IP 地址。
--to-source 192.168.128.140:--to-source是SNAT动作的参数,用于指定新的源 IP 地址。192.168.128.140是新的源 IP 地址,数据包离开ens33接口时,其源地址会被修改为该地址。
这条命令的作用是:
- 当数据包从
ens33接口发出时,将其源 IP 地址修改为192.168.128.140。 - 这通常用于以下场景:
- 虚拟机或容器通过主机的
ens33接口访问外部网络时,外部网络看到的数据包源地址是192.168.128.140,而不是虚拟机或容器的私有 IP 地址。 - 实现多台设备共享一个公网 IP 地址(即 NAT 功能)。
- 虚拟机或容器通过主机的
查看规则
iptables -t nat -L -v -n
iptables:- Linux 系统中用于配置防火墙规则的工具。
-t nat:- 指定操作的表(table)为
nat表。nat表用于网络地址转换(NAT)相关的规则。
- 指定操作的表(table)为
-L:- 列出(List)指定表中的所有规则。
-v:- 显示详细信息(verbose),包括数据包和字节计数。
-n:- 以数字形式显示 IP 地址和端口号(不进行域名解析)

添加成功可以进行通信连接外网

2463

被折叠的 条评论
为什么被折叠?



