2019-10-26 推荐TranslateIP v2(点击前往)。使用StoreFront SDK全新重构,使用更简单,并解决了V1版本不支持Chrome的问题。
在Web Interface时代,如果需要把内网的XA/XD环境发布的外网,那么可以通过设置Secure Access来进行IP以及Port映射,从而让外网用户通过地址转换的方式访问内网资源。但是在StoreFront发布之后,该功能已经被取消,取而代之的是,如果需要使用StoreFront发布资源到外网,那么唯一的办法就是通过Access Gateway/Netscaler进行ICA代理,否则就只能回退到使用Web Interface。
针对这种情况,这里提供了一个简单的IIS HttpModule来提供地址转换的功能,让StoreFront也具有了地址转换的功能,下载地址请参考文章结尾。
具体的部署方法如下:
- 复制TranslateIP.dll到需要的站点下的bin目录:12#比如默认StoreWeb站点路径如下:C:\inetpub\wwwroot\Citrix\StoreWeb\Bin
- 通过IIS管理器添加/启用该模块
- 建立配置文件并配置123456789#配置文件路径:C:\Windows\System32\inetsrv\TranslateIP_Rules.txt##配置文件格式#内网IP:ICA端口号,外网IP:映射端口号,*:CGP端口号,*:外网映射端口号192.168.100.111:1494,114.114.114.114:1495,*:2598,*:2599#上述规则:#内网 192.168.100.111 ICA 1494,CGP 2598#转换后 114.114.114.114 ICA 1495,CGP 2599
- 配置完成后,重新登陆即可
卸载方法:
- 通过IIS管理器删除该模块
- 删除配置文件
下载地址:
TranslateIP (3.0 KB, 2,394 次)
——————-
09/21/2014更新:开源该功能代码,详情请戳:https://github.com/XenMe/TranslateIP
为什么我在添加模块的时候type那个下拉菜单没有内容呢,服务器是w2k8 r2
如果下拉菜单里面没有内容,那么说明,你是不是把DLL放错了位置。
比如没有放到正确的网站的bin目录下面?
可以确定没有放错位置
结尾放了code出来,可以考虑编译一个.net3.5的版本.
默认是编译的.net 4.0,可能在2008R2上认不出来。
外网访问的时候报1030错误/版本XD7.6
这个工具相当的有用,是否可以开源?
等我整理一下后续开源吧。
也比较简单,有些 dirty hack
已经更新代码地址,有需要请戳文章末尾连接。
非常感谢。
PNA方式也成功了,在PNA的路径了同样加载此模块即可,太好用了 谢谢了
只要加载了插件的站点,所有的ICA文件都会经过插件的检查,所以,只要规则符合,那么就会被处理,对插件来说,Web/legacy PNA都是可行的。
我每次做都要在路由里面单独映射一个storefront的80端口影射到公网ip的80端口, 请问这个操作必要吗,是不是可有可无
必须。
TranslateIP只是用来转换ICA文件中的地址。
防火墙或路由器上80以及1494/2598端口都需要做映射。
你好,2012下成功,2008是不行的,但是为什么storefront方式成功,PNAgent方式不成功,也在PNAgent的bin里加入并指定同一txt不成功,
请问在PNAgent模式下有什么好的方式吗
froyo,你好,按照说明部署后,外网访问时发现ICA文件里使用的还是内网地址,没有使用外网地址。而且那个模块的位置我确定了是没问题的
最近实在没有精力来详细研究这个问题。
可以参考之前的评论检查:我只在英文版2012R2上进行过测试,其他版本没有经过测试。
没关系,衷心感谢~我们自己也研究研究
感谢你及时的回复,我用netstat看到的确是客户端连到后端虚拟机的IP上,系统没有进行IP转换。我的环境跟你一样,2012系统默认已经安装了.net 4.5,还需要另外装4.0?
不需要,如果没有.NET,那么安装会导致页面无法打开,从目前来看,多半是配置文件有误。
就是translateip_rules.txt这个文件? 这个文件内容如下:
172.16.2.174:1494,183.62.242.86:1495,*:2598,*:2599
前者IP是后端虚拟机的IP,防火墙做了对应的映射
前后不要有空行,看起来没有问题,那么就只能是安装错误了。
确认安装的站点是否正确,比如,访问的StoreWeb,安装到了StoreDesktop等其他站点。
在storeweb中能看到translateip的模块,代码是xenme.com.translateip。是否说明中dll文件跟txt两个文件的存放目录不对?
DLL目录如果不对,没有办法添加。
TXT配置文件目录必须放到C:\Windows\System32\inetsrv\该目录下。
在txt中,把虚拟桌面端口也映射,在路由中除了这两个,单独加个,storefront的80’端口映射
配置后,在外网登录用户后,长时间“正在连接”,然后提示连接失败,状态1030
1030一般都是网络不通,连接不上。
所以,首先检查客户端连接的IP是原有IP还是转换后的IP。
如果是原有IP,那么说明转换失败,请检查是否安装以及配置正确。如果是转换成功,那么检查防火墙配置以及桌面是否正常。
外网用的是域名方式登录,内网能正常打开桌面。
1. 内网可以的话,1030说明转换没有成功,或者防火墙映射问题
2. 转换和域名没有关系.
3. 如果是 Server 2012的话,那么下拉列表应该是可以看到的,如果没看到,说明放的位置有误,检查下你放的站点是否和你访问的是同一个站点
4. 如果是2008R2的话,看留言中,其他人的测试,应该是看不到,但是可以直接工作。
froyo,您好。如果要把storefront本身映射出去,是映射80就行了么,还需要映射其他端口么
是的。StoreFront本身只是一个网页,所以,如果是普通HTTP访问就映射端口80即可,如果是HTTPS,那么映射443就可以了。
如果是映射后端的XA/XD,就需要映射对应的1494/2598端口就可以了。
OK,我试试
最好在2012下使用,毕竟只测试过2012,新版本的StoreFront Application Pool也是运行在.Net 4.0下的,之前版本SF,可能还需要调整IIS的Application Pool运行版本,也可能导致SF本身处于非官方测试场景。所以,建议使用2012+SF2.1。
hi,froyo,请问这个translateIP无法在2008 R2下运行么?我在添加这个模块的时候出现错误,提示“生成此程序集的运行时比当前加载的运行时新,无法加载此程序集”
模块编译是在.NET 4.0下编译的,也是在WINDOWS 2012 R2上测试的。 2008R2,应该是需要安装.NET 4.0才可以运行。