I have a couple of servers (one Intranet server for work, and my personal web server/firewall at home) that contain some public information, visible to the whole world, or at least anyone who knows the address, and some information that should only be visible to users on the LAN.
Each of these servers can determine whether the private information should be shown on the basis of the contents of the php _SERVER superglobal variable: If the user views the server by an IP address in the private address range, they're on the LAN. If it uses the FQDN, then the user is from the Internet, and should be denied access to the confidential information.

An addition to using .htaccess controls, the following code snippet in a custom block allows different menus to be presented to users depending on which interface they are using to access a multi-homed host.

if (strcmp($_SERVER["SERVER_NAME"], "10.0.0.1") == 0) {
  $output = t('Private Content Here - This is the content you see if you're on the internal interface');
}
else {
  $output = t('Public Content Here - Some of the content on this web server is only visible to computers on the LAN. Since you have accessed this server on the public interface, you cannot view these pages.');
}

return $output;

IPs can be faked

Be aware that IP addresses can be faked easily, so don't use this template for confidential material.