04.18 沒有公網IP如何實現內網穿透?

由於公網IP資源越來越緊張,現在很多運營商給撥號上網的用戶只分配內網IP地址,如下圖所示:

沒有公網IP如何實現內網穿透?

這樣的運營商內網IP是外網不可達的(即使用動態域名也不起作用)。而企業由於業務需要,比如虛擬局域網組網、辦公OA系統、ERP系統等,都需要有公網IP才可以實現。公網IP的解決,目前主要有三種方案:

  1. 申請固定IP專線。穩定且速度有保障,缺點是費用高。
  2. 雲方案。把業務主機都搬到雲上,直接通過雲主機來訪問。費用比較低,缺點是雲主機不能本地維護,且搬遷工作量都不小。
  3. 雲主機+內網穿透方案。通過雲主機做跳板來實現內網穿透,既可以複用現有的業務系統,又解決了公網IP的問題。第三種方案的成本是最低的,但是配置比較複雜。本文將對第三種方案做詳細介紹。

在沒有公網IP如何實現VPN組網?一文中,我們介紹了虛擬局域網組網部分。我們要介紹的方案,分為兩個步驟:1). 本地局域網和雲主機之間搭建虛擬局域網。2). 在雲主機上配置內網穿透的防火牆規則。具體步驟如下:

1. 搭建虛擬局域網

首先要在雲主機上安裝虛擬局域網軟件,配置ca證書等,網絡上已經有很多介紹,我就不再贅述了。下圖是最終的server端config文件。

沒有公網IP如何實現內網穿透?

然後是客戶端配置。在WSG的客戶端中,配置上雲主機的IP和端口、用戶名密碼等信息。即可成功組網。如圖:

沒有公網IP如何實現內網穿透?

沒有公網IP如何實現內網穿透?

2. 內網穿透的防火牆規則

組建虛擬局域網後,本地局域網就和雲主機處於同一個局域網內。我們再通過iptables配置一些防火牆規則,就可以把外網訪問重定向到局域網內部;原理和端口映射是一樣的。命令如下:

沒有公網IP如何實現內網穿透?

每一條內網穿透(端口映射)都由兩條iptables命令組成:

  1. DNAT:iptables -t nat -A PREROUTING -p tcp --dport xx -j DNAT --to-dest x.x.x.x
  2. SNAT:iptables -t nat -A POSTROUTING -d x.x.x.x -p tcp --dport xx -j SNAT --to-source y.y.y.y

其中,x.x.x.x是局域網內網主機的IP地址,y.y.y.y是雲主機的內網網段IP。

經過上述配置後,直接訪問雲主機的對應端口就可以穿透到內網。該方案是由iptables做數據包轉發,不需要保持連接做反向代理,穩定性和速度都比frp之類的反向代理要好的多。要實現開機自動添加規則的話,只需要把這兩條iptables命令添加到/etc/rc.local文件中。


分享到:


相關文章: