是否有可能在思科ios中实现一种基于策略的路由,根据主机头信息(http地址)将外部IP上的80端口请求转发给内部主机。
因此,如果有人访问http://server1.com (外部IP),它将请求转发给internal_ip1,如果是http://server2.com,则将请求转发给internal_ip2
我很清楚,这涉及到分析HTTP数据(应用程序级别),并且可以使用ISA Server或Varnish代理来完成这种情况。
但是有可能在思科上做这样的伎俩吗?
所以如果有人访问http://server1.com (外部IP),它将请求转发给internal_ip1,如果是http://server2.com,则将请求转发给internal_ip2
我很清楚,这涉及到分析HTTP数据(应用程序级别),并且可以使用ISA Server或Varnish代理来完成这种情况。
但是有可能在思科上做这样的伎俩吗?
是的,但是你将不得不在有趣的HTTPstream量中重新标记DSCP位。 我下面的解决scheme使用NBAR(基于networking的应用程序识别)来对感兴趣的stream量上的DSCP比特进行标记,并且基于策略路由(PBR)基于上述标记进行路由。
要求:
configuration:
class-map match-all CLASSIFY_HTTP_01 match protocol http host *server1.com* class-map match-all CLASSIFY_HTTP_02 match protocol http host *server2.com* ! policy-map REMARK_HTTP class CLASSIFY_HTTP_01 set dscp af12 class CLASSIFY_HTTP_02 set dscp af13 ! ip access-list extended AF12 permit ip any any dscp af12 ! ip access-list extended AF13 permit ip any any dscp af13 ! route-map PBR permit 10 match ip address AF12 ! This is a next-hop leading to internal_ip1 set ip next-hop 192.0.2.129 match ip address AF13 ! This is a next-hop leading to internal_ip2 set ip next-hop 192.0.2.130 ! interface FastEthernet0/1 description [All HTTP ingress to this interface] ip address 192.0.2.2 255.255.255.252 ip policy route-map PBR service-policy input REMARK_HTTP
所有这一切说,很多时候你使用一个真正的HTTP负载平衡器如F5这样的事情更好。 你可以强制路由器来做,但有点不自然。
解决scheme只能部分解决问题,因为我没有提到我们使用NAT。
因此,NBAR通过外部接口上的服务策略检查所有入站数据包,并为其分配DSCP位。
现在,问题是让这些数据包NAT翻译为内部ips。 示意图我需要这样的东西:
nat inside source static tcp <internal_ip_1> 80 interface <outside_interface> 80 <if dscp bits = af13> nat inside source static tcp <internal_ip_2> 80 interface <outside_interface> 80 <if dscp bits = af12>
除了原来的答案和克服NAT问题,您应该能够使用以下行代替服务策略到内部接口:
interface FastEthernet0/1 description Inside Interface ip address 192.0.2.2 255.255.255.252 ip nat inside ip policy route-map PBR service-policy output REMARK_HTTP
我目前还没有testing这个function,但是由于networking地址转换已经被处理了,我想这应该可以正常工作。
对不起挖掘一个旧的post,但我有兴趣做同样的原始海报,并认为我会增加这个为他人的利益。