iptables配置实现NAT(随手记)

这里写目录标题

  • iptables配置NAT
    • [0. 环境准备](#0. 环境准备)
    • [1. 防火墙配置(lb01)](#1. 防火墙配置(lb01))
    • [2. 内网服务器配置(front)](#2. 内网服务器配置(front))
    • 测试

iptables配置NAT

0. 环境准备

  • lb01: 作为防火墙,使用iptables实现nat
  • front: 作为内网应用,关闭公网网卡(ens33),使用内网网卡与lb01互通,实现经过防火墙的访问外网(ens37)

1. 防火墙配置(lb01)

shell 复制代码
# 编辑iptables
# 这条命令的作用是将所有从10.0.0.0/24网络出发的数据包的源IP地址改为192.168.100.155
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.100.155



# 开启内核转发(nat必须开启,不然不会实现一台主机内的路由转发
# 永久生效
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
  • iptables:这是用来设置、维护和检查Linux内核防火墙的命令行工具。
  • -t nat:指定要操作的是nat表。iptables有多个表,每个表包含不同的链,nat表用于处理网络地址转换。
  • -A POSTROUTING:-A表示向链中添加一条规则,POSTROUTING链在所有数据包离开本机之前应用,这是设置SNAT的理想位置。
  • -s 10.0.0.0/24:指定源地址为10.0.0.0/24网络,即所有来自这个网络的出站数据包都会受到这条规则的影响。
  • -j SNAT:-j表示跳转目标,SNAT表示执行源地址转换。
  • --to-source 192.168.100.155:指定转换后的源IP地址为192.168.100.155。这意味着所有从10.0.0.0/24网络出发的数据包,在经过NAT转换后,它们的源IP地址都会被改为192.168.100.155。

若公网ip不固定,也可使用-j MASQUERADE

iptables -t nat -A POSTROUTING -s 内网网段 -j MASQUERADE

2. 内网服务器配置(front)

shell 复制代码
# ens37(内网网卡)添加网关
[root@front01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
[root@front01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
BOOTPROTO=static
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=10.0.0.148
GATEWAY=10.0.0.155 # 添加此行,指向启用NAT的服务器内网ip
NETMASK=255.255.255.0

# 关闭公网网卡
nmcli connection down ens33

#可以使用ip route或route -n查看默认路由
[root@front01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.155      0.0.0.0         UG    100    0        0 ens37
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 ens37

测试

  • 无nat规则

    ping不通外网

  • 有nat规则

    能ping通外网

相关推荐
人工智能训练1 小时前
UE5中如何解决角色网格体“掉下去”的问题
运维·服务器·windows·容器·ue5
Tipriest_2 小时前
Debian 系与 RPM 系常用软件包查询命令/信息/列出已安装包/模糊查找等命令
运维·debian·rpm
雅欣鱼子酱3 小时前
USB Type-C PD取电(诱骗,诱电,SINK),筋膜枪专用取电芯片
网络·人工智能·芯片·电子元器件
Sumlll_8 小时前
Ubuntu系统下QEMU的安装与RISC-V的测试
linux·ubuntu·risc-v
猫头虎8 小时前
2025最新OpenEuler系统安装MySQL的详细教程
linux·服务器·数据库·sql·mysql·macos·openeuler
木子.李3479 小时前
ssh连接远程服务器相关总结
运维·服务器·ssh
BD_Marathon10 小时前
SpringBoot——辅助功能之切换web服务器
服务器·前端·spring boot
晚风吹人醒.10 小时前
SSH远程管理及访问控制
linux·运维·ssh·scp·xshell·访问控制·远程管理
AI大模型应用之禅11 小时前
全球股市估值与可持续农业垂直种植技术的关系
网络·ai
掘根11 小时前
【仿Muduo库项目】HTTP模块2——HttpRequest子模块,HttpResponse子模块
网络·网络协议·http