在Citrix的環境中,NetScaler提供了良好的接入點解決方案,但是也造成了一些稽核上的困境。
有客戶面臨到經過了NetScaler後無法正確取得Source IP的困擾,即Web Server透過NetScaler (Two-Arm Mode)做Loadbalance後,無法看到Client IP Address的問題,只能看到SNIP(NetScaler的Ssub Net IP Address)的問題。
我們提供了下述解決方式:
官方網站參考連結
http://support.citrix.com/proddocs/topic/netscaler-load-balancing-93/ns-lb-advancedsettings-cip-tsk.html
To insert client IP address in the client request
by using the configuration utility
|
我寫Code的一個好友跟我說,可以透過下述ASP.NET語法去取得相關IP位址資訊,請您的AP Team可以嘗試看看。
string
clientIP = GetClientIP();
///
/// /// |
///
protected string GetClientIP()
{
//判所client端是否有設定代理伺服器
if (Request.ServerVariables["HTTP_VIA"] == null)
return Request.ServerVariables["REMOTE_ADDR"].ToString();
else
return Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
private static string RetrieveIP(HttpRequest request)
{
string ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (ip == null || ip.Trim() == string.Empty)
{
ip = request.ServerVariables["REMOTE_ADDR"];
}
return ip;
}
{
string ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (ip == null || ip.Trim() == string.Empty)
{
ip = request.ServerVariables["REMOTE_ADDR"];
}
return ip;
}
參考連結
經Lab測試結果與客戶驗證證明此法有效。
沒有留言:
張貼留言