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通外网

相关推荐
叶北辰CHINA5 分钟前
nginx反向代理,负载均衡,HTTP配置简述(说人话)
linux·运维·nginx·http·云原生·https·负载均衡
不惑_21 分钟前
在 Ubuntu 安装 Python3.7(没有弯路)
linux·运维·ubuntu
不灭锦鲤1 小时前
ssrf学习(ctfhub靶场)
网络·学习·安全
weixin_548444261 小时前
2024年最新版本神马TV8.5影视APP源码 293TV影视点播系统源码搭建教程 神马TV8.2加强版反编译教程 保姆级小白可搭建 完整版本视频教程
网络
theo.wu2 小时前
使用Buildpacks构建Docker镜像
运维·docker·容器
玉树临风江流儿2 小时前
Linux驱动开发(速记版)--设备模型
linux·驱动开发
杰哥在此2 小时前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程
枫叶丹44 小时前
【在Linux世界中追寻伟大的One Piece】进程信号
linux·运维·服务器
网络研究院4 小时前
如何安全地大规模部署 GenAI 应用程序
网络·人工智能·安全·ai·部署·观点
刻词梨木4 小时前
ubuntu中挂载点内存不足,分配不合理后使用软链接的注意事项
linux·运维·ubuntu