You have to install the Application Request Routing ARR module which allows IIS to acts as a reverse proxy server. The module is available for free from Microsoft and will allow you to do exactly what you want.
UPDATE:
It's really straight forward to set up. For more information see this blog post on MSDN. For you scenario you basically set up an empty website on 192.168.2.27
with just a web.config that will take care of setting up the proxy rules. The content of this web.config will be (or similar) like this:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Reverse Proxy Inbound Rule" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://192.168.2.27/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="Reverse Proxy Outbound Rule" preCondition="ResponseIsHTML">
<match filterByTags="A, Form, Img" pattern="^http(s)?://192.168.2.21/(.*)" />
<action type="Rewrite" value="http{R:1}://192.168.2.27/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
<urlCompression doStaticCompression="false" doDynamicCompression="false" />
</system.webServer>
</configuration>
For this to work you must of course enable the 'Enable proxy' checkbox in the 'Application Request Routing Cache' module. This module can only be configured at the server root level (i.e. the node with the name of you server in IIS Manager).
Also make sure that the response of http://192.168.2.21
is not gzip compressed otherwise the URLRewrite module will not be able to rewrite the links in the response.