The gateway is basically a service that you can call from your C# code and communicate with it over HTTP. This is why you can basically use any gateway, no matter if it is based on .NET or not. If you want to host a free one yourself, here's one for Linux.
And here's the WSDL for a service that says it can send SMS messages in the whole world. (Not tested):
http://www.webservicex.com/sendsmsworld.asmx?WSDL