MattBlood: when he hosts one publicly I can't see.
Is he using the GOG version of the game, or Steam? If the former, he can try changing the online visibility to 'friends only' (if it isn't already) or public. Friend invites would also be an option if you are both using the GOG version (and Galaxy).
If your friend starts a new game, can you join then? If so, can he load the latest save from your current playthrough?
Have you tried hosting?
Have you tried hosting/joining an Arena match?
Try going into Arena mode, create an arena, open the Connectivity menu and check the settings, then exit to the main menu and try joining in the lobby. Alternately, create a multiplayer game lobby, exit and try joining.
If you are using any mods, try testing in a new profile without any mods enabled.
Have you tried Direct Connection with a Server ID? The host can get one in the Connectivity Menu after starting a new game or loading a save.
LAN may be an option, but since you are not on the same local network, it would require VPN software, such as Hamachi or Tunngle. If you use Discord, that may also be an option.
Try resetting your network adapters:
- click Start (or Search in Win 10), type cmd into the search box, right click Command Prompt and select run as administrator.
- type the following command and hit Enter
netsh winsock reset
- when that is done, there should be a message 'Winsock reset completed successfully'
- type exit and hit Enter, then reboot your computer.
For more details, see:
https:// iihelp.iinet.net.au/Resetting_Network_Adapter_(Winsock_Reset)
(copy/paste the link; it causes problems with the forum's URL parsing)