Linux学习-iptables之NAT

Posted 丢爸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习-iptables之NAT相关的知识,希望对你有一定的参考价值。

通过Vmware克隆创建三台虚拟机模拟NAT(CentOS6.10)

  1. 第一台主机网卡配置:IP:192.168.100.10,网关:192.168.100.20
  2. 第二台主机做为NAT主机,网卡1配置:IP:192.168.100.20,网卡2配置:192.168.200.10
  3. 第三台主机网卡配置:IP:192.168.200.20,网关:192.168.200.10
#第一台主机的网卡配置文件
[root@NAT1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.100.10
PREFIX=24
GATEWAY=192.168.100.20
DNS1=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth1"
#第二台主机的网卡配置文件
[root@NAT2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.100.20
PREFIX=24
DNS1=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth1"
[root@NAT2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.200.10
PREFIX=24
DNS1=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth2"
#第三台主机的网卡配置文件
[root@NAT3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.200.20
PREFIX=24
GATEWAY=192.168.200.10
DNS1=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth1"

三台主机配置完成后,NAT1和NAT2可以互相通信,NAT2和NAT3可以互相通信.

开启NAT2主机的路由转发功能
#CentOS6修改以下参数,如不存在则自行添加
[root@NAT2 ~]# vim /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
#查看参数修改情况
[root@NAT2 ~]# cat /proc/sys/net/ipv4/ip_forward
1
#CentOS7修改以下参数
[root@model ~]# vim /usr/lib/sysctl.d/50-default.conf
net.ipv4.ip_forward=1

修改完成后NAT3和NAT1就可以通信了。

将NAT3主机的默认网关给删除了,通过在NAT2主机上添加iptables规则来模拟内网主机(NAT1)能访问外网主机(NAT3)
#-----------内网至外网----------
#在NAT2主机上添加iptables规则--SNAT
[root@NAT2 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source 192.168.200.10
#在NAT2主机上添加iptables规则--MASQUERADE
[root@NAT2 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth2 -j MASQUERADE
#-----------内网至外网----------
如何发布公司内网服务器,DNAT转换目标地址
[root@NAT2 ~]# iptables -t nat -A PREROUTING -i eth2 -d 192.168.200.10 -p tcp --dport 22 -j DNAT --to-destination 192.168.100.10
#通过SSH访问正常
[root@NAT3 ~]# ssh 192.168.200.10
root@192.168.200.10's password: 
Last login: Fri Jul  9 17:40:47 2021
[root@NAT1 ~]# 
#-----------PNAT----
[root@NAT2 ~]# iptables -t nat -A PREROUTING -i eth2 -d 192.168.200.10 -p tcp --dport 2345 -j DNAT --to-destination 192.168.100.10:22
#通过2345端口访问SSH服务,输入密码后正常连接
[root@NAT3 ~]# ssh 192.168.200.10 -p 2345
root@192.168.200.10's password: 
Last login: Fri Jul  9 18:15:28 2021 from 192.168.200.20
[root@NAT1 ~]# 
#-----------PNAT----


以上是关于Linux学习-iptables之NAT的主要内容,如果未能解决你的问题,请参考以下文章

Linux之iptables(网络防火墙及NAT)

Linux学习笔记(三十二)iptables filter表案例 iptables nat表应用

Linux之iptables

linux基础之iptables SNAT和DNAT

Linux学习(二十九)iptables(三)nat表的应用

Linux之Nat表的应用