IRC DCC between 2 clients on the same net.

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

 



Jihoon wrote:

> > the FORWARD chain of the gateway box allow connections to the external ip from
> > you LAN.
> 
> Why FORWARD? Shouldn't it be the INPUT chain?

I meant INPUT.  My bad. 

> > DCC is a passive protocol so sending a file means an inbound tcp connection, why
> > you need the irc modules in the first place.  What is happening is that
> > ip_nat_irc has little choice but to substitute the external ip of your gateway
> > for your LAN ip in the DCC SEND request, thus making the other client think it
> > should connect to your gateway instead of the LAN address of the client machine
> > to get the file -- what you want if the other client is outside your firewall.
> > ip_nat_irc then intercepts this and forwards the connection to the LAN ip making
> > to DCC SEND request.

After attempting this, the problem is that the client receiving the file 
attempts a connection to the external ip, which is intercepted by ip_nat_irc 
and forwarded to the other client on the LAN, but with a source ip of client 
initiating the tcp connection, which is correct (it would be the ip of the a 
remote host if outside the firewall).  The second client then responds, but 
since it is responding to an ip on its own subnet, the reply doesn't go 
through the gateway.  The first client is expecting a reply from the external 
ip (since it sent the SYN there), but gets a reply from another ip and rejects 
it.  The second client immediately closes the DCC connection, while the first 
continues to wait for a reply until it times out.

This behavior is normal, by design in ip_nat_irc, and difficult to fix.  One 
workaround, which does work, is modify the routing table of both clients to 
send all LAN traffic through the gateway.  A kludge at best.

-Bob



[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