【计算机网络】Linux配置SNAT策略

什么是NAT?

NAT 全称是 Network Address Translation(网络地址转换),是一个用来在多个设备共享一个公网 IP上网的技术。

NAT 的核心作用:将一个网络中的私有 IP 地址,转换为公网 IP 地址,从而实现上网功能。

没有NAT的情况:
在这里插入图片描述

🌐 环境准备

🖥 VMware 创建两台 Linux 虚拟机:

server1:nat-router
  • 作用: NAT 路由器,作为网络地址转换的中介。
  • 网卡配置:
    • ens32:NAT 模式(连接外网)
    • ens33:仅主机模式(与 server2 通信)
[root@nat-router ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.202
NEKMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=223.5.5.5
DNS2=8.8.8.8[root@nat-router ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.200.253
NETMASK=255.255.255.0
server2:nat-client
  • 作用: NAT 客户端,通过 server1 上网。
  • 网卡配置:
    • ens32:仅主机模式(连接 server1)
[root@nat-client ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.200.201
NEKMASK=255.255.255.0
GATEWAY=192.168.200.253
DNS1=223.5.5.5

🧱 NAT 实现原理

🔧 使用 iptables 实现 NAT 转换

  • iptables 是一个 防火墙工具,用于配置 Linux 内核的网络行为。
  • 本身不做 NAT 转换,它的作用是 告诉内核怎么做

⚙️ 实际执行 NAT 转换的是 Linux 内核

  • 负责对底层网络数据包进行管理、处理与转发。
  • 管理网卡、路由、数据包过滤等功能。
NAT 数据包处理流程:
人(配置命令) -> iptables(设置规则) -> 内核(执行SNAT) -> 网络通信

🔐 防火墙(Firewall)概念

  • 作用: 管控进出网络的数据,防止非法访问或数据泄露。
  • Linux 中常见防火墙工具有:
    • iptables(传统,功能强大)
    • firewalld(基于 zone 的新型防火墙,CentOS 7+ 默认)

server1(NAT 路由器)上配置 SNAT(源地址转换)

# 清除规则
iptables -F
iptables -t nat -F
  • 清除原有的 iptables 规则,避免旧规则干扰。
    • -F:清空 filter 表(默认表)的所有规则。
    • -t nat -F:清空 nat 表的所有规则。
# 开启路由功能
echo 1 > /proc/sys/net/ipv4/ip_forward
  • 启用 IP 转发,使 Linux 内核可以作为路由器转发数据包。
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens32 -j SNAT --to-source 192.168.100.202
  • 设置 SNAT 规则:
    • -t nat:操作 NAT 表。
    • -A POSTROUTING:在数据包离开本机之前改变源地址。
    • -s 192.168.200.0/24:匹配从 nat-client 发来的内网地址段。
    • -o ens32:数据包从哪张网卡出去(外网网卡)。
    • -j SNAT --to-source 192.168.100.202:将源地址改成 server1 外网 IP。
[root@nat-router ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destinationChain INPUT (policy ACCEPT)
target     prot opt source               destinationChain OUTPUT (policy ACCEPT)
target     prot opt source               destinationChain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       all  --  192.168.200.0/24     0.0.0.0/0            to:192.168.100.202

nat-client测试网络情况

                             My traceroute  [v0.85]
nat-client (0.0.0.0)                                   Sat Apr  5 22:15:10 2025
Keys:  Help   Display mode   Restart statistics   Order of fields   quitPackets               PingsHost                                Loss%   Snt   Last   Avg  Best  Wrst StDev1. 192.168.200.253                   0.0%     7    0.5   0.5   0.4   0.7   0.02. 192.168.100.2                     0.0%     7    0.5   0.7   0.4   1.3   0.03. ???

可以看到正常转发网络请求
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mathematics | Branch

注:本文为“遇见数学”翻译的 “数学分支概览” 两篇文章合辑。 数学世界的版图:主要分支概览(上) 原创 遇见数学 2025 年 04 月 03 日 12:02 河南 数学的分支(Areas of Mathematics) 在文艺复兴之前&am…

Ubuntu(CentOS、Rockylinux等)快速进入深度学习pytorch环境

这里写自定义目录标题 安装进入系统(如Ubuntu22.04)安装anacondapip、conda换源pip换源conda换源 安装nvidia安装pytorch环境针对于wsl的优化 安装进入系统(如Ubuntu22.04) docker 、 wsl 、 双系统 、服务器系统 推荐 Ubuntu 20…

什么是混杂模式?为什么 macvlan 依赖它

在 macvlan 场景中,物理网络是否支持混杂模式(Promiscuous Mode) 直接影响 macvlan 虚拟接口的通信能力。以下是详细解释和操作指南: 一、什么是混杂模式?为什么 macvlan 依赖它? 混杂模式的定义 当物理网络…

物理数据流图

物理数据流图(Physical Data Flow Diagram, PDFD)详解 物理数据流图是结构化系统分析中的一种建模工具,用于描述系统在物理环境下的具体实现方式,包括硬件、软件、人工操作和物理文件等实际组成部分。它与**逻辑数据流图&#xf…

Linux开发工具——vim

📝前言: 上篇文章我们讲了Linux开发工具——apt,这篇文章我们来讲讲Linux开发工具——vim 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏&a…

在 Langflow 中构建灵活的自定义组件:从基础到高级实践

本文深入探讨了如何在 Langflow 平台中创建功能丰富的自定义组件。通过详细的目录结构解析、分步实现指南和多个实战案例,帮助开发者掌握利用 Python 生态扩展低代码平台的方法,打造高效的数据处理流程。 理解组件架构设计 自定义组件是在 Langflow 中创…

stm32+LTR-390UV使用教程含源码

stm32LTR-390UV使用教程含源码 (csdn首发源码),本人大四学生,考研已上岸,毕设做的全向轮小车,这个是环境检测部分LTR-390UV使用教程 文章目录 目录 文章目录 前言 一、硬件准备与连接 二、数据手册 1.…

【嵌入式系统设计师】知识点:第2章 嵌入式系统硬件基础知识

提示:“软考通关秘籍” 专栏围绕软考展开,全面涵盖了如嵌入式系统设计师、数据库系统工程师、信息系统管理工程师等多个软考方向的知识点。从计算机体系结构、存储系统等基础知识,到程序语言概述、算法、数据库技术(包括关系数据库、非关系型数据库、SQL 语言、数据仓库等)…

Java 项目灰度发布的详细实现与实践

前言 灰度发布是一种通过逐步将新功能或更新推向一部分用户来降低上线风险的技术。本文将详细介绍如何在 Java 项目中实现灰度发布,并提供相关的配置参数、代码示例以及 uml 图,帮助您更好地理解和应用这一技术。 一、灰度发布的核心思想 灰度发布的核…

使用 Swift 实现 LRU 缓存淘汰策略

📌 实现思路 一、核心目标 我们要实现一个缓存类: 支持通过 get(key) 获取缓存的值;支持通过 put(key, value) 写入缓存;缓存容量有限,当超过容量时要淘汰最久未使用的元素。 二、为什么用「哈希表 双向链表」 功…

C#中为自定义控件设置工具箱图标

在C#中为自定义控件设置工具箱图标,可通过以下步骤实现: ### 步骤说明: 1. **准备图标文件** - 创建或选择一个16x16像素的位图(.bmp)文件,建议使用透明背景以确保清晰显示。 2. **添加位图到项目** -…

Linux数据库:【数据库基础】【库的操作】【表的操作】

目录 一.数据库基础 1.1什么是数据库 1.2基本使用 1.2.1连接服务器 1.2.2服务器,数据库,表关系 1.2.3使用案例 1.2.4数据存储结构 ​编辑 1.3MySQL架构 1.4SQL分类 1.5存储引擎 1.5.1什么是存储引擎 1.5.2查看存储引擎 ​编辑 1.5.3存储引擎…

CKPT文件是什么?

检查点(Checkpoint,简称ckpt)是一种用于记录系统状态或数据变化的技术,广泛应用于数据库管理、机器学习模型训练、并行计算以及网络安全等领域。以下将详细介绍不同领域中ckpt检查点的定义、功能和应用场景。 数据库中的ckpt检查点…

Redis的公共操作命令

目录 1.Key操作命令1.1 keys *1.2 exists <key]>1.3 type <key>1.4 del <key>1.5 unlink <key>1.6 ttl <key>1.7 expire <key> <秒数>1.8 move <key> <index> 2.库操作命令2.1 select <index>2.2 dbsize2.3 flush…

【LLM】使用MySQL MCP Server让大模型轻松操作本地数据库

随着MCP协议&#xff08;Model Context Protocol&#xff09;的出现&#xff0c;使得 LLM 应用与外部数据源和工具之间的无缝集成成为可能&#xff0c;本章就介绍如何通过MCP Server让LLM能够直接与本地的MySQL数据库进行交互&#xff0c;例如新增、修改、删除数据&#xff0c;…

【C++】从零实现Json-Rpc框架(2)

目录 JsonCpp库 1.1- Json数据格式 1.2 - JsonCpp介绍 • 序列化接口 • 反序列化接口 1.3 - Json序列化实践 JsonCpp使用 Muduo库 2.1 - Muduo库是什么 2.2 - Muduo库常见接口介绍 TcpServer类基础介绍 EventLoop类基础介绍 TcpConnection类基础介绍 TcpClient…

语文常识推翻百年“R完备、封闭”论

​语文常识推翻百年“R完备、封闭”论 黄小宁 李四光&#xff1a;迷信权威等于扼杀智慧。语文常识表明从西方传进来的数学存在重大错误&#xff1a;将无穷多各异数轴误为同一轴。 复平面z各点z的对应点zk的全体是zk平面。z面平移变换为zk&#xff08;k是非1正实常数&#xf…

【Vue】 核心特性实战解析:computed、watch、条件渲染与列表渲染

目录 一、计算属性&#xff08;computed&#xff09; ✅ 示例&#xff1a; 计算属性-methods实现&#xff1a;在插值模块里&#xff0c;实现函数的调用功能 计算属性-computed的实现&#xff1a; 计算属性-简写&#xff1a; ✅ 特点&#xff1a; ⚠️ 与 methods 的区别…

二叉树 递归

本篇基于b站灵茶山艾府的课上例题与课后作业。 104. 二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&…

与 AI 共舞:解锁自我提升的无限可能

与 AI 共舞&#xff1a;解锁自我提升的无限可能 在数字化浪潮的汹涌冲击下&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度重塑着世界的每一个角落。从日常生活的点滴便利到复杂工作的高效推进&#xff0c;AI 的力量无处不在。然而&#xff0c;面对 AI 的强…