HUB: 123.123.123.123 (Telnet 8500) <--- external IP
The hub is hosted on a rented shell with it's own IP and vhost. Port 8500 has been opened for telnet.
LEAF: 222.222.222.222 (Telnet 30000) <----- external IP
The leaf is on a machine at home, this machine is DMZ and there are no port forwards conflicting.
Share and transfer modules loaded on each bot.
Channel #A set to +shared on each bot.
On LEAF:
HUB yes 0 bfhlo 23:02 (unlinked)
BOT FLAGS: gp
HOSTS: *!HUB@123.123.123.123
ADDRESS: 123.123.123.123
users: 8500, bots: 8500
Both bots have set nat-ip "XXX.XXX.XXX.XXX" in their config files. So for HUB 123.123.123.123 and for LEAF 222.222.222.222
The HUB has also been set to set my-hostname "VHOST" and set my-ip "123.123.123.123"
When linking the bots, they seem to link fine BUT the telnet / user file connection goes wrong.
Example
On LEAF;
.link HUB
Linking to HUB at VHOST:8500 ...
Received challenge from HUB... sending response ...
Linked to HUB.
*** Linked to HUB
Downloading user file from HUB
Failed connection; aborted userfile transfer.
At that moment I can see on HUB;
Telnet connection: MY.ISP.HOSTNAME/60624
Timeout/EOF ident connection
Challenging LEAF...
Linked to LEAF.
*** Linked to LEAF
Creating resync buffer for LEAF
Sending user file send request to LEAF
Timeout on userfile transfer.
*** Disconnected LEAF (timed-out userfile transfer)
You shouldn't set nat-ip if your eggdrop is not behind a nat. Further, only set my-ip or my-hostname; both affect which IP address on the local host your eggdrop will bind all it's sockets at.
Be adviced that the port used for the userfile transfer is randomly selected by the leaf, within the range set by reserved-portrange. All ports within this range will thus have to be forwarded to the leaf (in other words, for the userfile transfer, the hub connects to the leaf).
The userfile isn't sent via the regular bot link. Instead, the sending bot opens a new port, randomly chosen from the reserved portrange and listens on it while the transfer is active. So you need an additional port for the HUB, which will be used only during userfile transfers.
Choose a second port on your shell. It should be free (nothing should be listening on it) and accessible to your account.
Set reserved-portrange in the config file to make the bot use this and only this port number for file transfers: