由于公網(wǎng)IP資源越來(lái)越緊張,現(xiàn)在很多運(yùn)營(yíng)商給撥號(hào)上網(wǎng)的用戶只分配內(nèi)網(wǎng)IP地址,如下圖所示:
這樣的運(yùn)營(yíng)商內(nèi)網(wǎng)IP是外網(wǎng)不可達(dá)的(即使用動(dòng)態(tài)域名也不起作用)。而企業(yè)由于業(yè)務(wù)需要,比如虛擬局域網(wǎng)組網(wǎng)、辦公OA系統(tǒng)、ERP系統(tǒng)等,都需要有公網(wǎng)IP才可以實(shí)現(xiàn)。公網(wǎng)IP的解決,目前主要有三種方案:
申請(qǐng)固定IP專線。穩(wěn)定且速度有保障,缺點(diǎn)是費(fèi)用高。
云方案。把業(yè)務(wù)主機(jī)都搬到云上,直接通過(guò)云主機(jī)來(lái)訪問(wèn)。費(fèi)用比較低,缺點(diǎn)是云主機(jī)不能本地維護(hù),且搬遷工作量都不小。
云主機(jī)+內(nèi)網(wǎng)穿透方案。通過(guò)云主機(jī)做跳板來(lái)實(shí)現(xiàn)內(nèi)網(wǎng)穿透,既可以復(fù)用現(xiàn)有的業(yè)務(wù)系統(tǒng),又解決了公網(wǎng)IP的問(wèn)題。第三種方案的成本是最低的,但是配置比較復(fù)雜。本文將對(duì)第三種方案做詳細(xì)介紹。
在沒(méi)有公網(wǎng)IP如何實(shí)現(xiàn)VPN組網(wǎng)?一文中,我們介紹了虛擬局域網(wǎng)組網(wǎng)部分。我們要介紹的方案,分為兩個(gè)步驟:1). 本地局域網(wǎng)和云主機(jī)之間搭建虛擬局域網(wǎng)。2). 在云主機(jī)上配置內(nèi)網(wǎng)穿透的防火墻規(guī)則。具體步驟如下:
1. 搭建虛擬局域網(wǎng)
首先要在云主機(jī)上安裝虛擬局域網(wǎng)軟件,配置ca證書(shū)等,網(wǎng)絡(luò)上已經(jīng)有很多介紹,我就不再贅述了。下圖是最終的server端config文件。
然后是客戶端配置。在WSG的客戶端中,配置上云主機(jī)的IP和端口、用戶名密碼等信息。即可成功組網(wǎng)。如圖:
2. 內(nèi)網(wǎng)穿透的防火墻規(guī)則
組建虛擬局域網(wǎng)后,本地局域網(wǎng)就和云主機(jī)處于同一個(gè)局域網(wǎng)內(nèi)。我們?cè)偻ㄟ^(guò)iptables配置一些防火墻規(guī)則,就可以把外網(wǎng)訪問(wèn)重定向到局域網(wǎng)內(nèi)部;原理和端口映射是一樣的。命令如下:
每一條內(nèi)網(wǎng)穿透(端口映射)都由兩條iptables命令組成:
DNAT:iptables -t nat -A PREROUTING -p tcp --dport xx -j DNAT --to-dest x.x.x.x
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是局域網(wǎng)內(nèi)網(wǎng)主機(jī)的IP地址,y.y.y.y是云主機(jī)的內(nèi)網(wǎng)網(wǎng)段IP。
經(jīng)過(guò)上述配置后,直接訪問(wèn)云主機(jī)的對(duì)應(yīng)端口就可以穿透到內(nèi)網(wǎng)。該方案是由iptables做數(shù)據(jù)包轉(zhuǎn)發(fā),不需要保持連接做反向代理,穩(wěn)定性和速度都比f(wàn)rp之類的反向代理要好的多。要實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)添加規(guī)則的話,只需要把這兩條iptables命令添加到/etc/rc.local文件中。