2008年6月14日 星期六

研發筆記-Linux IPSEC VPN NAT Passthrough

又是一個關於VPN的問題....
IPSEC VPN NAT Passthrough. 現在有NAT功能的Router都會具備的功能,這個功能簡單來說,就是Router下面的VPN client透過Router的NAT Passthrough連到外部Internet的VPN Server.

這裡我們遇到的問題是,客戶說我們的機器下面串了多台PC當VPN client,連到外部Internet的SVN Server,經過一段時間後,連線還是存在,但是卻無法ping通。

首先要解釋何謂NAT Passthrough.相對NAT Passthrough的功能叫做NAT-Traversal.
當一個VPN Client具有NAT-Traversal的功能的話,連線建立後,它出去的封包是有帶Port number的,所以NAT不會認錯,因為有IP跟Port就可以對應到下面的VPN Client,封包是可以送達的.

但是當VPN Client只有NAT Passthrough的功能的話,由於出去的封包沒有帶port,因此只能另外想辦法解決,LINUX團隊寫了一個Patch Kernel的程式,可以實現NAT Passthrough的功能,靠的就是用Client跟Server的SPI做pair來mapping IP Address.

但我們遇到的問題是,只有一個Client是正常的,而多個Client連線一段時間後就不正常了,原因是這個Patch只有針對一個Client而修正,據說是Linux團隊不建議使用IPSEC的原因,當然我們偉大的RD部門,最後還是修改了這個問題啦~~

2 意見:

Wayne uncle 提到...
作者已經移除這則留言。
Wayne uncle 提到...

可以請問一下,您是用哪一個 Kernel patch 來實作 SPI matching IP address