这里写目录标题
- 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通外网