<div>Thanks Brian.</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>I am talking about the most navie way.</div>
<div>I think I want to know the true IP address of the client who is behind a transparent proxy.</div>
<div>I agree with you . From&nbsp;an end user view , it is pointless to determine&nbsp;the ip address of other clients. </div>
<div>However, I want to know where &nbsp;other clients come from(coz i am working in a computer project for final year). Therefore, I want to&nbsp;find out their IP address but not the proxy ip adderss.</div>
<div>&nbsp;</div>
<div>In fact,&nbsp;I have some&nbsp;ideas on that.&nbsp;But i am not sure if it is feasible or not .</div>
<div>As you metioned before,&nbsp;I can look&nbsp;for the X-Forwarded-For header . </div>
<div>However, X-Forwarded-For header can only be used when a client visit&nbsp;a web server.</div>
<div>Then&nbsp; the X-Forwarded-For header will be included in the http request. </div>
<div>Now on my hand, I only have a torrent. </div>
<div>Can I still able to find out the true ip address of the clients ?</div>
<div>&nbsp;</div>
<div>P.S. I am working on trackers not only running on port 80.</div>
<div><br>&nbsp;</div>
<div><span class="gmail_quote">On 3/18/06, <b class="gmail_sendername">Brian Dessent</b> &lt;<a href="mailto:brian@dessent.net">brian@dessent.net</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">FYP 2005 wrote:<br>&gt;<br>&gt; a number of BT client can be configured to use proxy.<br>&gt; However, it is possible to write a program to trace the real ip when
<br>&gt; user is&nbsp;&nbsp;behind a transparent proxy ?<br><br>I don't really understand the context of this question.&nbsp;&nbsp;Are you asking<br>how a tracker should deal with clients behind transparent proxies?&nbsp;&nbsp;If<br>that is the case then the solution is simple.&nbsp;&nbsp;A transparent HTTP proxy
<br>by definition will only intercept packets on port 80, so if the tracker<br>is being run on a port that is not 80 (which is a recommended best<br>practice) then there is nothing that needs to be done - the transparent<br>
proxy will be oblivious.&nbsp;&nbsp;Never run a tracker on port 80.<br><br>You can also try looking for the X-Forwarded-For header but this is<br>controversial because this is user-supplied data that cannot be trusted,<br>so blindly accepting it as the user's true IP address is not a good
<br>idea.&nbsp;&nbsp;If you combine it with the typical tracker NAT-check then it is<br>usually reliable, however there is still an argument that you could<br>potentially be taking part in a (mild) DDOS attack by using this field<br>
to launch the NAT check.&nbsp;&nbsp;I'm not sure how valid that logic is though.<br><br>If that was not what you were asking then I fail to understand the<br>question.&nbsp;&nbsp;From the client side the IP address of the client is not<br>necessary to know, so it's pointless to try to determine it.&nbsp;&nbsp;If you do
<br>the naive way of just querying the operating system you will fail if the<br>user has NAT, as you'll get the RFC1918 address.&nbsp;&nbsp;If you use an external<br>web service on port 80 then you will fail if the user is behind a
<br>transparent proxy, because you will retrieve the proxy's address.&nbsp;&nbsp;But<br>again, this is not necessary for the BT protocol because the tracker<br>will always get the client's true IP address (assuming it's not<br>listening on port 80) and it should never have to be specified.
<br><br>The worst case scenario is when the client is behind NAT *and* the ISP<br>has a transparent proxy that does not inject the X-Forwarded-For: or<br>Via: headers *and* the tracker is on port 80.&nbsp;&nbsp;In this case the tracker
<br>will get the incorrect IP address for the client, and the client will<br>have no reliable way of getting its true IP address.&nbsp;&nbsp;The only<br>reasonable ways for the client to get the correct IP address is to query<br>an external server on a port other than 80, or to have some other peer
<br>tell it its real address.&nbsp;&nbsp;The distributed peer database used by modern<br>clients has this feature -- a client will report to another client when<br>it is reporting a wrong address.&nbsp;&nbsp;You can see this in the console log of
<br>Azureus occasionally.<br><br>Brian<br>_______________________________________________<br>BitTorrent mailing list<br><a href="mailto:BitTorrent@lists.ibiblio.org">BitTorrent@lists.ibiblio.org</a><br><a href="http://lists.ibiblio.org/mailman/listinfo/bittorrent">
http://lists.ibiblio.org/mailman/listinfo/bittorrent</a><br></blockquote></div><br>