VMware实现iptables NAT及端口映射


VMware实现iptables NAT及端口映射

文章插图

1. 前言
本文只讲解实战应用,不会涉及原理讲解 。如果想要了解iptables的工作流程或原理可参考如下博文 。
具体操作是在PC机的VMware虚拟机上进行的,因此涉及的地址都是内网IP 。在实际工作中也是一样的操作流程,只需要把涉及外网的地址改为公网IP即可 。
 
1.1. 为什么有这篇文章?原因是在日常工作中,我们都会在自己的电脑上安装VMware虚拟机,并由此实现一些业务系统【如:LNMP】或模拟线上的网络环境等 。
而本文模拟的就是IDC机房或办公网的环境 。机房内网服务器不能上外网,只能通过网关服务器上外网 。而外网服务器想要访问机房内部的服务器,也只能通过网关服务器转发实现访问 。
 
2. iptables表和链的工作流程
VMware实现iptables NAT及端口映射

文章插图
 
 
2.1. 常用操作## 清空所有规则【默认是filter表】
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
## 查看规则
iptables -nL
iptables -nL -t nat
## 删除指定表指定链的指定行数据
iptables -t nat -D POSTROUTING 1
 
3. 涉及虚拟机网络设置3.1. 内部服务器node01网络设置3.1.1. 内网设置【只有一个网卡】
VMware实现iptables NAT及端口映射

文章插图
 
备注:
使用LAN区段,那么本机登录该虚拟机也不行,也ping不通,不在同一个网段不能互访 。只能通过网关服务器ssh跳转登录访问 。
 
eth0配置:
[root@InnerNode01 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPV6INIT=yes
USERCTL=no
IPADDR=172.16.10.10
NETMASK=255.255.255.0
GATEWAY=172.16.10.5
# 阿里云DNS
DNS1=223.5.5.5
DNS2=223.6.6.6
3.2. 网关服务器网络设置3.2.1. 内网设置
VMware实现iptables NAT及端口映射

文章插图
 
备注:
网关服务器的内网地址和内部服务器的地址在同一个网段 。因此他们之间可以互访 。
 
eth0配置:
[zhang@gateway01 network-scripts]$ cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
【VMware实现iptables NAT及端口映射】NM_CONTROLLED=yes
BOOTPROTO=none
IPV6INIT=yes
USERCTL=no
IPADDR=172.16.10.5
NETMASK=255.255.255.0
3.2.2. 外网设置【模拟的公网】
VMware实现iptables NAT及端口映射

文章插图
 
eth1配置:
[root@gateway01 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPV6INIT=yes
USERCTL=no
IPADDR=10.0.0.5
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
# 阿里云DNS
DNS1=223.5.5.5
DNS2=223.6.6.6
3.3. 外网服务器设置3.3.1. 外网设置【只有一个网卡】
VMware实现iptables NAT及端口映射

文章插图
 
eth0配置:
[root@internet01 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPV6INIT=yes
USERCTL=no
IPADDR=10.0.0.8
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
# 阿里云DNS
DNS1=223.5.5.5
DNS2=223.6.6.6
 
4. 简单的NAT路由器4.1. 网络架构
VMware实现iptables NAT及端口映射

文章插图
 
 
4.2. NAT需求介绍网关2个网络接口
Lan口: 172.16.10.5/24 eth0
Wan口: 10.0.0.5/24 eth1
目的:实现内网中的节点服务器node01 IP:172.16.10.10(网段:172.16.10.0/24)可控的访问internet 。
 
4.3. 网关服务器操作1、网关机器开启linux的转发功能
[root@gateway01 ~]# tail /etc/sysctl.conf # 添加如下内容
…………
net.ipv4.ip_forward = 1
[root@gateway01 ~]# sysctl -p # 生效
2、网关机器iptables操作
iptables -P FORWARD DROP
将FORWARD链的策略设置为DROP,这样做的目的是做到对内网ip的控制,你允许哪一个访问internet就可以增加一个规则,不在规则中的ip将无法访问internet 。
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
这条规则规定允许任何地址到任何地址的确认包和关联包通过 。一定要加这一条,否则你只允许lan IP访问没有用 。


推荐阅读