SNAT和DNAT的实现

本文介绍了如何在Linux环境中配置SNAT和DNAT,以实现网络地址转换。首先,通过设置两台Linux虚拟机,配置网关和客户端环境。接着,通过编辑iptables脚本启用IP转发,设置SNAT规则,使内部网络数据包在外出时显示同一公共IP。最后,配置DNAT规则,将外部请求重定向到内部服务器。整个过程旨在确保内网设备能通过网关访问外网,并且外部流量能被正确导向内网服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

一、准备环境

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连接
在这里插入图片描述
成功

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值