In a previous post, I described how I got some additional packages installed on Tiny Core linux to use with Qemu in my GNS3 simulations. While that post describes how I got a DHCPv6 client loaded on my Tiny Core image, at the time I also loaded Apache. This gave me an IPv4 / IPv6 web server to test with. Additionally, Apache can be run as a proxy server, so I could test IPv4 / IPv6 proxy services with the single Apache install.
The first step was to create a configuration file for both web server and proxy. The default is installed in /usr/local/apache2/conf/httpd.conf and is suitable for the web server configuration. I copied that file to /usr/local/apache2/conf/proxy.conf and edited it. I kept only the "LoadModule" commands and then added:
ServerRoot "/usr/local/apache2"
listen 8080
User tc
Group staff
ProxyRequests On
You can get fancier, but that's all you really need for testing in a closed GNS3 lab environment.
Next, a nice home page on the web server that automatically displays some information would be nice. Printing environment variables like client IP address and server IP address will come in handy when testing through a proxy server to see what address (IPv4 or IPv6, client or proxy server) the "world" will see. Thankfully, the default install has this file. Unfortunately, it didn't work for me.
I had a permission issue and since the CGI script was really a link to the file, I couldn't change the permissions. Easy solution was to simply copy the file to the CGI bin directory and make the appropriate edits.
So first I need an index.html in /usr/local/apache2/htdocs. That looks like this:
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>It works!</h1>
<a href = "cgi-bin/test-cgi-new">Environment</a>
</body>
Next, the actual /usr/local/apache2/cgi-bin/test-cgi-new script is create with:
cd /usr/local/apache2/cgi-bin
cp ./test-cgi ./test-cgi-new
chown tc test-cgi-new
chgrp staff test-cgi-new
chmod 755 test-cgi-new
Finally, a startup script for both web server and proxy server in /etc/init.d/services:
--httpd--
#!/bin/sh
case "${1}" in
start)
/usr/local/apache2/bin/httpd
;;
stop)
pkill httpd
;;
status)
pidof httpd
;;
*)
exit 1
;;
esac
--proxy--
#!/bin/sh
case "${1}" in
start)
/usr/local/apache2/bin/httpd -f /usr/local/apache2/conf/proxy.conf
;;
stop)
pkill httpd
;;
status)
pidof httpd
;;
*)
exit 1
;;
esac
Now I can start them with "sudo /etc/init.d/services/httpd start" and "sudo /etc/init.d/services/proxy start".
Of course, make sure you do this on Qemu outside of GNS3 and save your configurations by editing the appropriate "/opt/.filetool.lst" file and running "filetool" to backup as described in the previous post.
Then, I created a simple GNS3 lab with a router in the middle. I made one connection bridged to my host machine (loopback interface) and added some routes on the host to point towards the simulation networks. I made another router connection to one instance of Qemu where I run the proxy service. The final router connection goes to another instance of Qemu where I run the web server. Now I can test from my host browser on IPv4 and IPv6 to the test web server and I can also configure the simulation proxy server on my host to test out IPv4 / IPv6 proxy services to the web server in the simulation.
Next, I'll describe how I setup and tested Server Load Balancing 6 to 4 (SLB64) with HAProxy.