利用juniper+iptables,在外网访问内网服务器。

一、用到的设备:juniper防火墙、linux服务器、花生壳。linux

二、拓扑图
shell

三、配置步骤数据库

         网络上主机与主机之间通讯,是根据ip地址来寻找对方。而内网环境基本上都是私有地址,因此咱们正常状况下没法访问内网的主机。就算咱们知道Juniper出口的ip地址,只要Juniper从新拨号,那么这个Ip地址就会改变,可是咱们又必需要用到ip地址。这时,咱们就要用到“花生壳”了。购买一个域名,每当Juniper从新拨号后,它都能解析光纤最新的ip地址。而后,再利用防火墙的转发规则,咱们就能够实现从内网访问外网。
vim

        假设我有一个域名“cninsure-2011.gicp.net“ ,本例中,我最终的目录是访问内网的数据库服务器,通常状况下,直接访问数据库服务器不太安全,这时,咱们能够利用Linux服务器自带的iptables 对端口进行转发,譬如说我在家访问33669号端口,当数据包通过Juniper防火墙到达192.168.1.50后,根据iptables的规则,只要数据包的目的端口是33669,就将该包转发到192.168.1.228的3306号上,而数据库的经常使用端口就是3306,从而在外网访问数据库。安全

        a、在Juniper防火墙上添加策略,放行目的端口是33669的数据包。以下图所示服务器

                登陆Juniper的控制端,左边Policy---->Service---->Custom,而后点右上角的New按钮,打开新建页面。建立一个Policy:wai_nei  tcp协议,端口是33669.   
网络

        而后左边Policy---->Policies, 右上角的New按钮,新建协议。
tcp

        

        

        这里说明下,这里面的配置是同事配好的,我作的时候,只改了Name和Service这两个地方。配好以上三步后,在去Policies下面查看下,看是否启用了。这几步是新建策略并添加到防火墙上运行。
测试

        接下来是配置防火墙的转发规则,Juniper和Linux 都要配。首先是Juniper的转发。Juniper的转发有两种方式分别为MIP和VIP,本例中我用的是VIP。由于域名会解析到二号拨号光纤。因此接下来就是配置数据包从二号光纤的转发规则。左边Network---->Interface---->ethernet0/2-Edit---->选择VIP---->点右上角的New按钮。进入新建页面。
spa

    

    

        Virtual  IP:Juniper会自动捕捉。

        Virtual    Port:你要放行的端口,这里写33669

        Map  to  Service:这里选择以前咱们建立的wai_nei 。

        Map  to  IP  :将要转发给那台服务器,这里咱们填写192.168.1.50.

        以上Juniper上的规则就已经配置完成了。

        接下来就是配置192.168.1.50上Iptables的转发规则。

        打开192.168.1.50这台服务器对数据包的转发功能,vim  /etc/sysctl.conf   设置这项  net.ipv4.ip_forward = 1 保存退出,而打开iptables 并设置以下规则。

        咱们分析下,当数据包从Juniper转发到192.168.1.50上时,此时数据包源地址是Juniper的内网地址,而目的地址是192.168.1.50。而目的端口是33669。而咱们最终的目的是访问192.168.1.228的3306号端口,故此根据33669号端口,咱们要把该包转发到192.168.1.228这台服务器上。数据包进入192.168.1.50前咱们要修改他的目的地址

iptables -t nat -A PREROUTING -d 192.168.1.50 -p tcp -m tcp --dport 33669 
-j DNAT --to-destination 192.168.1.228:3306

       根据iptables的转发规则,接下来是filter表的FORWARD链对数据包转发。

iptables -P FORWARD ACCEPT   
---直接设置FORWARD的默认转发规则是ACCEPT。

       此时数据包就到的nat表的POSTROUTING链,这时咱们要修改数据包的源地址。

iptables -t nat -A POSTROUTING -d 192.168.1.228 -p tcp -m tcp --dport 3306 
-j SNAT --to-source 192.168.1.50

      通过转发后的数据包源ip 192.168.1.50  目的ip192.168.1.228,目的端口是3306。这样包到达192.168.1.228服务器,服务器一看,这时内网的兄弟机器访问我,而后就接受这个数据包并回传数据,至此通讯完成。而咱们的目的也就达到。      

四、测试

    

相关文章
相关标签/搜索