Here's a thing that I stumbled over recently: I always assumed Ubuntu does not have an Internet Connection Sharing (ICS) functionality because there was no such option in the network manager settings in the "Mobile Broadband" section. But this was an error of thinking because I was assuming ICS would work the same way on Ubuntu as it does on Windows. As it turns out, however, configuring ICS works exactly the other way round.
In Windows (XP, Vista, 7) the ICS option has to be activated on the Interface that offers Internet connectivity (e.g. the 3G link) and here, the interface has to be selected on which the sharing computers are on (e.g. the Ethernet port).
In Ubuntu however, you have to set the "sharing" option on the interface where the sharing computers are (e.g. the Ethernet port) and NOT on the interface with the Internet connectivity. This is why there is no option in the "Mobile Broadband" section. The Ubuntu way of doing things has to significant advantages:
- There is no need define which interface shares to which other interface.
- Defining the Ethernet port as the port where the shared computers are connected allows Ubuntu (or rather iptables) to select any interface that has Internet connectivity to act as the Internet port. Even switching from 3G to Wi-Fi (both having Internet connectivity) is seamless to all computers connected to the Ethernet port (except for TCP and UDP connections being reset during the switchover).