<div>hello, </div>
<div>&nbsp;</div>
<div>I found the uniqueids in ipsec.conf don't work when more than one roadworriers behind NAT.&nbsp;The&nbsp;remote client is lsipsectool, OS is Windows XP professional。</div>
<div>&nbsp;</div>
<div>The code about this problem is in ISAKMP_SA_established():</div>
<div><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (d-&gt;kind &gt;= CK_PERMANENT<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; same_id(&amp;c-&gt;<a href="http://spd.that.id">spd.that.id</a>, &amp;d-&gt;<a href="http://spd.that.id">spd.that.id</a>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; !sameaddr(&amp;c-&gt;
spd.that.host_addr, &amp;d-&gt;spd.that.host_addr))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; release_connection(d, FALSE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;</div>
<div>Because the IP address after NAT is not changed, so openswan think it come from the same client, this caused the uniqueids invalid. </div>
<div>&nbsp;</div>
<div>I found there a&nbsp; patch in <a href="http://bugs.xelerance.com">bugs.xelerance.com</a> from Herbert Xu:</div>
<div>&nbsp;</div>
<div>@@ -3340,8 +3340,10 @@<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct connection *next = d-&gt;ac_next;&nbsp;/* might move underneath us */<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (d-&gt;kind &gt;= CK_PERMANENT<br>+ &nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; same_id(&amp;c-&gt;<a href="http://spd.this.id">
spd.this.id</a>, &amp;d-&gt;<a href="http://spd.this.id">spd.this.id</a>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; same_id(&amp;c-&gt;<a href="http://spd.that.id">spd.that.id</a>, &amp;d-&gt;<a href="http://spd.that.id">spd.that.id</a>)<br>-&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; !sameaddr(&amp;c-&gt;
spd.that.host_addr, &amp;d-&gt;spd.that.host_addr))<br>+&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (!sameaddr(&amp;c-&gt;spd.that.host_addr, &amp;d-&gt;spd.that.host_addr)<br>+&nbsp;&nbsp;|| (c-&gt;spd.that.host_port != d-&gt;spd.that.host_port)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
<br>&nbsp;&nbsp;&nbsp;release_connection(d, FALSE);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;</div>
<div>I test it, but can't work too. because both oe the host_port are 500. </div>
<div>&nbsp;</div>
<div>I don't have&nbsp;any good ways for this. Can you give me some suggestions.</div>
<div>&nbsp;</div>
<div>Thanks and regards.</div>
<div>&nbsp;</div>
<div>Liuhy</div>
<div>&nbsp;</div>