当前位置: 首页 > news >正文

【计算机网络】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.mrgr.cn/news/97263.html

相关文章:

  • Kubernetes 集群搭建(一):k8s 从环境准备到 Calico 网络插件部署(1.16版本)
  • T113s3远程部署Qt应用(dropbear)
  • 通过枚举、AOP、注解、反射填充公共字段
  • 在线记事本——支持Markdown
  • JavaScript基础--01-JS简介
  • 数据蒸馏:Dataset Distillation by Matching Training Trajectories 论文翻译和理解
  • 【Python基础】循环语句(2215字)
  • DDPM 做了什么
  • Go语言-初学者日记(七):用 Go 写一个 RESTful API 服务!
  • JavaScript基础--09-流程控制语句:选择结构(if和switch)
  • Windows 安装和使用 ElasticSearch
  • Python实现ssh自动连接
  • 【双维畅聊】网页版聊天室测试报告
  • 服务器磁盘io性能监控和优化
  • 道路裂缝数据集CrackForest-156-labelme
  • 3D图像重建中Bundle Adjustment的推导与实现
  • 【Python爬虫高级技巧】BeautifulSoup高级教程:数据抓取、性能调优、反爬策略,全方位提升爬虫技能!
  • 001 vue
  • Springboot切换到3.3.4后,使用spring security一些小问题记录
  • PyTorch构建自定义模型