我想允许某些用户通过 Citrix 访问我们的网络。我们使用 XenApp 5.0,并且允许使用 Internet Explorer,但希望限制他们可以访问的站点。例如,我想允许浏览内部网站点 A,但不允许浏览站点 B 或 C,或任何外部站点。
这种事情可以通过 Citrix 来控制吗?
答案1
您可以使用 GPO 强制这些用户使用代理脚本。
代理脚本是一个简单的 JavaScript,允许您通过不同的代理或直接进行直接连接。
创建脚本,以便允许的站点直接发送或通过网络上使用的代理发送(如果有),但任何未定义的站点都会发送到虚假的代理地址。
它可能是这样的:
var local_ip = myIpAddress();
function FindProxyForURL(url, host)
{
// Resolve host to IP address
var resolved_ip = dnsResolve(host);
// --- BEGIN ALLOWED DESTINATIONS ---
// Hosts and domains
if (localHostOrDomainIs(host, "intranet") ||
localHostOrDomainIs(host, "servicedesk") ||
localHostOrDomainIs(host, "serverfault.com"))
return "DIRECT";
// IP addresses
if ((resolved_ip == "10.11.12.13") ||
(resolved_ip == "60.61.62.63") ||
(resolved_ip == "80.81.82.83"))
return "DIRECT";
// IP ranges
if (isInNet(resolved_ip, "10.0.0.0", "255.0.0.0") ||
isInNet(resolved_ip, "172.16.0.0", "255.240.0.0") ||
isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") ||
isInNet(resolved_ip, "127.0.0.0", "255.255.255.0"))
return "DIRECT";
// --- END ALLOWED DESTINATIONS ---
// Default to bogus proxy server on same subnet as client!
return "PROXY 10.10.10.10:9999";
// --------------------------------------------------
}
如果使用代理,请将“DIRECT”替换为“PROXY ProxyIP:ProxyPort”。将虚假代理“PROXY 10.10.10.10:9999”替换为与 Citrix 服务器位于同一站点的 IP 地址,以保持 LAN 上的死端流量。
如果您愿意,您可以添加更复杂的条件,例如对“url”或“host”变量进行正则表达式匹配。
使用以下方法测试你自己的脚本http://code.google.com/p/pactester/。
将脚本放在带有 .pac 扩展名的内部 Web 服务器上,并将 URL 放在 GPO 中。确保将 .pac 文件扩展名作为“text/javascript”添加到 Web 服务器的 MIME 类型列表中。
我从来没有将 PAC 文件用于此目的,因此您可能希望确保当 Internet Explorer 无法使用虚假代理服务器时,它不会以某种方式回退到 DIRECT。
只是一个想法。