一、准备环境
1.准备两台linux虚拟机,一台作为网关服务器另一台作为客户端机器。 网关服务器需要配置两张网卡(网络适配器),其中一个设置为桥接模式,另一个设为仅主机模式
2.客户机只需一张网卡,设置为仅主机模式或者桥接模式都可以
3.给服务器添加的网络适配器设置IP地址
将服务器的ens33端口设置为192.168.50.254,作为客户机的网关
4.将服务器的ens36端口设置在与真实机器相同的网段
要记得添加网关和DNS
5.同样为客户机的ens33端口配置IP地址192.168.50.1
要与服务器的ens33端口在同一网段,并将其设置为网关地址
6.保险起见,把两台虚拟机的防火墙都先关闭一下
service firewalld stop
那么这样,初始的环境就配置好了
二、SNAT的实现
1.在网关服务器创建一个文件夹nat
进入nat文件夹后编辑一个脚本snat.sh
echo 1 >/proc/sys/net/ipv4/ip_forward: 这个命令将数字1写入/proc/sys/net/ipv4/ip_forward文件中,启用IP转发功能。IP转发允许Linux系统将接收到的数据包从一个网络接口转发到另一个网络接口。
iptables -F: 这个命令用于清除所有已存在的iptables规则,以确保从一个干净的状态开始配置新的规则。
iptables -t nat -F: 这个命令用于清除所有已存在的iptables NAT(网络地址转换)规则,以确保从一个干净的状态开始配置新的规则。
iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o ens36 -j SNAT --to-source 192.168.2.99: 这个命令添加一个POSTROUTING规则到iptables NAT表中。它指定了源地址转换(SNAT)规则,将源IP地址为192.168.50.0/24子网的数据包通过网络接口ens36进行转发,并将源IP地址转换为192.168.2.99。
这些命令的目的是配置Linux系统上的SNAT规则,以便在数据包从192.168.50.0/24子网发送到外部网络时,将源IP地址转换为192.168.2.99。这通常用于网络地址转换(NAT)和路由器配置中,以实现内部网络与外部网络之间的通信。
2.加粗样式执行该脚本,并且检查是否建立SNAT连接
3.检测客户机是否能够上网
成功ping通
三、DNAT的实现
1.在网关服务器的nat文件夹中编辑一个脚本dnat.sh
iptables: 这是用于配置iptables防火墙规则的命令。
-t nat: 指定了要操作的iptables表,这里是NAT表。
-A PREROUTING: 表示将规则添加到PREROUTING链中。PREROUTING链用于在数据包进入路由之前进行处理。
-d 192.168.255.99: 指定了目标IP地址为192.168.255.99的数据包。
-i ens36: 指定了数据包进入的网络接口为ens36。
-p tcp: 指定了数据包使用的协议为TCP。
–dport 8000: 指定了数据包的目标端口为8000。
-j DNAT: 表示对匹配的数据包执行目标地址转换(DNAT)操作。
–to-destination 192.168.50.1: *这个选项指定了目标地址转换的目标IP地址为192.168.50.1。
这个命令的作用是将目标IP地址为192.168.255.99、进入网络接口为ens36、目标端口为8000的TCP数据包的目标地址转换为192.168.50.1。这通常用于将外部请求转发到内部服务器或应用程序。
2.执行该脚本,并检测是否成功建立DANT连接
成功