From what I've been able to glean from the source code (didn't learn python here either, chose ruby instead, whoops), there's actually nothing stopping the script from working fully on a public IP. If you know your public IP and have ports tcp80 and udp53 forwarded, you should be able to run this and have anyone setting their dns server to the spoof connect fully.
That is, in theory -- in practice, I've been completely unable to have people connect to it running on different boxes on different networks, leading me to believe I'm just missing something in the code.
M@T, is there a specific reason why you had to write a separate DNS server? Why were you unable to just connect to your friend running his spoofed dns server, with ports 53 and 80 forwarded?