iptables实战系列:通过NAT转发实现私网对外发布信息

原创
系统 Linux
本文将介绍一个使用iptables实现NAT转发功能的案例。我们假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是私网IP,通过该私网IP用户无法向外发布信息。但是,部分用户要求建立自己的WWW服务器对外发布信息。

【51CTO独家特稿】本文将介绍一个使用iptables实现NAT转发功能的案例。

本文假设读者已经对NAT的原理和基本用法有所了解。如不确定,可参考以下文章:

  1. 如何用iptables实现Linux下强大的NAT功能
  2. 如何用iptables实现NAT
  3. iptables nat表基本语法

本文案例中,我们假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是私网IP,通过该私网IP用户无法向外发布信息。但是,部分用户要求建立自己的WWW服务器对外发布信息。

我们可以在防火墙的外部网卡上绑定多个合法IP地址,然后通过ip映射使发给其中某一个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。

具体的IP分配如下: 

(1)该ISP分配给A单位www服务器的IP为:

私网ip:172.168.92.100

公网ip:210.95.33.100

(2)该ISP分配给B单位www服务器的IP为:

私网ip:172.168.92.200

公网ip:210.95.33.200

(3)Linux防火墙的IP地址分别为:

内网接口eth1:172.168.92.10

外网接口eth0:210.95.33.1

然后,我们需要进行如下步骤地操作:

(1)将分配给A、B单位的真实ip绑定到防火墙的外网接口,以root权限执行以下命令:

#ifconfig eth0 add 210.95.33.100 netmask 255.255.255.0
#ifconfig eth0 add 210.95.33.200 netmask 255.255.255.0

(2)成功升级内核后安装iptables,然后执行以下脚本载入相关模块:

modprobe ip_tables
modprobe ip_nat_ftp

(3)对防火墙接收到的目的ip为210.95.33.100和210.95.33.200的所有数据包进行目的NAT(DNAT):

#iptables -A PREROUTING -i eth0 -d 210.95.33.100 -j DNAT --to 172.168.92.100
#iptables -A PREROUTING -i eth0 -d 210.95.33.200 -j DNAT --to 172.168.92.200

(4)对防火墙接收到的源ip地址为172.168.92.100和172.168.92.200的数据包进行源NAT(SNAT):

#iptables -A POSTROUTING -o eth0 -s 172.168.92.100 -j SNAT --to 210.95.33.100
#iptables -A POSTROUTING -o eth0 -s 172.168.92.200 -j SNAT --to 210.95.33.200

这样,所有目的ip为210.95.33.100和210.95.33.200的数据包都将分别被转发给172.168.92.100和172.168.92.200;而所有来自172.168.92.100和172.168.92.200的数据包都将分别被伪装成由210.95.33.100和210.95.33.200,从而也就实现了ip映射。 

【编辑推荐】

  1. iptables入门:邮件服务器简单防护
  2. iptables实战系列:公共网络服务防火墙
  3. 深入浅出Netfilter/iptables防火墙框架(入门篇)
  4. 深入浅出Netfilter/iptables防火墙框架(基础篇)
  5. Iptables作网关时一种简单的NAT使用方式
责任编辑:yangsai 来源: 51CTO.com
相关推荐

2011-03-15 14:26:23

iptablesNAT

2011-03-15 09:10:47

iptablesNAT

2011-03-16 09:05:29

iptablesNAT

2011-03-16 09:05:32

RedhatiptablesNAT

2011-09-07 09:21:04

2011-03-15 16:26:46

iptablesnat

2011-03-16 09:05:33

2011-03-16 09:05:53

NATiptables

2011-03-17 14:26:45

iptables 端口

2011-03-16 09:05:34

iptablesnat

2011-03-17 14:09:03

iptables na

2011-03-16 10:59:57

2011-03-17 13:02:07

iptables na

2011-03-16 09:53:25

2011-03-16 12:55:00

iptables 端口

2011-03-17 15:44:21

2011-03-17 13:55:23

iptablesNAT端口映射

2011-08-18 10:22:44

2011-03-17 13:28:49

iptables na

2014-07-31 10:55:08

域名NAT七层
点赞
收藏

51CTO技术栈公众号