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

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式