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

 使用SNATDNAT策略实现网关应用

 

案例环境

Benet公司的网关服务器使用RHEL5系统,其eth0网卡通过光纤接入Interneteth1网卡连接局域网络。由于只注册了一个公网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.3Web服务

禁止其他未经明确许可的数据包访问

整理上述规则,编写为防火墙脚本文件

 

实现步骤

一、 正确配置各主机的IP地址、默认网关地址等参数

…………省略

二、 在内、外网测试机中均开启Web服务,以便验证效果(外网真实互联网

[root@localhost ~]# netstat -anptl | grep 80

tcp        0      0 :::80                       :::*                        LISTEN      2630/httpd         

三、 在网关主机中正确设置SNATDNAT策略,,并测试效果

[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)