This is something I suspected would come up soon enough and is likely due to the way the IP verification determines its own address. I'll try to make sure we address this in the next update, but for now a temporary fix that should work for servers using a different BindAddress is to use the following line to set the IP check variable manually:
$IPv4::InetAddress = $Host::BindAddress;
If you pop this into any file that loads before our scripts are run (maybe create a new .cs file to pop in autoexec if you run multiple configs) it should be fine assuming it's set to the IP the clients see.
I'm asleep at the moment myself, but in the morning I can open the script on our end and check it out.
Edit: I've updated the installer with something that should fix this particular problem (as well as an uninstaller, but that's unrelated). If you don't want to download the whole thing, you could just replace your existing T2csri.vl2 with this: http://www.tribesnext.com/krash/T2csri.vl2
11 years later, does anyone have a solution to this problem? The modified T2csri.vl2 above is a dead link and adding "$IPv4::InetAddress = $Host::BindAddress;" to an autoexec script hasn't made any difference.
The comment regarding setting this to $Host::BindAddress is specifically relating to server hosts with multiple possible external addresses to bind to; support for this is included by default in the current release (the host must have the variable set in their prefs/ServerPrefs.cs), and if it's not set on a server with multiple NICs, there's always potentially going to be a mismatch in what each party reports during the handshake process due to how the address detection works.
If you're receiving this when connecting to a LAN or locally hosted server, make sure you're connecting to either the LAN address or an exact match to the external address the client receives.
If you're receiving this on every server, use echo($IPv4::InetAddress); in your game console (~) to make sure that it is being set, and matches what you'd see if you look up your external address. If it isn't set, or is set incorrectly, the configuration of your network may have prevented it from being detected, and you may need to set it manually -- it's possible for this to happen if you're running certain anti-virus suites that manipulate your traffic, or in some cases with ISPs with unusual setups (more commonly cellular providers).
For anyone else who finds this in the future, my solution was to create base/scripts/autoexec/noMITM.cs on my server with the following content:
$IPv4::InetAddress = "a.b.c.d";
...where a.b.c.d is the public IP of your server.
Keep in mind the address returned by the automatic detection mechanism is what the master server will be querying by default (and therefore what it will attempt to show to players), so if it differs due to your network configuration, you should really be setting $Host::BindAddress to the static public IP rather than overriding the WAN address detection. Setting the BindAddress variable will not only ensure the game internally binds to only that interface (rather than all local interfaces), but will also notify the master server of exactly what address should be queried and listed.