有一小區,內部使用偽ip,大家通過一linux網關使用ip欺騙上網,現在有的內部用戶要對外發布信息,要建立自己的www服務器。但是因為內部使用的是偽ip,必須采取一定的手段來實現從Inte.net到內部www主機的訪問,比較常用的方法是端口轉發(用ipmasqadm實現)。我在想,有沒有更成熟的軟件可以實現基于URL的反向NAT,也就是說,每個內部的www主機都解析到linux網關的外部網卡,當收到如的請求時,網關可以自動轉發到真實的(假設為192.168.1.1), 收到的響應后再改寫源地址為網關的真實ip地址返回給internet用戶。也就是說可以工作在應用層進行分析轉發,同時工作在網絡層進行地址改寫。
關于實現反向web代理,除了上述的端口轉發外,還可用apache實現,當仍squid的加速模式同樣可實現。下面,我具體介紹apache反向web代理的實現。
一臺apache服務器(雙網卡)用專線接入Internet作為防火墻,在內部網段上有多臺WWW服務器希望這臺機器能使供外部世界訪問指定的WWW服務器
這臺機器真實ip地址為111.111.111.111,內部ip地址172.16.1.1
內部網段上有三臺web服務器:
www1(172.16.1.101)
www2(172.16.1.102)
www3(172.16.1.103)
這三臺web服務器類型不限,可以是apache,也可用IIS或其他系統。
外部dns服務器指定
www1.xxx.com(111.111.111.111)
www2.xxx.com(111.111.111.111)
www3.xxx.com(111.111.111.111)
apache配置時其它部份采用默認配置,以下才是我們關心的:
------------------------------------------------------------------------------------------
NameVirtualHost 111.111.111.111
<VirtualHost 111.111.111.111>
ServerName www1.xxx.com
ProxyPass /
ProxyPassReverse /
</VirtualHost>
<VirtualHost 111.111.111.111>
ServerName www2.xxx.com
ProxyPass /
ProxyPassReverse /
</VirtualHost>
<VirtualHost 111.111.111.111>
ServerName www3.xxx.com
ProxyPass /
ProxyPassReverse /
</VirtualHost>
--------------------------------------------------------------------------------------------
采用本方法,內部的WWW服務器和文件服務完全與外部世界隔開,不直接連接到外部,通過防火墻上運行的Apache服務提供對內部的代理訪問,增強了安全性,同時在防火墻上運行的Apache 服務器上無真正的內容,黑客難以篡改內容,符合了作為防火墻要求運行服務越少越安全的準則。
采用本方法,內部的WWW服務器的內容在防火墻上進行緩存,起到加速響應的效果。