利用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服務器,服務器一看,這時內網的兄弟機器訪問我,而後就接受這個數據包並回傳數據,至此通訊完成。而咱們的目的也就達到。      

四、測試

    

相關文章
相關標籤/搜索