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

ぐ巨炮叔叔 提交于 2020-03-14 00:54:51

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

2、拓扑图

3、配置步骤

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

        假设我有一个域名“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按钮,新建协议。

        

        

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

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

    

    

        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服务器,服务器一看,这时内网的兄弟机器访问我,然后就接受这个数据包并回传数据,至此通信完成。而我们的目的也就达到。      

4、测试

    






易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!