Re: Problems with firewall and emule

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wednesday 02 April 2003 11:05 am, Carlos Ble wrote:
> Hi all. Some users from my lan complains to me about emule.
> They have a LOWID and can't use their machines as emule servers.
> I had checked my firewall and i think all its ok. I went to
> http://www.thedonkeynetwork.com/connection_test
> from one computer of the lan to test my conection (using even port 80)
> and i got a time out message "time out, this means that even did not
> receibe a RESET signal; maybe due to a stealth firewal". But.... the
> http port is open because iam browsing !!!.  Needs emule a special
> conntrack ?. I dont know so much about emule, can somebody help me
> please? Thanks in advance.

EDonkey2000 (emule is a 3rd-party replacement for EDonkey, as is 
MLDonkey) communicates primarily on TCP 4662.  The problem you are 
facing is that when they connect to a server somewhere, that server will 
attempt to connect back to them at port 4662, initiating a NEW 
connection.  This means connecting to the public IP they appear to be 
at, and if you are masquerading several emule/edonkey users then they 
all have the same public IP.  Any attempt from outside to connect to one 
of these machines as a peer or a server will necessarily be a NEW 
connection, so conntrack cannot know which local machine is the 
destination.  If only one machine is running, you could DNAT incoming 
connections from the internet for tcp dport 4662 to that specific client 
and they would get a HighID.

(From a page I'm writing on IM and P2P netfilter issues)

TCP 4661 - connect to server 
TCP 4662 - connect to client 
TCP 4663 - connect remote GUI to client 
UDP 4665 - connect to secondary server 

The only critical port here for incoming connections is 4662, unless they 
are /really/ running an EDonkey server, in which case they need 4661 
incoming as well.  For 'normal' p2p file sharing with EDonkey (emule) 
the client needs 4661 and 4662 outbound, and 4662 inbound.

The upshot is that I believe you will only be able to have a single 
emule/edonkey machine behind a single public IP.  Try adding:
iptables -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to {ip}
for one of the emule users, and make sure you ACCEPT that traffic in 
FORWARD.  That user should now get a HighID, and favorable searches and 
transfers.  It is possible that this will allow the others to get 
HighID's as well, but only the one that is the target of the DNAT would 
be able to actually serve files, since external queries would never 
reach the others.  I'm not certain if the extra machines would even be 
able to receive files, I don't know the EDonkey/Overnet (Overnet is a 
newer completely 'serverless' variant, communicating on TCP port 4662 
and an additional random [or manually configured] UDP port) protocols 
well enough to know if that comes through as a NEW connection or simply 
a reply to one initiated by the internal client.  I suspect that only 
the DNAT targetted machine would work properly.

Finally, if you really want to accomodate these users, you can set up a 
specific machine as the EDonkey server, running the Linux EDonkey client 
software, DNAT outside connections to that machine, and allow each of 
them remote GUI access to that client.  They would each have knowledge 
of and control over each other's transfers, however, which might be 
undesirable to them...  ;^)

j




[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux