Testing in IE 5, 5.5, 6, and 7 on a Single Machine

Mon 09 Jun 2008

I’ve always found it a pain to test in the various versions of Internet Explorer. In Windows, there’s no easy way to install multiple versions, so whether you are working on a physical Windows machine, or a virtual machine via Parallels, VMware or some other virtualization software, proper testing in IE always required at least two or three separate machines.

The other day a co-worker showed me a cool little setup that will allow you to test in IE5, 5.5, 6, and 7 on the same physical Windows XP machine. I suppose this would also work on a virtualized copy of Windows XP on a Mac, but since this solution involves virtualization, you’d be running a virtual machine inside of another virtual machine, which means you’d need a heck of a powerful system.

Assuming you are running Windows XP, you should already have a copy of IE7 installed. One IE down, 3 more to go. So, here’s how to get the rest of them:

  1. Download VirtualBox and follow the installation instructions.
  2. Grab the .iso for your choice of Linux distro (Ubuntu, Kubuntu, Xubuntu, Fedora, Gentoo, Debian, Suse, Mandriva, or PCLinuxOS should work at the time of this writing) . I used Ubuntu in my setup.
  3. Launch VirtualBox and setup a new virtual machine for your Linux distro.
  4. Start the virtual machine and follow the prompts in the First Run wizard, making sure to set your media source to the Linux .iso you just downloaded.
  5. Click Finish at the end of the wizard and your Linux distro should start the installation process (this process will vary depending on your distro of choice).
  6. Visit the IEs4Linux website and follow the instructions to install cabextract, Wine and IEs4Linux.
  7. Once you’re done with the install, you should have icons on your Linux desktop for each of the IEs that you installed. Just double-click and point them at the URL you want to test!

Tunneling and Port Forwarding Using SSH

Tue 25 Sep 2007

At the company I work for, we run services such as SSH, FTP, VNC, etc. on non-standard ports for security reasons. I frequently use client applications that allow me to connect to these services, but have a limitation of only being able to connect on standard ports. A way to get around this limitation is to use SSH’s port forwarding functionality.

Note: This tip will work on UNIX, Linux, and Mac OS X straight from the command line because they come with SSH clients out of the box. For Windows, another application such as PuTTY will be required.

So, let’s say that you want to be able to VNC into a remote system with a host name of my.host.com that runs VNC on port 9999, but your VNC client will only send traffic on the standard VNC port (5900). Provided that the remote system runs SSH on the standard port (to keep it simple for this example), you can run the following command:

ssh -L5900:my.host.com:9999 me@my.host.com

Next, the remote system should promt you for your password. After you’ve authenticated, a tunnel should be established. Then, just point your VNC client at your local machine (localhost or 127.0.0.1) on the standard VNC port (5900) and it will forward to the remote machine on port 9999.

You may not be running SSH on the server you wish to connect to, or the server may not be externally accessible. But, if you are running SSH on a machine that has access to the one you wish to connect to, here’s another option:

ssh -L5900:192.168.10.50:9999 me@my.host.com

In this example, the machine running the VNC server (192.168.10.50) is not accessible from outside of the network, but my.host.com is externally accessible and can communicate with 192.168.10.50 (because it’s on the same network). So, what we are actually doing is: 1) establishing an SSH tunnel to my.host.com and 2) forwarding the local port 5900 to 192.168.10.50’s port 9999 through the tunnel to my.host.com.

Hopefully you’ll get as much use out of this as I have.