您的位置:首页 > 运维架构 > Linux

使用SNAT、DNAT策略实现网关应用

2012-05-16 00:14 381 查看
使用[/b]SNAT[/b]、[/b]DNAT[/b]策略实现网关应用[/b]

案例环境
Benet公司的网关服务器使用RHEL5系统,其eth0网卡通过光纤接入Internet,eth1网卡连接局域网络。由于只注册了一个公网IP地址,需要在网关服务器上进行适当配置,使位于局域网内的员工可以通过共享的方式访问Internet。另外,还需要将内网的www.benet.com服务器在Internet上发布,作为公司的电子商务平台

拓扑环境





需求描述
网关的eth0接口(192.168.1.254/24)连接外网,eth1接口(192.168.10.1/24)连接内网
配置SNAT策略使192.168.10.0/24网段可以访问Internet的所有应用
配置DNAT策略使外网访问http://192.168.1.254/时能够查看到192.168.10.3的Web服务
禁止其他未经明确许可的数据包访问
整理上述规则,编写为防火墙脚本文件

实现步骤
一、正确配置各主机的IP地址、默认网关地址等参数
…………省略
二、在内、外网测试机中均开启Web服务,以便验证效果(外网真实互联网
[root@localhost ~]# netstat -anptl | grep 80
tcp 0 0 :::80 :::* LISTEN 2630/httpd
三、在网关主机中正确设置SNAT、DNAT策略,,并测试效果
[root@localhost ~]# vim /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1 //开启路由转发

[root@localhost ~]# sysctl –p //重新读取配置
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to-source 192.168.1.254
[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.1.254 -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.3

验证效果






四.编写为防火墙脚本文件ipt_nat.sh,设置为开机自动运行该脚本
[root@localhost ~]# vim /opt/ipt_net.sh

#!/bin/bash
#iptables script
#-------------定义变量----------------#
INET_IP="192.168.1.254"
INET_IF="eth0"
LAN_NW="192.168.10.0/24"
LAN_WWW="192.168.10.3"
IPH="/sbin/iptables"
#-------------开启路由转发功能--------#
/sbin/sysctl -w net.ipv4.ip_forward=1 &> /dev/null
/sbin/sysctl -p &> /dev/null
#-------------设置iptables规则--------#
$IPH -X
$IPH -t nat -X
$IPH -t mangle -X
$IPH -t raw -X
$IPH -F
$IPH -t nat -F
$IPH -t mangle -F
$IPH -t raw -F
$IPH -P INPUT DROP
$IPH -P FORWARD DROP
$IPH -P OUTPUT DROP
$IPH -t nat -A POSTROUTING -s $LAN_NW -o $INET_IF -j SNAT --to-source $INET_IP
$IPH -t nat -A PREROUTING -d $INET_IP -i $INET_IF -j DNAT --to-destination $LAN_WWW
$IPH -A FORWARD -s $LAN_NW -j ACCEPT //允许转发192.168.10.0/24网段
$IPH -A FORWARD -d $LAN_NW -j ACCEPT
$IPH -A INPUT -d $INET_IP -j ACCEPT //允许网关访问公网
$IPH -A OUTPUT -s$INET_IP -j ACCEPT

[root@localhost ~]# chmod +x /opt/ipt_net.sh
[root@localhost ~]# echo “/opt/ipt_net.sh” > ~/.bash_profile //设置开机执行脚本
五、重启系统后再次验证结果
1. 内网访问外网



2. 外网访问内网www.benet.com


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux iptables